Github地址:https://github.com/yot777/
单特征与多特征
在上一节标签和特征的示例中,我们使用的是标签和特征一一对应:
特征(身高,以米为单位)
标签
A
1.51
0
B
1.61
1
C
1.76
1
D
2.1
1
E
1.58
0
F
1.68
1
事实上,在现实生活中,存在着大量的多个特征对应一个标签的情况,以我们熟知的线性规划问题举例:
在此问题中,存在x1和x2两种特征共同决定了该机床厂的销售利润。
依照线性规划的图解法,我们可以得到:
上图中的标黄部分是可行域,可行域中的每个坐标(x1,x2)记为标签1(可行)
除了可行域之外的部分,每个坐标(x1,x2)记为标签0(不可行)
这样,我们就完成了多个特征对应一个标签的匹配。
训练集与测试集
依照图解法的结果,我们可以得到以下10个样本数据的特征和标签
其中5个数据的标签为0,5个数据的标签为1,总共10个数据构成了源数据集:
样本数据
特征x1
特征x2
标签
在引言中我们学过,机器学习的前两个步骤是:
学到知识:
通过
大量训练数据进行数学建模
,让机器“学”到数据的某种规律。
按时温习:
通过已经
建好的模型
来
运行测试数据,
验证“学”到的那些规律是否正确。
那么我们现在只有10个数据,一般来说会将70%~80%的数据用来进行数学建模,这部分数据叫
训练集。
剩下的20%到30%的数据用来验证建模运算后的数据是否得到正确的标签,这部分数据叫
测试集。
在机器学习领域,通常我们用以下4个变量来表示训练集、测试集以及他们的特征和标签:
X_train
表示训练集特征,
y_train
表示训练集标签
X_test
表示测试集特征,
y_test
表示测试集标签。
注意:X为大写,表示矩阵(一条数据可以有多个特征);y为小写,表示向量(一条数据只能有一个标签)
按照80%训练集20%测试集的原则,我们将以上表格划分为以下4个部分:
Python实现训练集与测试集
代码如下:
import numpy as np
#源数据矩阵
S = np.array([[1,2,1],[4,5,0],[2,1,1],[4,2,1],[6,1,0],[3,3,1],[5,2,0],[4,5,0],[2,7,0],[2,6,1]])
print('源数据矩阵是\n',S)
#X_train训练集特征矩阵,先取行再取列
X_train = S[:8][:,0:-1]
print('X_train训练集特征矩阵是\n',X_train)
#y_train训练集标签向量,先取行再取列
y_train = S[:8][:,-1]
print('y_train训练集标签向量是\n',y_train)
#X_test测试集特征矩阵,先取行再取列
X_test = S[8:][:,0:-1]
print('X_test测试集特征矩阵是\n',X_test)
#y_train训练集标签向量,先取行再取列
y_test = S[8:][:,-1]
print('y_test测试集标签向量是\n',y_test)
运行结果:
源数据矩阵是
[[1 2 1]
[4 5 0]
[2 1 1]
[4 2 1]
[6 1 0]
[3 3 1]
[5 2 0]
[4 5 0]
[2 7 0]
[2 6 1]]
X_train训练集特征矩阵是
[[1 2]
[4 5]
[2 1]
[4 2]
[6 1]
[3 3]
[5 2]
[4 5]]
y_train训练集标签向量是
[1 0 1 1 0 1 0 0]
X_test测试集特征矩阵是
[[2 7]
[2 6]]
y_test测试集标签向量是
[0 1]
总结
在现实生活中,存在着大量的多个特征对应一个标签的情况。
源数据中用来进行数学建模的数据叫
训练集
,一般占源数据的70%~80%
源数据中用来验证通过建模运算后的数据是否得到正确的标签,这部分数据叫
测试集
,一般占源数据的20%~30%
在机器学习领域,通常我们用以下4个变量来表示训练集、测试集以及他们的特征和标签:
X_train
表示训练集特征,
y_train
表示训练集标签
X_test
表示测试集特征,
y_test
表示测试集标签。
注意:X为大写,表示矩阵(一条数据可以有多个特征);y为小写,表示向量(一条数据只能有一个标签)
Github地址:https://github.com/yot777/
如果您觉得本篇本章对您有所帮助,欢迎关注、评论、点赞!Github欢迎您的Follow、Star!