第乙個機器學習演算法,k 近鄰演算法,(一種分類方法)

2021-09-12 07:43:53 字數 1483 閱讀 6417

**連線:

提取碼:szdg

工作原理:

第一:要存在乙個帶標籤的樣本集合。(所有樣本對應的類別是已知的)

第二:當有乙個新資料輸入後,將新資料的每個特徵與樣本集中中的 每乙個樣本的特徵進行比較。

第三:提取最接近的 k 個樣本。一般k <=20.

第四:在這 k  個樣本中,選取出現最多的類別。 作為新資料的分類。

優缺點:

優點:精度高, 對異常值不敏感(提取接近的 k 個樣本,當k取的較大時, 異常值出現的比例降低, 當再取其**現次數最多的類別時,異常值的影響很小), 無資料輸入假定。

缺點:計算複雜度高(直接計算特徵的距離,當資料集很大時,計算複雜度會很大), 空間複雜度高。

下面給出具體流程:

分析資料:使用matplotlib 畫散點圖,分析資料分布

核心演算法**編寫:計算測試樣本 和樣本集的歐式距離,取前  k  個,統計出現最多的 label。

測試演算法:提供乙個測試集,(或者選取資料集 中隨機的 百分之10左右, 作為測試資料),記錄錯誤次數,計算正確率。

使用演算法:呼叫**,隨意給資料,給出  對應的類別。

一:收集資料。

在檔案包中有乙個  datingtestset.txt  和  atingtestset2.txt都可以使用

**如下:

當解析文字檔案之後,每乙個特徵為數字的時候,每乙個特徵的數量級不一致,例如

特徵a  : 身高     150-------240

特徵b:體重      40---------150

特徵c:年齡      20-----------30

當計算歐式距離的時候,每乙個特徵的  權重會不一致。所以在計算歐式距離之前    需要對資料矩陣每乙個特徵進行歸一化處理。    (身高-min身高)/(max身高-min身高);

**如下:

三,分析資料:一般使用matplotlib繪製散點圖。。。**比較好理解,就沒有加注釋

四,核心演算法編寫:

五,測試演算法,選取資料集的 前0.1 為測試集, 後0.9為訓練集。

filename 為存放資料的 txt檔案, k 為 擷取的前 k 個近鄰樣本。

第六:使用演算法:

傳遞文字檔案,k,返回錯誤率。

第乙個機器學習演算法 k近鄰分類解決手寫數字識別

3 收集和預處理資料 4 訓練和測試 手寫識別是不是很高大上?但是,只要你想學,還是對你很友好的。python 好啊,python中有好幾種機器學習通用庫,提供了類似於stl那樣的演算法模板函式。由於python函式引數傳遞的特殊用法,它們還支援手動調參。目前常用的機器學習庫有sklearn 通用機...

機器學習第乙個演算法

單變數線性回歸 導包import numpy as np import matplotlib.pyplot as plt plt.rcparams font.sans serif simhei 正常顯示中文 plt.rcparams axes.unicode minus false 正常顯示符號 讀...

機器學習演算法一 k 近鄰演算法(1)

採用測量不同特徵值之間的距離方法進行分類。knn工作原理 訓練樣本集中每個資料有乙個一一對應的所屬分類的標籤。需要分類的新資料沒有標籤,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後將樣本集中與其特徵最相似 最近鄰 的資料標籤作為新資料的標籤。一般來說,我們選擇樣本集中前k個最相似的資料 ...