当我使用sklearn中的LinearRegression时,我会这样做
m = 100X = 6*np.random.rand(m,1)-3y = 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和intercept创建的公式。
我的问题是如何为简单多项式回归创建公式?
我会这样做
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)。