基于python写出代码完成任务“多元非线性回归”
时间: 2024-10-28 14:10:36 浏览: 23
在Python中,我们可以使用sklearn库中的`LinearRegression`或更复杂的`sklearn.linear_model.LinearRegression`等模块来进行多元线性回归,但如果需要进行非线性回归,可以使用`sklearn.preprocessing.PolynomialFeatures`结合`sklearn.linear_model.LinearRegression`进行多项式特征扩展,或者直接使用`sklearn.tree.DecisionTreeRegressor`、`sklearn.ensemble.GradientBoostingRegressor`等非线性模型。
以下是一个使用多项式特征扩展的多元非线性回归的例子:
```python
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
import numpy as np
# 假设我们有如下数据
X = np.random.rand(100, 5) # 5维输入数据
y = 2 * X[:, 0] ** 2 + 3 * X[:, 1] - X[:, 2] + 4 * X[:, 3] + np.random.randn(100)
# 特征工程:将数据转换为多项式特征
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_poly, y, test_size=0.2, random_state=42)
# 创建并训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 对测试集进行预测
y_pred = model.predict(X_test)
```
在这个例子中,我们首先生成了一些随机数据作为输入(5维),然后使用`PolynomialFeatures`将其转换为二次多项式特征。接着,我们将数据分为训练集和测试集,用训练集训练线性回归模型,最后在测试集上做预测。
如果你想尝试其他的非线性模型,可以直接替换`LinearRegression`为相应的模型,例如`DecisionTreeRegressor`或`GradientBoostingRegressor`等。
阅读全文