python - sklearn LinearRegression 中的 coef_ 到底是什么?以及如何从中解释公式
问题描述
当我在 sklearn 中使用 LinearRegression 时,我会这样做
m = 100
X = 6*np.random.rand(m,1)-3
y = 0.5*X**2 + X+2 + np.random.randn(m,1)
lin_reg = LinearRegression()
lin_reg.fit(X,y)
y_pred_1 = lin_reg.predict(X)
y_pred_1 = [_[0] for _ in y_pred_1]
当我绘制 (X,y) 和 (X, y_pred_1) 时,它似乎是正确的。
我想通过以下方式为最佳拟合线创建公式:
y= (lin_reg.coef_)x + lin_reg.intercept_
我已经手动将值插入到我通过使用 coef_、intercept_ 得到的公式中,并将其与来自 lin_reg.predict(value) 的预测值进行比较,它们是相同的,因此 lin_reg.predict 实际上使用了我在上面使用 coef 制作的公式,截距。
我的问题是如何创建简单多项式回归的公式?
我会做
poly_features = PolynomialFeatures(degree=2, include_bias=False)
X_poly_2 = poly_features.fit_transform(X)
poly_reg_2 = LinearRegression()
poly_reg_2.fit(X_poly_2, y)
然后poly_reg_2.coef_
给我array([[0.93189329, 0.43283304]])
和poly_reg_2.intercept_ = array([2.20637695])
。
由于它是“简单”多项式回归,它应该看起来像
y = x^2 + x + b 其中 x 是同一个变量。
哪个是poly_reg_2.coef_
x^2 而哪个不是?
解决方案
感谢https://www.youtube.com/watch?v=Hwj_9wMXDVo,我获得了洞察力,并了解了如何解释多项式回归的公式。
所以poly_reg_2.coef_ = array([[0.93189329, 0.43283304]])
你知道简单的线性回归看起来像
y = b + m1x
然后 2 次多项式回归看起来像
y = b + m1x + m2(x^2)
和 3 度:
y = b + m1x + m2(x^2) + m3(x^3)
依此类推......所以在我的情况下,两个系数只是 m1 和 m2 按顺序排列。
所以最后我的公式变成了:
y = b + 0.93189329x + 0.43283304(x^2)。
推荐阅读
- java - 自定义注释不适用于 @JsonProperty
- reactjs - 如何使用 useEffect 避免无限循环
- javascript - (React)子组件在父组件重新渲染时暂停其 useEffect
- mysql - Flask 应用设置问题:PyCharm 运行时配置
- angular - Angular + nginx 重定向没有发生
- python - kfold交叉验证后如何绘制每个折叠的数据和模型拟合?
- typescript - 有没有办法创建一个空的 sum 类型对象,其实际类型稍后将在 TypeScript 中指定?
- amazon-web-services - 从 AWS Backup 恢复 DynamoDB 表
- c# - 关于失败时重新启动关卡的快速问题
- android - Dagger Hilt 不能用另一个字符串作为 ViewModel 中的依赖项注入字符串