模型训练就是通过一组训练数据,这组数据我这里举例x,y。x是自变量,y是因变量。那么我们可以定义数据
x=[2,5,8,11,13],
y=[100,156, 144, 180],
这些数据是我自己随便写的。我们可以看到 这组数据类似 y=ax。
然后我们想要的是通过线性回归训练后,再传入新的x 得到新的y,这样每次加入数据后数据会越来越多,精确率也会提高。
由浅入深,其实模型训练数据的最终目的就是根据之前的训练结果。我传入一个参数要得到某个预期的值。比如AI, 甚至让人仰望的混沌体系,纳维斯托克斯方程这样的系统也是如此。我举个例子,我传入今天的天气,温度,路上行人密度,早上出门和邻居打招呼等参数,然后我想知道今天的午饭能不能遇见女神。模型会给出概率。(我是相信哥本哈根学派的不确定性原理的,万物皆概率,万物都是基于普朗克时间和普朗克时间的宇宙时空运行的)。那么天气,温度等和遇见女神之间的联系是什么呢。当然不是简单的线性回归所能处理的了,而是更多的数据,更复杂的系统,更复杂甚至未知的数学公式才能训练出来。
下面我用python举个例子
1:准备数据
# 引入相关包
from sklearn.linear_model import LinearRegression
import numpy as np
# 准备的数据,注意,x,y的数据长度要相等,不然会出现错误,格式中途不能变
x = np.array([[2], [5], [8], [11], [13]])
y = np.array([[100], [156], [144], [180], [199]])
因为新版本np.arrary只能传二维数组,这里按照包的格式要求就行。这是已知数据表示,
x=2得到y=100,x=5得到y=156,以此类推,x,y个数,结构要一直,不然会报错
2:准备模型
# 创建一个线性回归模型
model = LinearRegression()
这里我选择包自带的模型,线性回归,更复杂的模型或者自定义模型读者可以自行研究
3:开始训练
# 训练模型
model.fit(x, y)
4:获取训练结果
print('回归系数:', model.coef_)
# 输出模型的截距
print('截距:', model.intercept_)
# 我们传入一个新的参数x来预估y
new_data = np.array([[33]])
predicted = model.predict(new_data)
print("传入33模型给出的最优解y=", predicted)
其中回归系数和截距数据数学知识,有兴趣可以自行去查资料学习。这里下面是最关键的,当我传入33的时候表示我想通过33获取预估结果通过model.predict()函数获取。
简单的demo就结束了。下面是完整代码
from sklearn.linear_model import LinearRegression
import numpy as np
# 准备的数据,注意,x,y的数据长度要相等,不然会出现错误,格式中途不能变
x = np.array([[2], [5], [8], [11], [13]])
y = np.array([[100], [156], [144], [180], [199]])
# 创建一个线性回归模型
model = LinearRegression()
# 训练模型
model.fit(x, y)
print('回归系数:', model.coef_)
# 输出模型的截距
print('截距:', model.intercept_)
# 我们传入一个新的参数x来预估y
new_data = np.array([[33]])
predicted = model.predict(new_data)
print("传入33模型给出的最优解y=", predicted)
运行结果如下
回归系数: [[7.9035533]]
截距: [94.15228426]
传入33模型给出的最优解y= [[354.96954315]]
青青园中葵,朝露待日晞。
阳春布德泽,万物生光辉。
常恐秋节至,焜黄华叶衰。
百川东到海,何时复西归?
少壮不努力,老大徒伤悲!