程式清單2-1 k近鄰演算法
本筆記將主要注意力放在理解**上,所以大家看**中的注釋即可
個人程式注釋+python3 部分**改造(針對iteritems只支援python2的情況)
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()
def classify0(inx, dataset, labels, k): #inx: 待測試資料 ; dataset: 訓練樣本集
datasetsize = dataset.shape[0] #to get the rows of the matrix
# to get the xi-yi of the dataset
diffmat = tile(inx, (datasetsize,1)) - dataset #a=[1 2],b=[2 3];tile(a,b) to generate 2*3 matrix when
#the element all is a [1 2]
sqdiffmat = diffmat**2
sqdistances = sqdiffmat.sum(axis=1) #使每行的元素相加,得到測試樣本與各訓練樣本distance**2
#axis=0,按列相加;axis=1,按行相加;
distances = sqdistances**0.5
sorteddistindicies = distances.argsort() #將distance中的元素從小到大排列,
# 提取其對應的index(索引),然後輸出到 sorteddistindicies
#宣告乙個dict:
classcount={}
for i in range(k):
voteilabel = labels[sorteddistindicies[i]]
#classcount= ,初始化後,classcount每得到乙個相同的voteilabel,就+1
classcount[voteilabel] = classcount.get(voteilabel,0) + 1 #當我們獲取字典裡的值的時候,乙個是通過
# 鍵值對,即dict['key'],另乙個就是dict.get()方法
# dict.get(voteilabel,0) = 0, 此處0 to be initiated,
# 之後就沒有作用了。
#items方法是可以將字典中的所有項,以列表方式返回。 iteritems方法與items方法相比作用大致相同,只是它的返回值不是列表,而是乙個迭代器
#python3 中沒有iteritems函式,需要用values()代替,並用list轉為列表
# sortedclasscount = sorted((key_label, value_num), key=operator.itemgetter(1), reverse=true)
#python3中無法使用iteritems,需要對上面這句話改造,我們通過得到兩個list,得到出現頻率最高的label
key_label=list(classcount.keys())
value_num=list(classcount.values())
#label出現頻率由小到大排列,並返回索引index
sortedvalue_num_indicies = argsort(value_num)
#返回頻率最大的label
return key_label[len(sortedvalue_num_indicies)-1]
group,labels = createdataset()
a=classify0([0,0], group,labels,3)
print(a)
編輯執行,得'a' 機器學習實戰筆記(一)
機器學習是通過程式設計讓計算機從資料中進行學習的科學 和藝術 機器學習是讓計算機具有學習的能力,無需進行明確程式設計。亞瑟 薩繆爾,1959 電腦程式利用經驗e學習任務t,效能是p,如果針對任務t的效能p隨著經驗e不斷增長,則稱為機器學習 湯姆 公尺切爾,1997 需要進行大量手工調整或者需要擁有長...
機器學習實戰學習筆記(一)
簡單來說 k 近鄰演算法 knn 採用測量不同特徵值之間的距離演算法進行分類 優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 適用資料範圍 數值型和標稱型 工作原理 存在乙個訓練樣本集,樣本集中每個資料都存在標籤。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資...
機器學習sklearn實戰筆記 一
寫在開始的話 什麼是sklearn?tensorflow又是什麼?sklearn是python的乙個非常流行的機器學習庫.tensorflow是google研發的非常流行的深度學習庫.簡單講,深度學習是機器學習的乙個分類,這裡不再贅述.通過本系列文章你將懂得 了解監督學習,非監督學習,資料處理等在s...