我正在使用以下代码在同一数据集上构建一些模型:
X_train, X_test, y_train, y_test = train_test_split(X_in, y, test_size=0.25, random_state=42)
# Lasso regression
lasso = linear_model.Lasso()
lasso.fit(X_train, y_train)
pred_lasso = lasso.predict(X_test)
# Ridge regression
ridge = linear_model.Ridge()
ridge.fit(X_train, y_train)
pred_ridge = ridge.predict(X_test)
# ElasticNet
elastic = linear_model.ElasticNet()
elastic.fit(X_train, y_train)
pred_elastic = elastic.predict(X_test)
# R^2 Evaluation
print('R^2 for Lasso', r2_score(y_test, pred_lasso))
print('R^2 for Ridge', r2_score(y_test, pred_ridge))
print('R^2 for ElasticNet', r2_score(y_test, pred_elastic))
print('\n')
r2_score3 款车型分别为:
R^2 for Lasso 0.28
R^2 for Ridge 0.14
R^2 for ElasticNet 0.02
这让我很困惑...... ElasticNet 结果不应该介于 Lasso 和 Ridge 之间吗?为什么 ElasticNet 结果实际上比其他两个差?谢谢!