簡體   English   中英

機器學習的擴展功能

[英]Scaling features for machine learning

我有一個關於如何正確縮放數據集的問題。

它包括

  1. 我當前存儲為秒的日期

  2. 值可以在1到5之間

  3. 約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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM