本篇文章更多的是解决期末考试的问题。
本人主要学习计算机图形学,而并非机器学习,在机器学习中也有很多不足不懂之处,也是还在学习,但不是个人重点方向。
这里我们不再讲解原理,直接套路性的教大家如何通过我们(仅我们学校)的期末考试。
当然,我依然希望大家能更多的理解其中的原理再来学习。
先看完整代码我们再进行解析式的去理解
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt# 读数据 数据预处理
data = np.loadtxt("aqi2.csv", delimiter=",", skiprows=1, dtype=np.float32)
index = np.ones((data.shape[0], 1))
data = np.hstack((data, index))# 切片
X = data[:, 1:]
y = data[:, 0]# 划分训练集和测试集
train_x, test_x, train_y, test_y = train_test_split(X, y, train_size=0.8)# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(train_x, train_y)# 预测
y_pred = model.predict(test_x)# 截距
intercept = model.intercept_
print("截距:", intercept)# 权重(线性回归系数)
weights = model.coef_
print("权重:", weights)# 绘制实际值和预测值的图像
plt.plot(range(len(test_y)), test_y, c='red', alpha=0.5, label='Actual')
plt.plot(range(len(y_pred)), y_pred, c='green', alpha=0.5, label='Predicted')
plt.legend()
plt.show()
套路都是这几步
step1-读取数据
data = np.loadtxt("aqi2.csv", delimiter=",", skiprows=1, dtype=np.float32)
//这里的意思是
delimiter表示每个数据直接插入, 即假设 1 2 之间插入 1,2 这样才符合python list的标准范式
skiprows表示跳过行数,因为我们的cvs文件很大概率是没用的,可能是序列 123456 ,这种数据没有任何意义。
dtype=np.float32表示数据类型。这里我们以32位浮点数为标准。
step2 - 切片
# 切片
X = data[:, 1:]
y = data[:, 0]
这里我不再赘述,请看之前的文章
划分训练集和测试集
# 划分训练集和测试集
train_x, test_x, train_y, test_y = train_test_split(X, y, train_size=0.8)
这是几乎我们机器学习代码都会做的事情,这里train_size=0.8表示分割。
# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(train_x, train_y)
预测
# 预测
y_pred = model.predict(test_x)
根据题目需求运算模型和提取相应数据
创建模型
# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(train_x, train_y)
权重和结截距
# 截距
intercept = model.intercept_
print("截距:", intercept)# 权重(线性回归系数)
weights = model.coef_
print("权重:", weights)
这样 你的程序已经能得到一定分数了,起码比一片空白来的好的多,是吧?
最后我们绘制曲线,这里我不再赘述
# 绘制实际值和预测值的图像
plt.plot(range(len(test_y)), test_y, c='red', alpha=0.5, label='Actual')
plt.plot(range(len(y_pred)), y_pred, c='green', alpha=0.5, label='Predicted')
plt.legend()
plt.show()
这里我们总结一下,实际上我们一般来说就这么几步实现我们的大模型训练
读取数据->数据切片(分好类)->划分训练集->根据需求改变大模型->预测->根据需求提取数据->end