python划分训练集和测试集_杨涛的Python机器学习3:单特征与多特征、训练集与测试集,杨桃...

本人CSDN博客专栏:https://blog.csdn.net/yty_7

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

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

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l0eV83,size_16,color_FFFFFF,t_70

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

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

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l0eV83,size_16,color_FFFFFF,t_70

上图中的标黄部分是可行域,可行域中的每个坐标(x1,x2)记为标签1(可行)

除了可行域之外的部分,每个坐标(x1,x2)记为标签0(不可行)

这样,我们就完成了多个特征对应一个标签的匹配。

训练集与测试集

依照图解法的结果,我们可以得到以下10个样本数据的特征和标签

其中5个数据的标签为0,5个数据的标签为1,总共10个数据构成了源数据集:

样本数据

特征x1

特征x2

标签

1

1

2

1

2

4

5

0

3

2

1

1

4

4

2

1

5

6

1

0

6

3

3

1

7

5

2

0

8

4

5

0

9

2

7

0

10

2

6

1

在引言中我们学过,机器学习的前两个步骤是:

学到知识:

通过

大量训练数据进行数学建模

,让机器“学”到数据的某种规律。

按时温习:

通过已经

建好的模型

运行测试数据,

验证“学”到的那些规律是否正确。

那么我们现在只有10个数据,一般来说会将70%~80%的数据用来进行数学建模,这部分数据叫

训练集。

剩下的20%到30%的数据用来验证建模运算后的数据是否得到正确的标签,这部分数据叫

测试集。

在机器学习领域,通常我们用以下4个变量来表示训练集、测试集以及他们的特征和标签:

X_train

表示训练集特征,

y_train

表示训练集标签

X_test

表示测试集特征,

y_test

表示测试集标签。

注意:X为大写,表示矩阵(一条数据可以有多个特征);y为小写,表示向量(一条数据只能有一个标签)

按照80%训练集20%测试集的原则,我们将以上表格划分为以下4个部分:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l0eV83,size_16,color_FFFFFF,t_70

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为小写,表示向量(一条数据只能有一个标签)

本人CSDN博客专栏:https://blog.csdn.net/yty_7

Github地址:https://github.com/yot777/

如果您觉得本篇本章对您有所帮助,欢迎关注、评论、点赞!Github欢迎您的Follow、Star!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值