0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

scikit-learn K近鄰法類庫(kù)使用的經(jīng)驗(yàn)總結(jié)

lviY_AI_shequ ? 來(lái)源:未知 ? 2019-01-13 11:49 ? 次閱讀

本文對(duì)scikit-learn中KNN相關(guān)的類庫(kù)使用做了一個(gè)總結(jié),主要關(guān)注于類庫(kù)調(diào)參時(shí)的一個(gè)經(jīng)驗(yàn)總結(jié),且該文非常詳細(xì)地介紹了類的參數(shù)含義,這是小編見(jiàn)過(guò)最詳細(xì)的KNN類庫(kù)參數(shù)介紹 。

目錄

scikit-learn 中KNN相關(guān)的類庫(kù)概述

K近鄰法和限定半徑最近鄰法類庫(kù)參數(shù)小結(jié)

使用KNeighborsClassifier做分類的實(shí)例

1. scikit-learn中KNN相關(guān)的類庫(kù)概述

在scikit-learn 中,與近鄰法這一大類相關(guān)的類庫(kù)都在sklearn.neighbors包之中。KNN分類樹(shù)的類是KNeighborsClassifier,KNN回歸樹(shù)的類是KNeighborsRegressor。除此之外,還有KNN的擴(kuò)展,即限定半徑最近鄰分類樹(shù)的類RadiusNeighborsClassifier和限定半徑最近鄰回歸樹(shù)的類RadiusNeighborsRegressor, 以及最近質(zhì)心分類算法NearestCentroid。

在這些算法中,KNN分類和回歸的類參數(shù)完全一樣。限定半徑最近鄰法分類和回歸的類的主要參數(shù)也和KNN基本一樣。

比較特別是的最近質(zhì)心分類算法,由于它是直接選擇最近質(zhì)心來(lái)分類,所以僅有兩個(gè)參數(shù),距離度量和特征選擇距離閾值,比較簡(jiǎn)單,因此后面就不再專門講述最近質(zhì)心分類算法的參數(shù)。

另外幾個(gè)在sklearn.neighbors包中但不是做分類回歸預(yù)測(cè)的類也值得關(guān)注。kneighbors_graph類返回用KNN時(shí)和每個(gè)樣本最近的K個(gè)訓(xùn)練集樣本的位置。radius_neighbors_graph返回用限定半徑最近鄰法時(shí)和每個(gè)樣本在限定半徑內(nèi)的訓(xùn)練集樣本的位置。NearestNeighbors是個(gè)大雜燴,它即可以返回用KNN時(shí)和每個(gè)樣本最近的K個(gè)訓(xùn)練集樣本的位置,也可以返回用限定半徑最近鄰法時(shí)和每個(gè)樣本最近的訓(xùn)練集樣本的位置,常常用在聚類模型中。

2.K近鄰法和限定半徑最近鄰法類庫(kù)參數(shù)小結(jié)

本節(jié)對(duì)K近鄰法和限定半徑最近鄰法類庫(kù)參數(shù)做一個(gè)總結(jié)。包括KNN分類樹(shù)的類KNeighborsClassifier,KNN回歸樹(shù)的類KNeighborsRegressor, 限定半徑最近鄰分類樹(shù)的類RadiusNeighborsClassifier和限定半徑最近鄰回歸樹(shù)的類RadiusNeighborsRegressor。這些類的重要參數(shù)基本相同,因此我們放到一起講:

3. 使用KNeighborsClassifier做分類的實(shí)例

完整代碼見(jiàn)github:

https://github.com/ljpzzz/machinelearning/blob/master/classic-machine-learning/knn_classifier.ipynb

3.1 生成隨機(jī)數(shù)據(jù)

首先,我們生成我們分類的數(shù)據(jù),代碼如下:

