(1)k-近鄰演算法是分類資料最簡單最有效的方法。(2)在將資料輸入到分類器之前,必須將待處理資料的格式改變為分類器可以接受的格式。
(3)所有的推薦模型都可以使用這個演算法,只要將結果量化就行了,主要是要考慮權重的設計。
# -*- coding:utf-8 -*-
#數字型聚類分析
from numpy import *
import operator
def createdataset():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['a','a','b','b']
return group,labels
group,labels = createdataset() #這裡的group不能直接用,需要這樣子返回引數
def classify0(inx,dataset,labels,k):
datasetsize = dataset.shape[0] #shape[0]就是讀取矩陣第一維度的長度
diffmat = tile(inx,(datasetsize,1)) - dataset
#>>> tile(1,2) >>>array([1, 1])
#>>> tile((1,2,3),3) >>>array([1, 2, 3, 1, 2, 3, 1, 2, 3])
sqdiffmat = diffmat**2sqdistances = sqdiffmat.sum(axis=1) #我們平時用的sum應該是預設的axis=0 就是普通的相加,而當加入axis=1以後就是將乙個矩陣的每一行向量相加
distances = sqdistances**0.5sorteddistindicies = distances.argsort() #排序
classcount={} #classcount={} 這是乙個dict,用於儲存不同標籤出現的次數;for i in range(k):voteilabel = labels[sorteddistindicies[i]]
classcount[voteilabel] = classcount.get(voteilabel,0)+1
sortedclasscount = sorted(classcount.iteritems(),
key=operator.itemgetter(1),reverse=true)
return sortedclasscount[0][0]
classify0([0,0],group,labels,3)
python KNN演算法運用練習之分類
問題描述 通過對細胞7個屬性的測量得分,蛋白質的定位位點,一共有8個定位點。模型選擇與評估 用cross val score實現,返回打分結果,分數越高,效能越好。引數cv,表示幾折交叉 引數scroing,常用 neg mean absolute error mae相反數 neg mean squ...
python knn演算法練習
1,準備資料 從檔案中讀出檔案 資料來自海倫約會 例子 展示如圖 2 資料歸一化 主要公式 newvalue oldvalue min max min tmpmat,rangs,mins knn.autonorm mat tmpmat array 0.44832535,0.39805139,0.56...
資料探勘基礎演算法 KNN最近鄰分類演算法
通過計算待 樣本和已知分類號的訓練樣本之間的距離來判斷該樣本屬於某個已知分類號的概率。並選取概率最大的分類號來作為待 樣本的分類號 懶惰分類演算法,其模型的建立直到待 例項進行 時才開始。knn演算法的指導思想是 近朱者赤,近墨者黑 由你的鄰居來推斷出你的類別。本質上,knn演算法就是用距離來衡量樣...