機器學習實戰 第一章 KNN演算法

2021-06-27 15:13:19 字數 1338 閱讀 5666

機器學習實戰(第一章)---knn演算法

一.k-近鄰演算法函式分析

def classify0(inx, dataset, labels, k):   

datasetsize = dataset.shape[0]

diffmat = tile(inx, (datasetsize,1)) - dataset

sqdiffmat = diffmat**2

sqdistances = sqdiffmat.sum(axis=1)

distances = sqdistances**0.5

sorteddistindicies = distances.argsort()

classcount={}

for i in range(k): //取前k項

voteilabel = labels[sorteddistindicies[i]] //獲取索引下標籤(a/b)

classcount[voteilabel] = classcount.get(voteilabel,0) + 1 //統計標籤數量

sortedclasscount = sorted(classcount.iteritems(), key=operator.itemgetter(1), reverse=true)

return sortedclasscount[0][0]

其中inx給出用於分類的輸入向量,dataset為輸入樣本集(列向量),labels標記處輸入樣本集對應的標籤(列向量),k表示用於選擇最近鄰居的數目

1.shape函式用於產生矩陣或陣列、元組。列表的維度的,shape[0]錶行,shape[1]表列

2.sum(axis=1)函式表示按行求和,一般預設axis=0即預設列求和

3.argsort(a,axis,kind,order)函式為numpy包中排序函式,該函式返回排序後的元素索引值,其中的kind引數可選用quicksort、mergesort、heapsort排序方法,a為待排序表.tips:可採用argsort(-a)排序原表,所得到的也為原表的逆序----見

argsort說明 4.

operator模組提供的itemgetter函式用於獲取物件的哪些維的資料,引數為一些序號,

operator.itemgetter函式獲取的不是值,而是定義了乙個函式

5.sorted() 函式返回列表,該應用中sortedclasscount為元組項列表

6.tile(a,reps)函式用於以reps指定維度重複元素a建立新陣列,詳細過程暫引用---

numpy包tile函式

機器學習實戰 第一章

機器學習能讓我們從資料集得到啟發 搜素引擎,郵件過濾系統,推薦系統,資料探勘 啤酒和尿布 機器學習在我們生活中隨處可見。機器學習是必學的。即使想做其他方向的研究,ml也是基礎 1 機器學習專業術語 訓練集,測試集,目標變數 如 鳥的類別 知識表示 如 可以採用規則集的形式,也可以採用概率的形式 採用...

機器學習實戰第一章 機器學習基礎小結

機器學習學習基礎一章先介紹了機器學習的概念,講解了機器學習可以幹什麼,遇到實際問題時應該怎麼選擇合適的機器學習演算法,簡單介紹了機器學習應用程式的步驟,介紹了機器學習實戰過程中當前使用最多的語言python和機器學習中常用的函式庫numpy。機器學習是當前it界非常火的技術之一,屬於人工智慧的一部分...

機器學習第一章

q 什麼是機器學習 機器學習不同於以往的計算機程式設計,致力於研究如何通過計算機手段,利用以往的經驗來改善系統自身的效能。一般的程式設計都是明確的告訴電腦該做什麼。機器學習希望提供資料給學習演算法,讓它自己學習,找到其種的規律。在面對新情況的時候就能應用已產生的模型,提供相應的判斷。機器學習的本質任...