import numpy as np import matplotlib.pyplot as plt from sklearn.datasets.samples_generator import make_classification # X為樣本特征,Y為樣本類別輸出, 共1000個(gè)樣本,每個(gè)樣本2個(gè)特征,輸出有3個(gè)類別,沒(méi)有冗余特征,每個(gè)類別一個(gè)簇 X, Y = make_classification(n_samples=1000, n_features=2, n_redundant=0, n_clusters_per_class=1, n_classes=3)plt.scatter(X[:, 0], X[:, 1], marker='o', c=Y)plt.show()

先看看我們生成的數(shù)據(jù)圖如下。由于是隨機(jī)生成,如果你也跑這段代碼,生成的隨機(jī)數(shù)據(jù)分布會(huì)不一樣。下面是我某次跑出的原始數(shù)據(jù)圖。

接著我們用KNN來(lái)擬合模型,我們選擇K=15,權(quán)重為距離遠(yuǎn)近。代碼如下:

from matplotlib.colors import ListedColormap cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF']) #確認(rèn)訓(xùn)練集的邊界 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 #生成隨機(jī)數(shù)據(jù)來(lái)做測(cè)試集然后預(yù)測(cè) xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) # 畫出測(cè)試集數(shù)據(jù) Z = Z.reshape(xx.shape)plt.figure()plt.pcolormesh(xx, yy, Z, cmap=cmap_light) # 也畫出所有的訓(xùn)練集數(shù)據(jù) plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=cmap_bold)plt.xlim(xx.min(), xx.max())plt.ylim(yy.min(), yy.max())plt.title("3-Class classification (k = 15, weights = 'distance')" )生成的圖如下,可以看到大多數(shù)數(shù)據(jù)擬合不錯(cuò),僅有少量的異常點(diǎn)不在范圍內(nèi)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4374

    瀏覽量

    64403
  • KNN
    KNN
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    10972
  • 分類算法
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    10006

原文標(biāo)題:scikit-learn K近鄰法類庫(kù)使用小結(jié)

