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