本人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!