01-sklearn中的KNN

前言

因?yàn)槭怯胹klearn來(lái)實(shí)現(xiàn)KNN算法,所以基本上只需要調(diào)用API就可以了溯乒,但是可以理解一個(gè)算法的基本流程编丘。

基本內(nèi)容

  • 加載sklearn庫(kù)中的數(shù)據(jù)
  • 切分?jǐn)?shù)據(jù)集
  • 訓(xùn)練并評(píng)估
  • 網(wǎng)格搜索
  • 數(shù)據(jù)標(biāo)準(zhǔn)化

準(zhǔn)備數(shù)據(jù)

sklearn中自帶了一些數(shù)據(jù)集买窟,可以使用這些數(shù)據(jù)集來(lái)進(jìn)行練習(xí)胚迫,下面導(dǎo)入手寫(xiě)數(shù)字識(shí)別的數(shù)據(jù)集

from sklearn import datasets

digits = datasets.load_digits()
print(digits.keys())
#output:dict_keys(['data', 'DESCR', 'images', 'target', 'target_names'])

導(dǎo)入數(shù)據(jù)集后,數(shù)據(jù)集類(lèi)似于字典汇恤,可以通過(guò)“點(diǎn)”操作符獲得它相應(yīng)的值棘伴,一般用到的也就是“data”和“target”兩個(gè)鍵來(lái)獲得數(shù)據(jù)的特征矩陣和標(biāo)簽向量:

X = digits.data
y = digits.target

切分

一般為了更好的泛化能力,都將數(shù)據(jù)集切分為訓(xùn)練集和測(cè)試集屁置,訓(xùn)練集用來(lái)訓(xùn)練得到模型焊夸,然后用測(cè)試集來(lái)測(cè)試這個(gè)模型的性能

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

不成文規(guī)定,矩陣大寫(xiě)蓝角,向量小寫(xiě)

訓(xùn)練并評(píng)估

在sklearn中這一部分十分簡(jiǎn)單阱穗,只需要將對(duì)應(yīng)的模型實(shí)例化,然后fit訓(xùn)練集上的數(shù)據(jù)使鹅,再在測(cè)試集上調(diào)用score方法就可以進(jìn)行評(píng)估了

from sklearn.neighbors import KNeighborsClassifier

knn_clf = KNeighborsClassifier()
knn_clf.fit(X_train, y_train)

knn_clf.score(X_test, y_test) #得分0.975

網(wǎng)格搜索超參數(shù)

在實(shí)例化模型的時(shí)候揪阶,不指定參數(shù)的話,使用的是默認(rèn)的值患朱,其實(shí)K近鄰模型中有幾個(gè)參數(shù)值得注意:

  • n_neighbors:整數(shù)鲁僚,默認(rèn)為5,決定考慮幾個(gè)點(diǎn)來(lái)投票
  • weights:投票時(shí)是否考慮距離的遠(yuǎn)近,越近的權(quán)重越大
  • p:整數(shù)冰沙,考慮使用哪種距離考量侨艾,默認(rèn)值為2,即歐式距離

其實(shí)不只是這些參數(shù)拓挥,具體有哪些參數(shù)可以到官網(wǎng)去查看api唠梨,這些參數(shù)的值為多少時(shí)模型的表現(xiàn)最好呢?我們可以用網(wǎng)格搜索來(lái)查找參數(shù)最好的值

param_grid = [
    {
        'n_neighbors':[i for i in range(1, 10)],
        'weights':['uniform', 'distance'],
        'p':[i for i in range(1, 6)]
    }
]

knn = KNeighborsClassifier()
from sklearn.model_selection import GridSearchCV
grid_search = GridSearchCV(knn, param_grid)

grid_search.fit(X_train, y_train)

搜索的時(shí)間比較長(zhǎng)侥啤,自己的垃圾電腦用了差不多7分鐘==

fit完之后当叭,可以通過(guò)下面兩個(gè)屬性查看結(jié)果和分?jǐn)?shù):

grid.best_estimator_
# output:
'''
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=1, n_neighbors=7, p=3,
           weights='uniform')
'''
grid.best_score_ #會(huì)輸出最好的分?jǐn)?shù)是多少

使用網(wǎng)格搜索的到參數(shù)的值,更新模型后評(píng)估得到果然提高了一點(diǎn)

數(shù)據(jù)標(biāo)準(zhǔn)化

stand = StandardScaler()
stand.fit(X_train)
X_train = stand.transform(X_train)
X_test_stand = stand.transform(X_test)

不知道為何標(biāo)準(zhǔn)化之后的數(shù)據(jù)的評(píng)分還降低了……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盖灸,一起剝皮案震驚了整個(gè)濱河市蚁鳖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赁炎,老刑警劉巖醉箕,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異甘邀,居然都是意外死亡琅攘,警方通過(guò)查閱死者的電腦和手機(jī)垮庐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)松邪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人哨查,你說(shuō)我怎么就攤上這事逗抑。” “怎么了寒亥?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵邮府,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我溉奕,道長(zhǎng)褂傀,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任加勤,我火速辦了婚禮仙辟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鳄梅。我一直安慰自己叠国,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布戴尸。 她就那樣靜靜地躺著粟焊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上项棠,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天悲雳,我揣著相機(jī)與錄音,去河邊找鬼沾乘。 笑死怜奖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翅阵。 我是一名探鬼主播歪玲,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼掷匠!你這毒婦竟也來(lái)了滥崩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤讹语,失蹤者是張志新(化名)和其女友劉穎钙皮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體顽决,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡短条,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了才菠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茸时。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赋访,靈堂內(nèi)的尸體忽然破棺而出可都,到底是詐尸還是另有隱情,我是刑警寧澤蚓耽,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布渠牲,位于F島的核電站,受9級(jí)特大地震影響步悠,放射性物質(zhì)發(fā)生泄漏签杈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一鼎兽、第九天 我趴在偏房一處隱蔽的房頂上張望答姥。 院中可真熱鬧,春花似錦接奈、人聲如沸踢涌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)睁壁。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間潘明,已是汗流浹背行剂。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钳降,地道東北人厚宰。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像遂填,于是被迫代替她去往敵國(guó)和親铲觉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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