import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn import linear_model, metrics plt.rcParams['font.sans-serif'] = 'SimHei' sheet = pd.read_excel(".//人均消费金额与人均国民收入.xls", 'sheet1') print(sheet.values) x_data = sheet.values[:, 1] y_data = sheet.values[:, 2] X_data = x_data[:, np.newaxis] Y_data = y_data[:, np.newaxis] LR = linear_model.LinearRegression() LR.fit(X_data, Y_data) # 进行训练 w = LR.coef_ # 获得回归系数权重向量 b = LR.intercept_ # 获得截距 y_fit = np.dot(X_data, w) + b # 数据拟合:等同LR.predict(x_data) MSE = metrics.mean_squared_error(Y_data, y_fit) # ------(3)评估指标:均方误差 ------------------- R2 = metrics.r2_score(Y_data, y_fit) # 评估指标:R2(决定系数分数) plt.figure(figsize=(8, 5)) plt.title('人均国民收入与人均消费金额 (R2=' + str(round(R2, 4)) + ")") plt.xlabel('人均国民收入 x (元)', fontsize=15) plt.ylabel('人均消费金额 y (元)', fontsize=15) plt.scatter(x_data, y_data, color='r', marker='o') plt.scatter(x_data, y_fit, color='b', marker='s') plt.plot(x_data, y_fit, color='g', linestyle='-') d = '回归方程 = ' + str(round(w[0, 0], 4)) + ' * x + ' + str(round(b[0], 2)) plt.legend([d, '红色:散点图', '蓝色:拟合点']) plt.show()
时间: 2024-04-25 09:25:48 浏览: 109
import numpy as np import matplotlib.pyplot as plt import math
这段代码实现了利用线性回归模型拟合“人均国民收入”与“人均消费金额”之间的关系,并进行可视化展示。具体来说,代码的执行过程如下:
1. 读取名为“人均消费金额与人均国民收入.xls”、工作表名为“sheet1”的 Excel 文件,并将其转换成 Pandas DataFrame 格式的数据。
2. 从 DataFrame 中提取出“人均国民收入”和“人均消费金额”两列数据,并将其分别存储在 x_data 和 y_data 数组中。
3. 将 x_data 和 y_data 数组转换为二维数组 X_data 和 Y_data,其中 X_data 和 Y_data 分别对应于自变量和因变量。
4. 创建 LinearRegression 类的实例 LR,并使用 fit() 方法对 X_data 和 Y_data 进行线性回归模型的训练。
5. 获取回归系数权重向量 w 和截距 b。
6. 通过 np.dot() 函数将 X_data 和 w 相乘,并加上 b,得到拟合后的 y 值 y_fit。
7. 使用 mean_squared_error() 函数计算均方误差 MSE,并使用 r2_score() 函数计算决定系数分数 R2。
8. 使用 matplotlib 库创建画布,并添加标题、横坐标、纵坐标等信息。同时,使用 scatter() 函数绘制散点图,并使用 plot() 函数绘制拟合曲线。
9. 使用 legend() 函数添加图例,其中包括回归方程、散点图和拟合点。
10. 使用 show() 函数展示可视化结果。
阅读全文