機器學習實戰讀書筆記(一) K近鄰演算法

2021-08-28 06:13:20 字數 2228 閱讀 2742

from numpy import *

import operator

def createdataset():

# 建立資料集

group = array([[1.0,1.1],[1.0,1.1],[0,0],[0,0.1]])

labels = ['a','a','b','b']

return group,labels

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

# inx: 要測試的資料[0,0],[1,1]等

# dataset:資料集

# labels:資料集的標籤

# k:選取的前幾個標籤

# 距離計算

datasetsize = dataset.shape[0]

# print(dataset.ndim) 陣列維數 比如一維陣列和二維陣列

# dataset.shape[0]:行數 dataset.shape[1]:列數

# dataset 是4行2列 dataset.shape是元組 dataset.shape = (4,2)

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

# tile(a,reps) a指待輸入陣列 reps決定a重複的次數

# 用於重複陣列a來構建新的資料

# reps的緯度為d 那麼新陣列的緯度為max(d,a.ndim)

# reps第一位決定行上的重複次數 第二位決定列上的重複次數 如果只有一位只在列上重複

# tile是numpy中的函式:tile將原來的乙個陣列擴充為4個一樣的陣列

# diffmat得到了乙個目標與訓練數值之間的差值

sqdiffmat = diffmat**2

# (x1-x2)^2 各個元素分別平方

sqdistances = sqdiffmat.sum(axis = 1)

# axis=1 表示列相加 即得到 (x1-x2)^2 + (y1-y2)^2

distances = sqdistances ** 0.5

# 對距離平方開根得到測試點到各個資料的距離

sorteddistindicies = distances.argsort()

# 對distances元素從小到大排列 提取對應的index索引輸出到sorteddistindicies

# 本行輸出 [2,3,0,1] 表示第三行(下標為2)距離測試最小 第四行(下標為3)距離測試點其次

classcount = {}

# clsaacount 是個字典型別

for i in range(k):

# 排序從 0-k-1 不包含k

voteilabel = labels[sorteddistindicies[i]]

# 找到排好序的各個點的標籤 存入voteilabel中

classcount[voteilabel] = classcount.get(voteilabel,0)+1

# dict.get(key,default== none) 得到key標籤的值 如果不存在該標籤返回 default 例項中返回到0

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

print(sortedclasscount)

# sorted(iterable[,cmp[,key[.reverse]]])

# iterable 可迭代物件 指定要排序的list 或者iterable

# cmp 比較函式 大於返回1 小於返回-1 等於返回0

# key 主要用於比較的元素 指定可迭代元素進行排序 operator.itemgetter(1)表示以第二個元素排序

# reverse 排序規則 reverse = true降序 reverse = false 公升序 預設公升序 預設是false

# sorted(students, key=lambda student : student[2]) 或者 sorted(students, key=operator.itemgetter(1,2)) 多級排序

return sortedclasscount[0][0]

group,labels = createdataset()

print(classify0([0,0],group,labels,3))

機器學習實戰讀書筆記 二 k 近鄰演算法

knn演算法 1.優點 精度高 對異常值不敏感 無資料輸入假定 2.缺點 計算複雜度高 空間複雜度高。3.適用資料範圍 數值型和標稱型。一般流程 1.收集資料 2.準備資料 3.分析資料 4.訓練演算法 不適用 5.測試演算法 計算正確率 6.使用演算法 需要輸入樣本和結構化的輸出結果,然後執行k ...

k 近鄰演算法 機器學習讀書筆記

優點 精度高 對異常值不敏感 無資料輸入假定。缺點 計算複雜度高 空間複雜度高。適用資料範圍 數值型和標稱型。步驟 1.獲取原始資料集 資料向量和標籤 2.輸入待分類資料向量,計算該向量與每個原始資料集向量的距離 3.對所有距離排序 從近到遠 取前k個最近的原始資料集,檢視其標籤 4.前k個最近資料...

機器學習實戰學習筆記(一) K 近鄰演算法

k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵和樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中特徵最相似資料 最近鄰 的...