使用sklearn进行多项式回归
1.数据
x = np.random.uniform(-5, 5 ,size=100) X = x.reshape(-1, 1) y = x**2 + x +2 + np.random.normal(0, 1, size = 100)
2. 拟合
ploy = PolynomialFeatures(degree=2) X2 = ploy.fit_transform(X) reg = LinearRegression() reg.fit(X2,y) y_predict = reg.predict(X2) print(reg.coef_) #系数 print(reg.intercept_) #截距
3. 图形绘制
plt.scatter(x, y) plt.plot(np.sort(x), y_predict[np.argsort(x)], color='r') plt.show()
拟合部分还可以通过Pipeline将 多项式生成,归一化处理,线性回归进行整合
from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler # 多项式的特征,数据归一化,线性回归 poly_reg = Pipeline([ ("poly", PolynomialFeatures(degree=2)), ("std_scaler", StandardScaler()), ("lin_reg", LinearRegression()) ]) poly_reg.fit(X, y) y_predict = poly_reg.predict(X)
系数: [0. 1.02750451 1.00863466]
截距:1.8723913311785978