我有一个关于如何正确扩展数据集的问题。
它由
组成我目前存储为秒的日期
一个介于1和5之间的值
大约240个博尔值1或0
所以一行看起来像
[1514761200, 3, 1, 1, 0, 0, 1, 0, 1, ......]
我尝试应用scikit StandardScaler
,但它会导致一些非常奇怪的值,有些0保持0,其他被缩放到-1.736。如果我然后对数据应用inverse_transform,那么一些bool值会保持奇怪的数字。
我认为问题是日期栏中的数字很大,我不确定。
但是,如果,处理日期的更好方法是什么,或者一般如何处理1/2列,这些列不适合其余数据但是必须的。
感谢。
答案 0 :(得分:3)
在大多数情况下,缩放分别应用于每个功能,这就是StandardScaler正在做的事情。因此,一些0保持零而其他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]])
如你所见,第一个特征(第一列)保持不变,因为它已经为零。
逆变换导致原始矩阵
inverse_scaling
array([[0.00000000e+00, 1.11022302e-16],
[0.00000000e+00, 1.00000000e+00],
[0.00000000e+00, 2.00000000e+00]])