SKlearn PolynomialFeatures R^2 得分

数据挖掘 机器学习 Python scikit-学习 r平方
2022-03-10 11:27:45

我正在尝试使用多项式特征创建一个线性回归模型。但是当我评估它时,我得到了非常奇怪的分数。我知道 R^2 可以应用于这个模型,我想我已经尝试了一切。我真的会提出一个很好的建议。这是我的代码。

X = df_all[['Elevation_gain', 'Distance']] 
y = df_all['Avg_tempo_in_seconds']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 42)

for n in range(2,10,1):
 
    poly_feat = PolynomialFeatures(degree=n, include_bias = True)

    X_poly_train = poly_feat.fit_transform(X_train)
    X_poly_test = poly_feat.transform(X_test)
    

    lin_reg_2 = LinearRegression()
    lin_reg_2.fit(X_poly_train, y_train)
    test_pred_2 = lin_reg_2.predict(X_poly_test)

    #testset evaluation
    r2 = metrics.r2_score(y_true = y_test, y_pred = test_pred_2)
    mse = metrics.mean_squared_error(y_true = y_test, y_pred = test_pred_2)
    print(round(r2,2))
    #print(round(mse,2))

这是我得到的输出:

0.36
-3.99
-59.96
-1299.38
-627.37
-1773329.36
-19673802.94
-23125681.65

这是示例数据:

Elevation_gain 距离 Avg_tempo_in_seconds
70 6,13 290.1
135 9.27 301.0
10 4.94 287.5
270 15.74 310.2
120 8.11 298.5
2个回答

Rout2=(yiy^i)2(yiy¯in)2

如果您的样本外性能(以残差平方衡量)比始终预测样本内均值的朴素模型的性能更差(更大)y,那么你的样本外Rout2<0. 这不是多项式回归所独有的。

您看到的分数表明,具有多个多项式特征的线性回归不能很好地拟合数据,当使用 5/6 次或更高阶的特征多项式特征时,新数据的性能会急剧下降(可能是因为过度拟合和/或多重共线性) )。R-squared 可以是负数,这究竟意味着什么,请参阅stats.stackexchange.com 上的这个问题