sklearn里怎么做多项式回归?

  统计/机器学习 回归分析 Python    浏览次数:6540        分享
2

sklearn里怎么做多项式回归?搜了一下,感觉里面没有现成的多项式回归。


 

曾经是科比   2017-11-30 11:55



   3个回答 
4

可以参考numpy.polyfit

下面就是个用polyfit做三次多项式回归的例子

>>> x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> coef = np.polyfit(x, y, 3)
>>> coef
array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254])

coef是回归系数,按照幂次先高后低排列。


SofaSofa数据科学社区DS面试题库 DS面经

染盘   2017-12-10 14:08

np.polyfit有点慢,有好的解决方法吗 - Robin峰   2018-04-04 10:08
数据量很大吗?特征数、样本数大概什么规模 - dzzxjl   2018-04-04 20:50
3

sklearn里没有多项式回归,只能靠自己造轮子了。你需要人工生成那些高次项,比如说你要做一个像

$$Y= a_0 + a_1x + a_2x^2 + a_3x^3$$

的三次多项式回归。那么你就需要人工制造出$x^2$和$x^3$这两个特征,然后再做sklearn里的回归。

可以参考如下

from sklearn.linear_model import LinearRegression
X_new = pd.DataFrame()
X_new['x'] = x
X_new['x2'] = X_new['x'] ** 2
X_new['x2'] = X_new['x'] ** 3
reg = LinearRegression()
reg.fit(X_new, y)


SofaSofa数据科学社区DS面试题库 DS面经

AlphaCat   2017-12-08 13:49

1

这个问题不是编程的问题,而是统计学中的本质问题,在统计理论中,对非线性回归模型,比如多项式、logsitic回归、对数回归等等,都可以转化为线性回归模型来求解的

所以,这个不是现有程序的问题,而是基本思想的问题

SofaSofa数据科学社区DS面试题库 DS面经

博观   2017-12-08 15:51

同意,广义线性模型,本质上都是线性模型 - AlphaCat   2017-12-08 23:12


  相关讨论

sklearn回归的入门级问题

当训练集只有一个特征的时候,sklearn的LinearRegression报错

同一批样本数据,利用sklearn中二项逻辑回归预测同一批预测数据的概率,每次预测结果有很大不同

提取sklearn逻辑回归的模型系数

sklearn r2_score返回负数

求sklearn.pipeline.Pipeline使用的例子

sklearn里LogisticRegressionCV中的参量Cs什么意思

sklearn训练classifier的时候报错Unknown label type

查看sklearn版本

python sklearn模型中random_state参数的意义

  随便看看

KNN中K值的选择

线性回归或者逻辑回归中常提到的AIC和BIC是什么意思?

求多个torch tensor的平均值

sklearn模型当中的verbose是什么意思?

特征归一化对K Means有影响吗?