ML: KNN筆記

使用Jupyter notebook

%matplotlib qt
import numpy as np
from sklearn import metrics
from sklearn.neighbors import KNeighborsClassifier
  1. 讀取txt數(shù)據(jù),最后一列為標簽
data = []
labels = []
with open('data\\datingTestSet.txt') as f:
    for line in f:
        tokens = line.strip().split('\t')
        data.append([float(tk) for tk in tokens[:-1]])
        labels.append(tokens[-1])

data[1:10]
np.unique(labels)
array(['didntLike', 'largeDoses', 'smallDoses'],
dtype='|S10')

  1. 處理字符標簽為數(shù)字標簽
x = np.array(data)
labels = np.array(labels)
y = np.zeros(labels.shape)
y[labels=='didntLike'] = 1
y[labels=='smallDoses'] = 2
y[labels=='largeDoses'] = 3
  1. 數(shù)據(jù)未歸一化前
model = KNeighborsClassifier(n_neighbors=3)
model.fit(x,y)
print(model)
expected = y
predicted = model.predict(x)
print metrics.classification_report(expected,predicted,target_names=['didntLike','smallDoses','largeDoses'])
print metrics.confusion_matrix(expected,predicted)

結(jié)果:

KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=1, n_neighbors=3, p=2,
weights='uniform')
precision recall f1-score support

didntLike 0.89 0.85 0.87 342
smallDoses 0.93 0.98 0.96 331
largeDoses 0.82 0.83 0.82 327

avg / total 0.88 0.88 0.88 1000

[[289 0 53]
[ 1 325 5]
[ 33 24 270]]

  1. 數(shù)據(jù)歸一化到[0-1范圍]
from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(x)
X_train_minmax
array([[ 0.44832535,  0.39805139,  0.56233353],
       [ 0.15873259,  0.34195467,  0.98724416],
       [ 0.28542943,  0.06892523,  0.47449629],
       ..., 
       [ 0.29115949,  0.50910294,  0.51079493],
       [ 0.52711097,  0.43665451,  0.4290048 ],
       [ 0.47940793,  0.3768091 ,  0.78571804]])
  1. 拆分訓練數(shù)據(jù)與測試數(shù)據(jù)
from sklearn.cross_validation import train_test_split  
''''' 拆分訓練數(shù)據(jù)與測試數(shù)據(jù) '''  
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2)  
  1. 歸一化后結(jié)果
    n_neighbors = 3 K近鄰的K取值為3
x_train, x_test, y_train, y_test = train_test_split(X_train_minmax, y, test_size = 0.2)  
model = KNeighborsClassifier(n_neighbors=3)
model.fit(x_train,y_train)
print(model)
expected = y_test
predicted = model.predict(x_test)
print metrics.classification_report(expected,predicted,target_names=['didntLike','smallDoses','largeDoses'])
print metrics.confusion_matrix(expected,predicted)

結(jié)果:

KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=1, n_neighbors=3, p=2,
weights='uniform')
precision recall f1-score support

didntLike 0.97 1.00 0.99 68
smallDoses 0.93 1.00 0.96 51
largeDoses 1.00 0.93 0.96 81

avg / total 0.97 0.97 0.97 200

[[68 0 0]
[ 0 51 0]
[ 2 4 75]]

小結(jié):
歸一化后的結(jié)果兔院,與歸一化前相差很大

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粪般,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子隘击,更是在濱河造成了極大的恐慌,老刑警劉巖鹃锈,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窜醉,死亡現(xiàn)場離奇詭異宪萄,居然都是意外死亡,警方通過查閱死者的電腦和手機榨惰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門拜英,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人琅催,你說我怎么就攤上這事居凶。” “怎么了藤抡?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵侠碧,是天一觀的道長。 經(jīng)常有香客問我杰捂,道長舆床,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任嫁佳,我火速辦了婚禮挨队,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒿往。我一直安慰自己盛垦,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布瓤漏。 她就那樣靜靜地躺著腾夯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蔬充。 梳的紋絲不亂的頭發(fā)上蝶俱,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音饥漫,去河邊找鬼榨呆。 笑死,一個胖子當著我的面吹牛庸队,可吹牛的內(nèi)容都是我干的积蜻。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼彻消,長吁一口氣:“原來是場噩夢啊……” “哼竿拆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宾尚,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤丙笋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體不见,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡澳化,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了稳吮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缎谷。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖灶似,靈堂內(nèi)的尸體忽然破棺而出列林,到底是詐尸還是另有隱情,我是刑警寧澤酪惭,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布希痴,位于F島的核電站,受9級特大地震影響春感,放射性物質(zhì)發(fā)生泄漏砌创。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一鲫懒、第九天 我趴在偏房一處隱蔽的房頂上張望嫩实。 院中可真熱鬧,春花似錦窥岩、人聲如沸甲献。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晃洒。三九已至,卻和暖如春朦乏,著一層夾襖步出監(jiān)牢的瞬間球及,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工呻疹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留桶略,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓诲宇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惶翻。 傳聞我的和親對象是個殘疾皇子姑蓝,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容