杨桃的Python机器学习2——标签和特征

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

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

好了,机器学习进入正题了,我们从大家身边的实例开始讲起。

什么是标签

标签,通俗的讲是对某人某事物的凭经验的分类 。

大家都知道,人有高矮胖瘦之分,那么高是怎样定义出来的呢?

我查了一下,“高”在字典里的解释是:从下向上距离大;离地面远(跟“低”相对)。为什么解释“高”,要扯到“低”?

为了弄清楚“高”,我又查了一下“低”:从下向上距离小;离地面近(跟“高”相对)。

真想用爱情公寓里陈美嘉的名言对字典说:“我一口盐汽水喷si你!”

总之呢,从字典里搞清楚“高”是不可能的。但是我们每个人确实都觉得有的人长得高,有的人长得低(矮),这又是为什么呢?

什么是特征

如果你问姚明,觉得什么人算长得高?他可能会说:2米以上算长得高!

如果你问美女模特,觉得什么样的男人算长得高?她可能会说,1米75以上算长得高!

如果你问普通男人,觉得什么样的女人算长得高?他可能会说,1米6以上算长得高!

如果你问非洲某小人国部落,他可能会说,1米以上就算是巨人了!

明白了吗?其实大家心里都有一杆秤啊!标签的背后,是有某种可以量化为数字的指标做支撑,这就叫特征

特征和标签的配对

好了,解释了特征和标签,现在我们可以进行特征和标签的配对了。接着上面的话题:

姚明眼中的人类:

  特征(身高,以米为单位) 标签
A 1.51
B 1.61
C 1.76
D 2.1

美女模特眼中的人类:

  特征(身高,以米为单位) 标签
A 1.51
B 1.61
C 1.76
D 2.1

普通男人眼中的人类:

  特征(身高,以米为单位) 标签
A 1.51
B 1.61
C 1.76
D 2.1

非洲某小人国部落眼中的人类:

  特征(身高,以米为单位) 标签
A 1.51
B 1.61
C 1.76
D 2.1

可以看出,在不同人眼中,即使相同的标签代表的含义也是不同的。以下我们以“普通男人眼中的人类”进一步展开讨论。

我们已经知道了普通男人眼中的人类关于高矮的标准是:1米6以上算长得高。

那么再有其他高度的人,我们很容易得到其他人的标签,如下:

  特征(身高,以米为单位) 标签
A 1.51
B 1.61
C 1.76
D 2.1
E 1.58
F 1.68 高 

为了方便计算机识别,通常我们把标签改为0/1/2这样的数字,本例中我们用0代表“矮”,用1代表“高”,因此上表简化为

  特征(身高,以米为单位) 标签
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实现特征——标签矩阵

代码如下:

import numpy as np
S = np.array([[1.51,0],[1.61,1],[1.76,1],[2.1,1],[1.58,0],[1.68,1]])
print(S)

#运行结果:
[[1.51 0.  ]
 [1.61 1.  ]
 [1.76 1.  ]
 [2.1  1.  ]
 [1.58 0.  ]
 [1.68 1.  ]]

取出标签和特征:

import numpy as np
S = np.array([[1.51,0],[1.61,1],[1.76,1],[2.1,1],[1.58,0],[1.68,1]])
#原始特征——标签矩阵
print("原始特征——标签矩阵是\n",S)
#取出标签
print("标签是\n",S[:,-1])
#取出特征
print("特征是\n",S[:,0:-1])

运行结果:
原始特征——标签矩阵是
 [[1.51 0.  ]
 [1.61 1.  ]
 [1.76 1.  ]
 [2.1  1.  ]
 [1.58 0.  ]
 [1.68 1.  ]]
标签是
 [0. 1. 1. 1. 0. 1.]
特征是
 [[1.51]
 [1.61]
 [1.76]
 [2.1 ]
 [1.58]
 [1.68]]

请注意,标签都是位于该矩阵的最后一列,因此我们用到了之前讲过的数组(矩阵)取列的写法:

[ ]以冒号逗号(即:,)开头,表示取列元素因此S[:,-1]就是开始数的第1列,也就是标签

再看本例中取特征的写法是S[:,0:-1],表示开始数直到最右边第1列的左列为止(如果不理解,请回看:杨桃的Python进阶讲座16——数组array(六)一维数组和二维数组的索引和取值),貌似直接写S[:,0]也没问题?

需要说明,本例只有一个特征列,实际应用中往往是多个特征列对应一个标签,因此这里取特征的写法S[:,0:-1]是通用的写法。

总结

标签,是对某人某事物的凭经验的分类 。

某种可以量化为数字的指标,叫做特征

通常把标签改为0/1/2这样的数字便于计算机处理。

可以把标签和特征配对形成:特征——标签矩阵,一般来说,标签都是位于该矩阵的最后一列。

利用Python实现特征——标签矩阵S,S[:,-1]表示标签S[:,0:-1]表示特征。

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

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

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

发布了55 篇原创文章 · 获赞 16 · 访问量 6111

猜你喜欢

转载自blog.csdn.net/yty_7/article/details/105003781
今日推荐