这是之前学习线性回归时做的模型,精简版如果去掉注释只用了16行~~
首先需要数据:一个班级内所有人某课程的成绩、所有人最后的平均绩点(当然数据越多越好)
72 | 2.5 |
81 | 2.98 |
61 | 1.76 |
81 | 2.89 |
72 | 2.24 |
56 | 2.25 |
68 | 2.03 |
60 | 1.97 |
60 | 2.16 |
89 | 2.48 |
73 | 2.22 |
60 | 1.9 |
72 | 2.29 |
86 | 2.69 |
67 | 1.81 |
71 | 2.73 |
86 | 3.1 |
59 | 1.28 |
71 | 2.52 |
77 | 2.92 |
55 | 1.79 |
95 | 3.24 |
72 | 2.48 |
64 | 1.85 |
77 | 3.15 |
75 | 2.55 |
68 | 1.9 |
69 | 2.05 |
71 | 2.24 |
74 | 2.63 |
73 | 2.88 |
78 | 2.06 |
91 | 3.03 |
76 | 2.37 |
56 | 1.21 |
59 | 1.19 |
63 | 1.9 |
76 | 2.42 |
93 | 3.09 |
这里用了我们班大一下学期的高数成绩,可以看出来很是惨烈
接下来先上源码和运行截图再进行概述
import matplotlib.pyplot as plt
import xlrd
from sklearn.linear_model import LinearRegression
import numpy as np
# 载入数据,打开excel文件
ExcelFile = xlrd.open_workbook("D:\文件\机器学习/new.xls")
sheet1 = ExcelFile.sheet_by_index(0)
x = sheet1.col_values(0)
y = sheet1.col_values(1)
# 将列表转换为matrix
x = np.matrix(x).reshape(39, 1)
y = np.matrix(y).reshape(39, 1)
print(x, y)
model = LinearRegression()
model.fit(x, y)
# 划线
plt.plot(x, y, 'b.')
plt.plot(x, model.predict(x), 'r')
plt.show()
结果说明:可以看到运行出来是一个一次函数的图像,当把鼠标放到坐标系的任意位置,右下角都会显示其对应的x和y的值,其中x代表自变量(数学成绩),y代表(平均绩点),这样就能清楚的观察到,当数学成绩为多少时,平均绩点的可能值(反之仍成立)
使用的第三方库作用:
1、matplotlib:是一个画图所需要的包
2、xlrd:我用的是xls格式的Excel文件,所以用了这个库来导入对应的表以及表中的行和列
3、numpy:这里用numpy里的matrix方法将表格转换为矩阵形式
4、sklearn.linear_model:使用了sklearn中的线性回归模型,关于这里详情可以看之前本人写好的文章https://blog.csdn.net/tianhai12/article/details/119273702
机器学习:Sklearn库中linear_model线性模型中‘LinearRegression‘线性回归源码理解(一)_tianhai12的博客-CSDN博客