**連線:
提取碼: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個最相似的資料 ...