机器学习特征缩放

我有一个关于如何正确缩放我的数据集的问题。

我的数据集包括

  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保持为0而其他0被转换是完全正常的。请看以下代码

int_mat = np.array([[0,0],[0,1],[0,2]])

输出

array([[0, 0],   [0, 1],   [0, 2]])

现在我们进行缩放

from sklearn.preprocessing import StandardScalerssc = 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]])

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注