温馨提示:这篇文章已超过287天没有更新,请注意相关的内容是否还可用!
线性回归是一种用于建立变量之间线性关系的统计模型。它通过拟合一条最佳直线,来描述自变量与因变量之间的关系。在Python中,我们可以使用scikit-learn库来实现线性回归。
我们需要导入所需的库和数据集。在示例代码中,我们导入了numpy库用于数值计算,matplotlib库用于可视化数据,以及sklearn库中的LinearRegression模块用于实现线性回归。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
接下来,我们需要准备数据集。线性回归需要至少两个变量,一个自变量和一个因变量。在示例代码中,我们生成了一个包含100个样本的随机数据集,其中自变量x是一个从0到10的等差数列,因变量y是自变量x加上一个随机噪声。
np.random.seed(0)
x = np.linspace(0, 10, 100)
y = 2 * x + np.random.randn(100)
接下来,我们可以使用LinearRegression模块来拟合线性回归模型。我们需要将自变量x的形状从一维数组转换为二维数组,因为LinearRegression模块要求输入的自变量是一个二维数组。然后,我们创建一个LinearRegression对象,并使用fit()方法来拟合数据。
x = x.reshape(-1, 1)
model = LinearRegression()
model.fit(x, y)
拟合完成后,我们可以使用模型的coef_属性和intercept_属性来获取线性回归模型的系数和截距。系数表示自变量对因变量的影响程度,截距表示当自变量为0时,因变量的取值。
coef = model.coef_
intercept = model.intercept_
print("Coefficient:", coef)
print("Intercept:", intercept)
我们可以使用模型来进行预测。在示例代码中,我们使用模型的predict()方法来预测新的自变量x_new对应的因变量y_new。
x_new = np.array([[5]]) # 新的自变量
y_new = model.predict(x_new)
print("Predicted y:", y_new)
线性回归模型的评估指标有很多,常见的包括均方误差(MSE)、决定系数(R-squared)等。我们可以使用sklearn库中的相关函数来计算这些评估指标。
from sklearn.metrics import mean_squared_error, r2_score
y_pred = model.predict(x)
mse = mean_squared_error(y, y_pred)
r2 = r2_score(y, y_pred)
print("Mean Squared Error:", mse)
print("R-squared:", r2)
线性回归模型的可视化也是非常重要的,可以帮助我们直观地理解模型的拟合效果。在示例代码中,我们使用matplotlib库来绘制原始数据和拟合直线的散点图。
plt.scatter(x, y, color='blue', label='Original data')
plt.plot(x, y_pred, color='red', label='Fitted line')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
通过以上步骤,我们就完成了线性回归模型的实现和评估。需要注意的是,线性回归模型假设自变量和因变量之间存在线性关系,对于非线性关系的数据,线性回归模型可能无法很好地拟合。在这种情况下,我们可以考虑使用其他非线性回归模型来进行建模。