使用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

 

posted @ 2022-10-17 10:16  华小电  阅读(130)  评论(0编辑  收藏  举报