- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在对此数据集执行线性回归:archive.ics.uci.edu/ml/datasets/online+news+popularity
它包含各种类型的特征 - 比率、二进制、数字等。
我尝试过使用 scikit-learn Normalizer、StandardScaler 和 PowerTransformer,但这些结果都比不使用它们时的结果更糟糕。
我这样使用它们:
from sklearn.preprocessing import StandardScaler
X = df.drop(columns=['url', 'shares'])
Y = df['shares']
transformer = StandardScaler().fit(X)
X_scaled = transformer.transform(X)
X_scaled = pd.DataFrame(X_scaled, columns=X.columns)
perform_linear_and_ridge_regression(X=X_scaled, Y=Y)
最后一行的函数 perform_linear_and_ridge_regression()
肯定是正确的,并且正在使用 GridSearchCV 来确定最佳超参数。
只是为了确保我也包含该功能:
def perform_linear_and_ridge_regression(X, Y):
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.25, random_state=10)
lin_reg_parameters = { 'fit_intercept': [True, False] }
lin_reg = GridSearchCV(LinearRegression(), lin_reg_parameters, cv=5)
lin_reg.fit(X=X_train, y=Y_train)
Y_pred = lin_reg.predict(X_test)
print('Linear regression MAE =', median_absolute_error(Y_test, Y_pred))
结果令人惊讶,因为它们都提供了更糟糕的结果:
线性调节。原始数据:MAE = 1620.510555135375
线性调节。使用标准化器后:MAE = 1979.8525218964242
线性调节。使用StandardScaler后:MAE = 2915.024521207241
线性调节。使用PowerScaler后:MAE = 1663.7148884463259
这只是一种特殊情况,标准化没有帮助,还是我做错了什么?
编辑:即使我忽略了二进制特征,大多数转换器也会给出更糟糕的结果。
最佳答案
您的数据集具有许多分类和序数特征。您应该首先单独处理。另外,似乎您也在分类变量上应用标准化,这是完全错误的。
这里是nice-link ,它解释了如何处理回归问题的分类特征。
关于machine-learning - 归一化或标准化后,线性回归给出更差的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54161038/
我有一个数据库,其中所有表都包含 Site 列 (char(4)) 和 PrimaryId 列 (int )。 目前所有表上的聚集索引都是这两列的组合。许多客户只有一个网站,因此在这些情况下,我认为将
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我一直在阅读有关使用 token 进行身份验证的文章。但是,我无法理解 token (JWT) 与 cookie 有何不同。两者都将存储用户信息(作为 token 中的声明),定义了持久性,并将与每个
我首先使用 keras 1.2.0 在 CPU 上运行相同的代码(具有相同的数据),然后在两种代码中运行 keras 2.0.3 . 当我使用 keras 2.0.3 获得 42 的 MSE(均方误差
我是一名优秀的程序员,十分优秀!