k 近鄰演算法 二

2021-08-10 04:37:16 字數 2100 閱讀 8418

二 k-近鄰演算法實戰之約會**配對效果判定

上一小結學習了簡單的k-近鄰演算法的實現方法,但是這並不是完整的k-近鄰演算法流程,k-近鄰演算法的一般流程:

收集資料:可以使用爬蟲進行資料的收集,也可以使用第三方提供的免費或收費的資料。一般來講,資料放在txt文字檔案中,按照一定的格式進行儲存,便於解析及處理。

準備資料:使用python解析、預處理資料。

分析資料:可以使用很多方法對資料進行分析,例如使用matplotlib將資料視覺化。

測試演算法:計算錯誤率。

使用演算法:錯誤率在可接受範圍內,就可以執行k-近鄰演算法進行分類。 已經了解了k-近鄰演算法的一般流程,下面開始進入實戰內容。

2.1 實戰背景

在將上述特徵資料輸入到分類器前,必須將待處理的資料的格式改變為分類器可以接收的格式。分類器接收的資料是什麼格式的?從上小結已經知道,要將資料分類兩部分,即特徵矩陣和對應的分類標籤向量。在knn_test02.py檔案中建立名為file2matrix的函式,以此來處理輸入格式問題。 將datingtestset.txt放到與knn_test02.py相同目錄下,編寫**如下:

# -*- coding: utf-8 -*-

import numpy as np

"""函式說明:開啟並解析檔案,對資料進行分類:1代表不喜歡,2代表魅力一般,3代表極具魅力

parameters:

filename - 檔名

returns:

returnmat - 特徵矩陣

classlabelvector - 分類label向量

"""def file2matrix(filename):

#開啟檔案

fr = open(filename)

#讀取檔案所有內容

arrayolines = fr.readlines()

#得到檔案行數

numberoflines = len(arrayolines)

#返回的numpy矩陣,解析完成的資料:numberoflines行,3列

returnmat = np.zeros((numberoflines,3))

#返回的分類標籤向量

classlabelvector =

#行的索引值

index = 0

for line in arrayolines:

#s.strip(rm),當rm空時,預設刪除空白符(包括'\n','\r','\t',' ')

line = line.strip()

#使用s.split(str="",num=string,cout(str))將字串根據'\t'分隔符進行切片。

listfromline = line.split('\t')

#將資料前三列提取出來,存放到returnmat的numpy矩陣中,也就是特徵矩陣

returnmat[index,:] = listfromline[0:3]

#根據文字中標記的喜歡的程度進行分類,1代表不喜歡,2代表魅力一般,3代表極具魅力

if listfromline[-1] == 'didntlike':

elif listfromline[-1] == 'smalldoses':

elif listfromline[-1] == 'largedoses':

index += 1

return returnmat, classlabelvector

"""函式說明:main函式

parameters:

無returns:

無modify:

2017-03-24

"""if __name__ == '__main__':

#開啟的檔名

filename = "datingtestset.txt"

#開啟並處理資料

演算法二 K 近鄰(KNN)演算法

k近鄰法 k nearest neighbor,k nn 是1967年由cover t和hart p提出的一種基本分類與回歸方法。它的工作原理是 存在乙個樣本資料集合,也稱作為訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新的...

k 近鄰演算法

此文章參考機器學習實戰一書,具體的理論知識可以參考該書。本文的初衷只是為了做乙個複習,將學過的知識加以整理,其中不免有一定的錯誤。2.k 近鄰演算法的原理介紹 k 近鄰演算法通過測量不同的特徵值之間的距離進行分類。它的工作原理如下 存在乙個樣本的資料集合,也成為訓練樣本集合。並且樣本集中的每個資料都...

K 近鄰演算法

k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 適用資料範圍 數值型和標稱型 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入...