我们什么时候对特征进行缩放,应该对编码特征进行标记吗?

数据挖掘 回归 特征缩放
2022-02-09 06:20:24

所以,我正在尝试建立一个线性回归模型来预测汽车价格,我有以下数据集: 数据集

由于分类特征的唯一值很多,我对分类特征进行标记编码并像这样转换数据集:Modified Data Set

此后,我像这样缩放连续特征(引擎、功率):

# Scaling continuous features (No scaling for categorical variables)

X_train[['Engine', 'Power']] = scale.fit_transform(X_train[['Engine', 'Power']])


est = sm.OLS(y_train,X_train).fit()
print(est.summary())

X_test[['Engine', 'Power']] = scale.transform(X_test[['Engine', 'Power']])
y_predicted = est.predict(X_test)
y_predicted.sort_values()

# R2 value for y_test and y_predictions

from sklearn.metrics import r2_score 

r2 = r2_score(y_test, y_predicted) 
print(r2)

如果我还缩放标签编码特征,则 R2 值为 84.8%,相比之下,R2 值为 33.5%。我想知道为什么会这样?此外,我在测试数据上使用此模型的预测值也会导致负价格,并且这些价格中的大多数都没有很好地预测,预测数据和真实数据的 R2 得分为 68%。

1个回答

除非有一个已知的排名并且在级别值之间的指定比率中,否则 您不应该对分类数据使用标签编码。
在这种情况下,模型将假设 10 是 5 的 2 倍。

正如我在您的数据中看到的那样,One-hot 会增加很多维度。

您必须尝试其他分类编码技术,尤其是。总和编码或 Helmert。

您还应该在 One-Hot 之后尝试降维技术,看看它是否会降低维度。


请阅读这些参考资料 -

Beyond-one-hot
Library
Kaggle 教程
Feature Engg