文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛(ài)好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Python機(jī)器學(xué)習(xí)庫(kù)Scikit-learn技術(shù)

    Scikit-learn API內(nèi)置了各種toy和real-world數(shù)據(jù)集[1]。這些可以便捷地通過(guò)一行代碼訪問(wèn),如果你正在學(xué)習(xí)或只是想快速嘗試新功能,這會(huì)非常有用。
    的頭像 發(fā)表于 08-27 17:34 ?3392次閱讀
    Python機(jī)器學(xué)習(xí)<b class='flag-5'>庫(kù)</b>談<b class='flag-5'>Scikit-learn</b>技術(shù)

    在PyODPS DataFrame自定義函數(shù)中使用pandas、scipy和scikit-learn

    的,MaxCompute 的 Python 環(huán)境只包含了 numpy 這一個(gè)第三方包,用戶常常問(wèn)的問(wèn)題是,如何在自定義函數(shù)里使用 pandas、scipy 或者 scikit-learn 這樣的包含c
    發(fā)表于 05-17 19:48

    通用Python機(jī)器學(xué)習(xí)庫(kù)scikit-learn

    《利用Python進(jìn)行數(shù)據(jù)分析》 134 scikit-learn介紹
    發(fā)表于 10-25 07:58

    SOPC Builder/Nios 學(xué)習(xí)經(jīng)驗(yàn)總結(jié)

    SOPC Builder/Nios 學(xué)習(xí)經(jīng)驗(yàn)總結(jié)
    發(fā)表于 07-22 15:32 ?0次下載
    SOPC Builder/Nios 學(xué)習(xí)<b class='flag-5'>經(jīng)驗(yàn)總結(jié)</b>

    線圈天線設(shè)計(jì)經(jīng)驗(yàn)總結(jié)

    線圈天線設(shè)計(jì)經(jīng)驗(yàn)總結(jié)
    發(fā)表于 09-12 17:21 ?224次下載

    模擬電路設(shè)計(jì)經(jīng)驗(yàn)總結(jié)

    模擬電子的相關(guān)知識(shí)學(xué)習(xí)教材資料——模擬電路設(shè)計(jì)經(jīng)驗(yàn)總結(jié)
    發(fā)表于 09-27 15:19 ?0次下載

    Python機(jī)器學(xué)習(xí)庫(kù)和深度學(xué)習(xí)庫(kù)總結(jié)

    我們?cè)贕ithub上的貢獻(xiàn)者和提交者之中檢查了用Python語(yǔ)言進(jìn)行機(jī)器學(xué)習(xí)的開(kāi)源項(xiàng)目,并挑選出最受歡迎和最活躍的項(xiàng)目。 1. Scikit-learn(重點(diǎn)推薦) Scikit-learn
    發(fā)表于 11-10 14:49 ?971次閱讀

    指針經(jīng)驗(yàn)總結(jié)

    指針經(jīng)驗(yàn)總結(jié)
    發(fā)表于 10-27 15:44 ?19次下載
    指針<b class='flag-5'>經(jīng)驗(yàn)總結(jié)</b>

    基于Python的scikit-learn編程實(shí)例

    scikit-learn 是機(jī)器學(xué)習(xí)領(lǐng)域非常熱門的一個(gè)開(kāi)源庫(kù),基于Python 語(yǔ)言寫成??梢悦赓M(fèi)使用。 網(wǎng)址: 上面有很多的教程,編程實(shí)例。而且還做了很好的總結(jié),下面這張圖基本概括了傳統(tǒng)機(jī)器學(xué)習(xí)
    發(fā)表于 11-15 19:39 ?1799次閱讀

    詳細(xì)解析scikit-learn進(jìn)行文本分類

    而多類別分類指的是y的可能取值大于2,但是y所屬類別是唯一的。它與多標(biāo)簽分類問(wèn)題是有嚴(yán)格區(qū)別的。所有的scikit-learn分類器都是默認(rèn)支持多類別分類的。但是,當(dāng)你需要自己修改算法的時(shí)候,也是可以使用scikit-learn實(shí)現(xiàn)多類別分類的前期數(shù)據(jù)準(zhǔn)備的。
    的頭像 發(fā)表于 12-27 08:36 ?4923次閱讀
    詳細(xì)解析<b class='flag-5'>scikit-learn</b>進(jìn)行文本分類

    用英特爾DAAL性能庫(kù)加速SCIKIT學(xué)習(xí)

    , and experience faster scikit-learn for your machine learning workflows.
    的頭像 發(fā)表于 10-15 03:20 ?3510次閱讀

    基于Python的scikit-learn包實(shí)現(xiàn)機(jī)器學(xué)習(xí)

    基于Python的scikit-learn包實(shí)現(xiàn)機(jī)器學(xué)習(xí)。
    發(fā)表于 03-26 09:42 ?11次下載
    基于Python的<b class='flag-5'>scikit-learn</b>包實(shí)現(xiàn)機(jī)器學(xué)習(xí)

    EMI整改經(jīng)驗(yàn)總結(jié)

    EMI整改經(jīng)驗(yàn)總結(jié)
    發(fā)表于 12-20 15:55 ?46次下載

    Scikit-learn機(jī)器學(xué)習(xí)庫(kù)的概念及工作原理

    作為一個(gè)適用于 Python 編程語(yǔ)言的機(jī)器學(xué)習(xí) (ML) 庫(kù)Scikit-learn 擁有大量算法,可供程序員和數(shù)據(jù)科學(xué)家在機(jī)器學(xué)習(xí)模型中輕松部署。
    的頭像 發(fā)表于 09-30 11:00 ?1797次閱讀

    選擇燒結(jié)銀的經(jīng)驗(yàn)總結(jié)

    選擇燒結(jié)銀的經(jīng)驗(yàn)總結(jié)
    的頭像 發(fā)表于 12-17 15:46 ?1706次閱讀
    選擇燒結(jié)銀的<b class='flag-5'>經(jīng)驗(yàn)總結(jié)</b>

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品