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 12:25:48 浏览: 105
这段代码实现了利用线性回归模型拟合“人均国民收入”与“人均消费金额”之间的关系,并进行可视化展示。具体来说,代码的执行过程如下:
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() 函数展示可视化结果。
相关问题
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn import tree
以下是使用import语句导入pandas、numpy、matplotlib.pyplot、seaborn和sklearn.tree的示例代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import tree
```
- pandas是一个数据处理库,用于读取、处理和分析数据。
- numpy是一个数学库,用于处理数组和矩阵等数学运算。
- matplotlib.pyplot是一个绘图库,用于绘制各种类型的图表。
- seaborn是一个基于matplotlib的数据可视化库,提供了更高级别的界面和更多的图表类型。
- sklearn.tree是scikit-learn库中的一个模块,用于实现决策树算法。
import numpy as np import pandas as pd import matplotlib.pyplot as plt
这三个库都是Python中常用的数据分析和可视化库。其中,NumPy是Python中用于科学计算的基础库,提供了高性能的多维数组和矩阵计算功能。Pandas是基于NumPy的一个数据处理库,提供了高效的数据结构和数据分析工具。Matplotlib是Python中最流行的数据可视化库之一,提供了各种绘图工具和图表类型,可以用于生成各种静态和动态的图表。
以下是一个简单的例子,展示如何使用这三个库绘制一个柱状图:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 创建数据
bar_positions = [1, 2, 3, 4]
bar_heights = [1, 2, 3, 4]
# 绘制柱状图
fig, ax = plt.subplots()
ax.bar(np.arange(len(bar_positions)), bar_heights)
# 设置x轴标签
ax.set_xticks(np.arange(len(bar_positions)))
ax.set_xticklabels(bar_positions)
# 设置y轴标签
ax.set_ylabel('Bar Heights')
# 设置图表标题
ax.set_title('A Simple Bar Chart')
# 显示图表
plt.show()
```
阅读全文