파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기

힘센캥거루
2023년 11월 21일(수정됨)
4
python

上一篇文章中,我们使用 Matplotlib 的子图绘制了图表。

本次文章中,将使用 numpy 的多项式进行线性回归分析

1. 什么是线性回归分析?

根据维基百科的描述,线性回归分析如下所示。

统计学中,线性回归是在因变量 y 与一个或多个自变量 X 之间建模的线性相关关系的回归分析技术。
-维基百科-

简单来说,可以说是图表中显示的值的平均斜率

将线性回归显示在图表上,可以更明确地显示两个值的相关关系

파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기-1

上面的图表是在 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)
파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기-2

用此方法将数学成绩和阅读成绩作为 plt.scatter 的参数进行绘制。

plt.scatter(score["수학점수"], score["읽기점수"])
파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기-3

图表不够好看,因此做了一些装饰。

添加了图表的颜色、透明度各轴的标签

plt.scatter(score["수학점수"], score["읽기점수"], alpha=0.4, color="green")
plt.xlabel("数学成绩")
plt.ylabel("阅读成绩")
파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기-4

基本图表完成,现在使用 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)
파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기-5

对于数学成绩为 40 分的学生,预测的阅读成绩为 40。

现在绘制图表。

4. 线性回归图表

资料中,学生的数学成绩和阅读成绩并不是从 0 到 100 排列的值

所以将数学成绩作为参数赋予 f 时,次数越高图表就越乱

파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기-6파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기-7

首先,生成从 0 到 100 的数字,并将其用于线性函数的 x 值绘制图表。

numpy 的 linspace 接受起点、终点和中间数目的参数生成值。

import numpy as np

x = np.linspace(0,100,200)
plt.plot(x,f(x))

查看 x 的值可以看到左边的生成过程。

因此绘制的图表如下所示。

파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기-8파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기-9

5. 完成图表

只需将两个图表叠加即可。

plt.scatter(score["수학점수"], score["읽기점수"], alpha=0.4, color="green")
plt.xlabel("数学成绩")
plt.ylabel("阅读成绩")
plt.plot(x, f(x),"r--")
파이썬 데이터 시각화 입문 8 - Numpy로 선형회귀 분석하기-10

6. 总结

本次文章中通过线性回归分析绘制了两个值间关系的图表。

下一次文章将对如何利用数据可视化完善高中生活记录进行思考

댓글을 불러오는 중...