📜  非线性回归示例 – ML(1)

📅  最后修改于: 2023-12-03 15:28:52.993000             🧑  作者: Mango

非线性回归示例 - ML

在机器学习中,非线性回归是指用于建立因变量与自变量之间的非线性关系的回归模型。本示例将介绍如何使用Python实现非线性回归。

数据准备

首先,我们需要准备一组数据作为训练集。我们使用scikit-learn库中的make_regression函数来生成随机的回归数据:

from sklearn.datasets import make_regression

X, y = make_regression(n_samples=100, n_features=1, noise=10)

完整代码如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression

# 生成回归数据
X, y = make_regression(n_samples=100, n_features=1, noise=10)

# 绘制数据图
plt.scatter(X, y)
plt.show()

运行完上述代码后,我们可以看到生成的数据散点图。

选择模型

在训练数据之前,我们需要选择一个适当的模型来拟合这些数据。我们使用多项式回归模型来拟合这些非线性数据,即将自变量的一次幂改为高幂次。

from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

# 多项式回归
poly = PolynomialFeatures(degree=3)
X_poly = poly.fit_transform(X)

# 线性回归
lin_reg=LinearRegression()
lin_reg.fit(X_poly, y)

完整代码如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

# 生成回归数据
X, y = make_regression(n_samples=100, n_features=1, noise=10)

# 多项式回归
poly = PolynomialFeatures(degree=3)
X_poly = poly.fit_transform(X)

# 线性回归
lin_reg=LinearRegression()
lin_reg.fit(X_poly, y)

# 绘制数据图
plt.scatter(X, y)
plt.plot(X, lin_reg.predict(X_poly), color='r')
plt.show()

运行完上述代码后,我们可以看到拟合的曲线非常适合训练数据。

预测数据

现在,我们已经训练出了一个拟合非线性数据的模型,接下来,我们可以使用该模型来预测新的数据:

# 预测
x_new = np.array([[2.0]])
x_new_poly = poly.transform(x_new)
y_new = lin_reg.predict(x_new_poly)
print(y_new)

完整代码如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

# 生成回归数据
X, y = make_regression(n_samples=100, n_features=1, noise=10)

# 多项式回归
poly = PolynomialFeatures(degree=3)
X_poly = poly.fit_transform(X)

# 线性回归
lin_reg=LinearRegression()
lin_reg.fit(X_poly, y)

# 绘制数据图
plt.scatter(X, y)
plt.plot(X, lin_reg.predict(X_poly), color='r')
plt.show()

# 预测
x_new = np.array([[2.0]])
x_new_poly = poly.transform(x_new)
y_new = lin_reg.predict(x_new_poly)
print(y_new)

运行完上述代码后,我们可以看到输出了基于模型进行的预测结果。

总结

本文介绍了如何使用Python实现非线性回归模型。我们通过生成随机数据、选择多项式回归模型和预测新数据三个步骤完成了非线性回归模型的建模。