【问题标题】:Polynomial Regression using sklearn使用 sklearn 进行多项式回归
【发布时间】:2019-01-13 08:15:49
【问题描述】:

这是我的代码:

import numpy as np
from sklearn.preprocessing import PolynomialFeatures

X=np.array([[1, 2, 4]]).T
print(X)
y=np.array([1, 4, 16])
print(y)
model = PolynomialFeatures(degree=2)
model.fit(X,y)
print('Coefficients: \n', model.coef_)
print('Others: \n', model.intercept_)

#X_predict=np.array([[3]])
#model.predict(X_predict)

我有这些错误:

https://imgur.com/a/GkYFQlc

【问题讨论】:

标签: python scikit-learn non-linear-regression


【解决方案1】:

PolynomialFeatures 没有名为 coef_ 的变量。 PolynomialFeatures 不进行多项式拟合,它只是将您的初始变量转换为更高阶。实际进行回归的完整代码是:

import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline

X=np.array([[1, 2, 4]]).T
print(X)
y=np.array([1, 4, 16])
print(y)
model = make_pipeline(PolynomialFeatures(degree=2), LinearRegression(fit_intercept = False))
model.fit(X,y)
X_predict = np.array([[3]])
print(model.named_steps.linearregression.coef_)
print(model.predict(X_predict))

【讨论】:

  • 我有imgur.com/a/9FosRVG 系数:[ 3.55300751e-15 -5.10702591e-15 1.00000000e+00] > 但模型是 y=a * x * x+b * x+c (a =1, b=0,c=0) ..
  • 系数是 [c,b,a],所以它从 1e-15 ~ 0 开始运行良好。看看打印时 X_poly 的样子
  • 好的,请问我可以使用 X_predict=np.array([[3]]) model.predict(X_predict) 进行预测吗?这给了我 y=a*3*3+b*3+c=9
  • 我更新了使用 scikit-learn 管道的答案。当你构建管道时,你说模型应该首先使用 PolynomialFeatures 转换数据,然后它应该使用 LinearRegression 进行回归。
  • 我可以同时做预测和显示系数吗?使用此代码我无法显示系数
猜你喜欢
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 2018-08-11
  • 2019-06-07
  • 2015-10-03
  • 2019-07-20
  • 2015-12-19
  • 2020-08-06
相关资源
最近更新 更多