Python函数实现线性回归分析
线性回归是统计学中最常见的一种回归分析方法,它可以用来预测一个连续变量的值,比如房价、股票价格等等。在机器学习中,线性回归也是最常用的算法之一。本文将介绍如何使用Python语言来实现线性回归分析。
1.线性回归模型
线性回归模型假设一个由x1,x2,......,xn自变量组成的特征向量和一个因变量y之间存在线性关系。模型认为y和x1,x2,......,xn之间可以表示为一个线性方程:
y = b0 + b1x1 + b2x2 + ...... + bnxn + ε
其中b0,b1,b2,......,bn是回归系数,ε是误差项,用来表示模型无法完全解释因变量的原因。
我们需要找到最佳拟合线,即最小化误差平方和(SSE)的拟合线。SSE就是所有误差的平方和,即:
SSE = Σ(yi - ?i)2
其中yi是真实值,?i是预测值。
2.训练模型
我们需要一组数据来训练模型。这组数据包括自变量和因变量。
在下面的示例中,我们将使用一组随机数据作为输入数据。数据集包含1000个样本,其中自变量(即特征)为随机生成的两个数字,因变量为这些数字的和加上一个小的误差。我们将通过这组数据来训练模型。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
# 生成数据
np.random.seed(0)
X = np.random.rand(1000, 2)
y = X.sum(axis=1) + 0.1*np.random.randn(1000)
# 绘制数据图
plt.scatter(X[:,0], y)
plt.xlabel('X1')
plt.ylabel('y')
plt.show()
下面是绘制的图像:
绘制的图像显示了X1和y之间的关系。可以看出,X1和y之间存在线性关系。
接下来,我们将使用Python的scikit-learn库来实现线性回归模型。
# 导入模块
from sklearn.linear_model import LinearRegression
# 创建线性回归模型
model = LinearRegression()
# 拟合模型
model.fit(X, y)
这段代码中,我们使用LinearRegression类创建了一个线性回归模型。然后,我们使用fit()方法拟合模型。拟合模型后,我们就可以使用该模型来对新的数据进行预测。
3.测试模型
现在,我们使用创建的模型来对新数据进行预测。我们将生成一组新数据,然后使用模型来预测它们的输出。最后,我们将比较预测值和真实值之间的差距,来评估模型的准确性。
# 生成测试数据
X_test = np.random.rand(10, 2)
y_test = X_test.sum(axis=1) + 0.1*np.random.randn(10)
# 预测新数据
y_pred = model.predict(X_test)
# 比较预测值和真实值
plt.scatter(y_test, y_pred)
plt.xlabel('y_test')
plt.ylabel('y_pred')
plt.show()
下面是绘制的图像:
这张图显示了预测值和真实值之间的关系。可以看出,预测值和真实值之间有很强的线性关系。
另一种评估模型准确性的方法是计算模型的拟合优度(R2)。拟合优度是一个介于0和1之间的数字,表示模型可以解释的因变量方差占总方差的比例。R2越接近1,模型越准确。
# 计算R2
print('R2:',model.score(X_test, y_test))
这段代码显示了模型的拟合优度。在这个例子中,拟合优度很接近1,说明模型的准确度很高。
总结
本文介绍了如何使用Python语言实现线性回归分析。我们使用scikit-learn库创建了一个线性回归模型,训练了模型,并使用它来预测新的数据。最后,我们比较了预测值和真实值之间的差距,并计算了模型的拟合优度。
