gpt4 book ai didi

python - scikit 学习系数多项式特征

转载 作者:太空狗 更新时间:2023-10-30 01:48:09 27 4
gpt4 key购买 nike

我已经借助 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()

original data

最佳答案

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

Second Degree Polynomial fit

使用您的 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

关于python - scikit 学习系数多项式特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34373606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com