<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【機(jī)器學(xué)習(xí)】 K-近鄰算法(KNN)基本理論及代碼

          共 1676字,需瀏覽 4分鐘

           ·

          2022-07-17 19:32


          大家好,我是機(jī)器俠~


          我們知道,鳶尾花分為不同的種類(lèi),但種類(lèi)是如何被劃分的呢?同一種類(lèi)的鳶尾花具有哪些公共特征?某個(gè)類(lèi)型的鳶尾花的某些特征是否更加頻繁?基于此,本章將介紹k-近鄰算法,它十分的有效且易于掌握。通過(guò)k-近鄰法構(gòu)建程序,我們可以自動(dòng)劃分鳶尾花的類(lèi)型。接下來(lái),我們將通過(guò)探討k-近鄰算法的基本理論以及實(shí)際例子進(jìn)行講解。


          K-近鄰算法基本理論


          算法概述

          k-近鄰算法就是采用測(cè)量不同特征值之間的距離進(jìn)行分類(lèi)的方法。它的思路是:如果一個(gè)樣本在特征空間中的k個(gè)最相似(鄰近)的樣本中大多數(shù)屬于一個(gè)類(lèi)別,則該樣本也屬于這個(gè)類(lèi)別。在K-近鄰算法當(dāng)中,所選擇的鄰近點(diǎn)都已經(jīng)是正確分類(lèi)的對(duì)象。我們只依據(jù)k個(gè)(通常不大于20)鄰近樣本的類(lèi)別來(lái)決定待分樣本的類(lèi)別。


          算法流程

          k-近鄰算法的一般流程是:

          1. 收集數(shù)據(jù)  
          2. 計(jì)算待測(cè)數(shù)據(jù)與訓(xùn)練數(shù)據(jù)之間的距離(一般采用歐式距離)  
          3. 將計(jì)算的距離排序  
          4. 找出距離最小的k個(gè)值  
          5. 計(jì)算找出值中每個(gè)類(lèi)別的頻次  
          6. 返回最高頻次的類(lèi)別  

          算法特點(diǎn)

          優(yōu)點(diǎn):精度高、對(duì)異常值不敏感
          缺點(diǎn):計(jì)算復(fù)雜度高、空間復(fù)雜度高


          如何使用代碼實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入并分析數(shù)據(jù)


          以鳶尾花數(shù)據(jù)集為例,鳶尾花數(shù)據(jù)集內(nèi)包括3類(lèi)鳶尾,包括山鳶尾、變色鳶尾和維吉尼亞鳶尾,每個(gè)記錄都有4個(gè)特征:花萼長(zhǎng)度、花萼寬度、花瓣長(zhǎng)度、花瓣寬度。


          數(shù)據(jù)集導(dǎo)入與分析

          from sklearn.datasets import load_iris
          from sklearn.model_selection import train_test_split
          from sklearn.neighbors import KNeighborsClassifier
          import numpy as np


          # 加載數(shù)據(jù)集
          dataset = load_iris()
          # 劃分?jǐn)?shù)據(jù)
          X_train, X_test, y_train, y_test = train_test_split(dataset['data'],dataset['target'],random_state= 0)
          # random_state的作用相當(dāng)于隨機(jī)種子,是為了保證每次分割的訓(xùn)練集和測(cè)試集都是一樣的
          # 設(shè)置鄰居數(shù),即n_neighbors的大小
          knn = KNeighborsClassifier(n_neighbors = 5)
          # 構(gòu)建模型
          knn.fit(X_train,y_train)
          # 得出分?jǐn)?shù)
          print("score:{:.2f}".format(knn.score(X_test,y_test)))


          # 我們也可以單獨(dú)對(duì)某一數(shù)據(jù)進(jìn)行測(cè)試
          # 嘗試一條測(cè)試數(shù)據(jù)
          X_try = np.array([[5,4,1,0.7]])
          # 對(duì)X_try預(yù)測(cè)結(jié)果
          prediction = knn.predict(X_try)
          print("prediction = ",prediction)


          得出結(jié)果:
          prediction = [0]
          即這朵花是山鳶尾

          - EOF -

          往期精彩回顧




          瀏覽 51
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费国产黄色电影 | 无码久久一区二区三区 | 久久精品69 | 精品国产999 | 色婷婷国产精品高潮呻吟AV久久 |