上一篇文章中,我们使用 Matplotlib 的子图绘制了图表。
本次文章中,将使用 numpy 的多项式进行线性回归分析。
1. 什么是线性回归分析?
根据维基百科的描述,线性回归分析如下所示。
统计学中,线性回归是在因变量 y 与一个或多个自变量 X 之间建模的线性相关关系的回归分析技术。
-维基百科-
简单来说,可以说是图表中显示的值的平均斜率。
将线性回归显示在图表上,可以更明确地显示两个值的相关关系。

上面的图表是在 kaggle 下载的资料可视化结果。
资料包括父母的学历、种族、学生的成就度,其中绘制了数学-阅读成绩的关系。
文件可以从下面的附件下载,或者通过链接下载。下面的文件已经中文化,可以选择你方便的方式。
2. 绘制图表
首先,像上面的图表一样,用散点图绘制学生的数学和阅读成绩。
从之前课程学习的代码开始,只需更改需要加载的文件路径。
import pandas as pd
# 模块调用及中文字体设置
import matplotlib.pyplot as plt
import matplotlib
# MacOS 字体设置
# matplotlib.rcParams["font.family"] = "AppleGothic"
# Windows 字体设置
matplotlib.rcParams["font.family"] = "Malgun Gothic"
# 字体大小设置
matplotlib.rcParams["font.size"] = 13
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False
score = pd.read_excel("./StudentsPerformance.xlsx")
score.head(3)
用此方法将数学成绩和阅读成绩作为 plt.scatter 的参数进行绘制。
plt.scatter(score["수학점수"], score["읽기점수"])
图表不够好看,因此做了一些装饰。
添加了图表的颜色、透明度及各轴的标签。
plt.scatter(score["수학점수"], score["읽기점수"], alpha=0.4, color="green")
plt.xlabel("数学成绩")
plt.ylabel("阅读成绩")
基本图表完成,现在使用 numpy 进行线性回归分析。
3. Polynomial
调用numpy 的多项式,输入需分析的x 值、y 值以及所需的多项式次数作为参数。
我们将数学成绩和阅读成绩用一阶函数进行线性回归分析。
from numpy.polynomial import Polynomial
f = Polynomial.fit(score["수학점수"], score["읽기점수"], 1)这样输入后,多项式将返回预测的线性函数。
因此,f 将是接受 x 值为参数的函数。
输入如下,查看预测值。
from numpy.polynomial import Polynomial
f = Polynomial.fit(score["수학점수"], score["읽기점수"], 1)
f(40)
对于数学成绩为 40 分的学生,预测的阅读成绩为 40。
现在绘制图表。
4. 线性回归图表
资料中,学生的数学成绩和阅读成绩并不是从 0 到 100 排列的值。
所以将数学成绩作为参数赋予 f 时,次数越高图表就越乱。


首先,生成从 0 到 100 的数字,并将其用于线性函数的 x 值绘制图表。
numpy 的 linspace 接受起点、终点和中间数目的参数生成值。
import numpy as np
x = np.linspace(0,100,200)
plt.plot(x,f(x))查看 x 的值可以看到左边的生成过程。
因此绘制的图表如下所示。


5. 完成图表
只需将两个图表叠加即可。
plt.scatter(score["수학점수"], score["읽기점수"], alpha=0.4, color="green")
plt.xlabel("数学成绩")
plt.ylabel("阅读成绩")
plt.plot(x, f(x),"r--")
6. 总结
本次文章中通过线性回归分析绘制了两个值间关系的图表。
下一次文章将对如何利用数据可视化完善高中生活记录进行思考。
댓글을 불러오는 중...