写一个循环,让特征多项式的degree参数,从1到5变化,画图,找到最合适的
时间: 2024-10-19 17:08:12 浏览: 10
jisuanqi.rar_1、 一元 多项式 计算_一元稀疏多项式计算器
在中国Python的Scikit-Learn库中,你可以使用`GridSearchCV`结合`PolynomialFeatures`和`LinearRegression`来进行特征多项式拟合,并通过交叉验证寻找最佳的degree参数。下面是一个简单的示例:
```python
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import GridSearchCV
import matplotlib.pyplot as plt
# 创建数据集(这里假设我们有已有的数据X和y)
# X = ... # 输入数据
# y = ... # 目标变量
# 定义度数范围
degrees = range(1, 6)
# 准备模型和参数网格搜索
poly_reg = PolynomialFeatures()
lin_reg = LinearRegression()
param_grid = [{'degree': degrees}]
# 使用GridSearchCV
grid_search = GridSearchCV(estimator=Pipeline([("polynomial_features", poly_reg),
("linear_regression", lin_reg)]),
param_grid=param_grid,
scoring='r2', # 或者其他评估指标
cv=5) # 交叉验证次数
# 训练模型
grid_search.fit(X, y)
# 获取最佳度数
best_degree = grid_search.best_params_['degree']
# 绘制R^2得分与degree的关系
scores = [score for score in grid_search.cv_results_['mean_test_score']]
plt.plot(degrees, scores)
plt.xlabel('Degree')
plt.ylabel('Mean R-squared Score')
plt.title(f'Best Degree: {best_degree}')
plt.grid(True)
plt.show()
阅读全文