You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sklearn实现不同阶数的多特征多项式回归

实现针对X₁三阶、X₂一阶的多项式回归(sklearn)

步骤1:转换数据格式

sklearn的模型要求输入为二维数组格式,先把你的列表转换成符合要求的结构:

import numpy as np

# 假设Y、X1、X2都是Python列表
Y = np.array(Y).reshape(-1, 1)  # 转为(100,1)的标签数组
X = np.column_stack([X1, X2])   # 合并为(100,2)的特征矩阵,第0列是X1,第1列是X2

步骤2:分特征做多项式变换

用ColumnTransformer配合PolynomialFeatures,可以对不同特征列应用不同的变换规则:

from sklearn.preprocessing import PolynomialFeatures
from sklearn.compose import ColumnTransformer

# 定义预处理规则:对X1做3阶多项式变换,X2直接保留
preprocessor = ColumnTransformer(
    transformers=[
        ('poly_x1', PolynomialFeatures(degree=3, include_bias=False), [0]),
        ('keep_x2', 'passthrough', [1])
    ])

# 生成最终特征矩阵:包含X1、X1²、X1³、X2
X_transformed = preprocessor.fit_transform(X)

这里PolynomialFeatures(degree=3, include_bias=False)会生成X1的一次、二次、三次项;'passthrough'表示直接保留X2的原始值,最终得到的X_transformed是(100,4)的矩阵。

步骤3:训练回归模型

用线性回归模型完成训练和评估:

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# 初始化并训练模型
model = LinearRegression()
model.fit(X_transformed, Y)

# 查看模型参数
print("模型系数(对应X1、X1²、X1³、X2):", model.coef_[0])
print("截距:", model.intercept_[0])

# 预测与评估(可选)
Y_pred = model.predict(X_transformed)
print("均方误差:", mean_squared_error(Y, Y_pred))

替代方案:手动构造特征

如果不想用ColumnTransformer,也可以手动生成X1的多项式特征再合并:

# 手动生成X1的一、二、三次项
X1_poly = np.column_stack([X1, np.square(X1), np.power(X1, 3)])
# 合并X1多项式特征与X2
X_transformed = np.column_stack([X1_poly, X2])

# 后续训练步骤和上面一致

内容的提问来源于stack exchange,提问作者balbinka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:58:23