[英]Scaling features for machine learning
我有一個關於如何正確縮放數據集的問題。
它包括
我當前存儲為秒的日期
值可以在1到5之間
約240個布爾值1或0
所以一行看起來像
[1514761200, 3, 1, 1, 0, 0, 1, 0, 1, ......]
我嘗試應用scikit StandardScaler
但它導致了一些非常奇怪的值,一些0保持0,另一些則縮放為-1.736。 如果我然后在數據上應用inverse_transform,則某些布爾值將保持怪異數字。
我不確定問題是日期欄中的數字很大,我不確定。
但是,如果有什么更好的方法來處理日期,或者一般而言,我該如何處理1/2列,這些列不適合其余數據,但是必選的。
謝謝。
在大多數情況下,縮放是分別應用於每個功能的,這就是StandardScaler所做的。 因此,將某些0保持為零而另一些進行轉換是完全自然的。 看下面的代碼
int_mat = np.array([[0,0],[0,1],[0,2]])
產量
array([[0, 0],
[0, 1],
[0, 2]])
現在我們進行縮放
from sklearn.preprocessing import StandardScaler
ssc = StandardScaler()
int_scaled = ssc.fit_transform(int_mat)
inverse_scaling = ssc.inverse_transform(int_scaled)
int_scaled
array([[ 0. , -1.22474487],
[ 0. , 0. ],
[ 0. , 1.22474487]])
如您所見,第一個特征(第一列)保持不變,因為它的均值已經為零。
逆變換產生原始矩陣
反比例縮放
array([[0.00000000e+00, 1.11022302e-16],
[0.00000000e+00, 1.00000000e+00],
[0.00000000e+00, 2.00000000e+00]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.