之前做了个一元的线性回归预测,机器学习:利用sklearn方法的一元线性回归模型(通过成绩预测绩点)_tianhai12的博客-CSDN博客
其实拟合度不高,因为毕竟学生都有偏科现象~~所以,通过将各科成绩都作为特征向量来进行预测才会更加精确的预测绩点
这里就分享一下多元线性回归模型,这里是在数学成绩后面又加了一列英语成绩
二元的代码和演示效果如下
import numpy as np
from sklearn import linear_model
import matplotlib.pyplot as plt
# 1、载入数据
data = np.genfromtxt('D:\文件\机器学习/new2.csv', delimiter=",")
x_data = data[:,:-1]
y_data = data[:,-1]
print(x_data, y_data ,len(x_data))
print(x_data, y_data)
# 应用模型
model = linear_model.LinearRegression()
model.fit(x_data, y_data)
print("系数w:", model.coef_)
print("偏置项b:", model.intercept_)
# 画3D图
ax = plt.figure().add_subplot(111, projection='3d')
ax.scatter(x_data[:, 0], x_data[:, 1], y_data, c='r', marker='o', s=100) # 调参
x0 = x_data[:, 0]
x1 = x_data[:, 1]
# 绘制网格矩阵
x0, x1 = np.meshgrid(x0, x1)
# 公式z=w*x0+w*x1+b
z_data = model.intercept_ + x0*model.coef_[0] + x1*model.coef_[1]
# 坐标轴以及标签
ax.plot_surface(x0, x1, z_data)
ax.set_xlabel('MathGrade')
ax.set_ylabel('EnglishGrade')
ax.set_zlabel('GPA')
plt.show()
用得出来的系数和偏置项去计算绩点,效果还是不错的
比如我两科成绩都为85,经计算得出我的GPA最后为3.359
三元及以上线性回归
三元或N元只需在x_data中有3列或n列数据即可
再加一份线性代数成绩!
但是不能用matplotlib画图了(没有三元及以上的绘图函数),这里只写得出系数和偏置项的代码了。
import numpy as np
from sklearn import linear_model
# 1、载入数据
data = np.genfromtxt('D:\文件\机器学习/new3.csv', delimiter=",")
x_data = data[:,:-1]
y_data = data[:,-1]
print(x_data, y_data, len(x_data))
# 应用模型
model = linear_model.LinearRegression()
model.fit(x_data, y_data)
print("系数w:", model.coef_)
print("偏置项b:", model.intercept_)
系数w也是每个成绩所占的权重,由此可见重要性上来看我们班的高数>英语>线代
也可以用此模型来预测身边的各种例子呀
比如:预测房价、人口增长分析、预测天气等