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

事实上,在现实生活中,存在着大量的多个特征对应一个标签的情况,以我们熟知的线性规划问题举例:

python怎么把数据集分成几份 python数据集划分3部分_机器学习

在此问题中,存在x1和x2两种特征共同决定了该机床厂的销售利润。

依照线性规划的图解法,我们可以得到:

python怎么把数据集分成几份 python数据集划分3部分_python怎么把数据集分成几份_02

上图中的标黄部分是可行域,可行域中的每个坐标(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怎么把数据集分成几份 python数据集划分3部分_python划分训练集和测试集_03

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!