有3个列表的值,要用多项式回归去预测另一个列表的值,请写出具体代码,列表用随机数生成,并写出测试过程,即3个值预测一个值
时间: 2023-02-12 22:54:47 浏览: 93
使用Python的第三方库Scikit-learn可以实现多项式回归。首先需要导入所需的库,然后生成随机数据,拟合模型,并进行预测。
```python
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
#生成随机数据
np.random.seed(0)
x = 2 - 3 * np.random.normal(0, 1, 20)
y = x - 2 * (x ** 2) + 0.5 * (x ** 3) + np.random.normal(-3, 3, 20)
#使用多项式回归
transformer = PolynomialFeatures(degree=3, include_bias=False)
x_ = transformer.fit_transform(x.reshape(-1, 1))
model = LinearRegression().fit(x_, y)
#进行预测
x_test = np.linspace(-3, 2, 100).reshape(-1, 1)
x_test_ = transformer.transform(x_test)
y_pred = model.predict(x_test_)
#输出结果
print(y_pred)
```
在这个例子中,我们使用3阶多项式回归,并将随机生成的数据拟合到模型中,然后使用这个模型对新的x_test数据进行预测,得到y_pred的预测值。
如果要预测3个列表的值,可以把上面的代码改成如下:
```python
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
#生成随机数据
np.random.seed(0)
x1 = 2 - 3 * np.random.normal(0, 1, 20)
x2 = 2 - 3 * np.random.normal(0, 1, 20)
x3 = 2 - 3 * np.random.normal(0, 1, 20)
y = x1 - 2 * (x2 ** 2) + 0.5 * (x3 ** 3) + np.random.normal(-3, 3, 20)
X=np.column_stack((x1, x2, x3))
#使用多项式回归
transformer = PolynomialFeatures(degree
阅读全文