sklearn里怎么做多项式回归?搜了一下,感觉里面没有现成的多项式回归。
3个回答
可以参考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是回归系数,按照幂次先高后低排列。
np.polyfit有点慢,有好的解决方法吗
-
Robin峰
2018-04-04 10:08
数据量很大吗?特征数、样本数大概什么规模
-
dzzxjl
2018-04-04 20:50
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)
这个问题不是编程的问题,而是统计学中的本质问题,在统计理论中,对非线性回归模型,比如多项式、logsitic回归、对数回归等等,都可以转化为线性回归模型来求解的
所以,这个不是现有程序的问题,而是基本思想的问题
SofaSofa数据科学社区DS面试题库 DS面经
同意,广义线性模型,本质上都是线性模型
-
AlphaCat
2017-12-08 23:12