机器学习特征缩放

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

我的数据集包括

  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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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