機器學習實戰筆記一 Python3

2021-08-17 18:40:54 字數 2095 閱讀 4927

程式清單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...