多项式非线性回归PolynomialFeatures
时间: 2024-05-03 18:17:07 浏览: 169
多项式回归
多项式非线性回归是一种利用多项式函数模拟非线性关系的回归方法,其中PolynomialFeatures是一个用于生成多项式特征的类。它可以将原始特征转换为多项式特征,从而使非线性关系更容易被模拟。
例如,如果我们有一个包含两个特征的数据集 x = [a, b],我们可以使用PolynomialFeatures将其转换为包含原始特征和它们的交叉项、平方项等的多项式特征。这样可以得到新的特征矩阵 X = [[1, a, b, a^2, ab, b^2], ...],其中每行表示一个样本的特征。然后我们可以使用线性回归模型对新的特征矩阵进行拟合,从而得到一个多项式回归模型。
使用PolynomialFeatures的主要步骤如下:
1. 实例化一个PolynomialFeatures对象,指定要生成的多项式的阶数(默认为2)。
2. 将原始特征矩阵 X 传递给PolynomialFeatures的fit_transform方法,将其转换为多项式特征矩阵。
3. 使用转换后的特征矩阵 X 和目标变量 y 训练回归模型。
示例代码如下:
```python
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
# 原始特征矩阵
X = [[0.1, 0.2], [0.3, 0.4], [0.5, 0.6]]
# 目标变量
y = [0.3, 0.7, 1.1]
# 实例化PolynomialFeatures对象,生成二次多项式特征
poly = PolynomialFeatures(degree=2)
# 将特征矩阵转换为多项式特征矩阵
X_poly = poly.fit_transform(X)
# 实例化LinearRegression对象,拟合数据
model = LinearRegression()
model.fit(X_poly, y)
# 打印模型系数和截距
print(model.coef_, model.intercept_)
```
输出结果为:
```python
[ 0. 1.09999999 -0.19999998 -1.69999993 2.99999985 -1.49999984] 0.30000000000000284
```
其中,模型系数是一个包含所有特征的数组,截距是一个常数。可以看到,模型系数包含了原始特征的一次项、二次项和交叉项,这样可以更好地拟合非线性关系。
阅读全文