当前位置:  开发笔记 > 编程语言 > 正文

scikit学习系数多项式特征

如何解决《scikit学习系数多项式特征》经验,为你挑选了1个好方法。

我在PolynomialFeatures的帮助下拟合了一个模型,但我不知道如何获取模型的系数.代码如下:

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
import matplotlib.pyplot as plt

X = np.matrix([0,1,2,3,4,5,6,7,8,9,10]).reshape((11,1))
Y = np.matrix([0,2.2,3.5,14.3,20.4,32.1,40.3,  
           59.1,86.2,90.3,99.9]).reshape((11,1))
a = PolynomialFeatures(15)
modelo = make_pipeline(a, LinearRegression())
modelo.fit(X, Y)
plt.plot(X,Y,'.')
plt.plot(X, modelo.predict(X),'-')
plt.show()

原始数据



1> David Maust..:

让我们首先使用二次多项式,而不是在您的示例中使用15次多项式,以简化您的问题(以及避免过度拟合).

二次多项式拟合

使用X让我们看看如何转换值.

a = PolynomialFeatures(2)
a.fit_transform(X)

array([[   1.,    0.,    0.],
       [   1.,    1.,    1.],
       [   1.,    2.,    4.],
       [   1.,    3.,    9.],
       [   1.,    4.,   16.],
       [   1.,    5.,   25.],
       [   1.,    6.,   36.],
       [   1.,    7.,   49.],
       [   1.,    8.,   64.],
       [   1.,    9.,   81.],
       [   1.,   10.,  100.]])

我们可以看到第一个特征是X^0,第二个特征是X^1,第三个特征是X^2.

现在,使用现有代码,您将构建一个包含两个步骤的管道modelo.

我们可以使用第二步的估算器modelo.steps[1][1].从那里我们可以coef_用来获得系数,并intercept_获得截距.

modelo.steps[1][1].coef_
# [[ 0.          3.3486014   0.76468531]]

modelo.steps[1][1].intercept_
# [-2.75244755]

从这里我们可以看到多项式是 y_estimated = -2.75 + 0 * X^0 + 3.35 * X^1 + 0.76 * X^2


在我看来,model.coef_ [0]始终为0.0,实际截距为clf.intercept_,您是否发现这种情况适合您?您是否知道任何文件可以确认这一点?
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有