機器學習之KNN

2021-09-26 14:36:00 字數 3138 閱讀 1571

以下部落格主要由兩部分構成。一是理論講解,而是**實現(因為工程上使用knn的頻率不是很高,所以**不是目的,一些**中的技巧就顯得很重要了)。

首先knn是什麼?k-nearest neighbors (knn)

以下的均來自『貪心科技』,不是打廣告,純粹是尊重智財權。

因為便於投票分類

怎麼選擇合適的k,一般會用交叉驗證法來選擇合適的k。同時喲啊注意,不要用測試資料來調參。

特徵縮放----線性歸一化(min-max normalization)

x ne

w=(x

−min

(x))

÷(ma

x(x)

−min

(x))

x_ = (x-min(x))\div(max(x)-min(x))

xnew​=

(x−m

in(x

))÷(

max(

x)−m

in(x

))標準差標準化 (z-score normalization)

就是平均值、方差啥的

x ne

w=(x

−mea

n(x)

)÷(s

td(x

))x_=(x-mean(x))\div(std(x))

xnew​=

(x−m

ean(

x))÷

(std

(x))

knn之所以不能廣泛的工程應用的是因為knn處理大資料量的任務困難,主要困難在耗時、k值選擇影響太大。

主要**可以看我的github(來都來了,打顆星啊)

knn

sklearn劃分資料

sklearn劃分資料

from sklearn.model_selection import train_test_split

#把資料分為訓練資料和測試資料

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=

2003

)'''

引數代表含義:

train_data:所要劃分的樣本特徵集

train_target:所要劃分的樣本結果

test_size:樣本佔比,如果是整數的話就是樣本的數量

random_state:是隨機數的種子。

'''

統計非0數目

np.count_nonzero(

)

反函式np.argsort

import numpy as np

x=np.array([1

,4,3

,-1,

6,9]

)y = x.argsort(

)#y=array([3,0,2,1,4,5])

#我們發現argsort()函式是將x中的元素從小到大排列,提取其對應的index(索引),然後輸出到y。例如:x[3]=-1最小,所以y[0]=3,x[5]=9最大,所以y[5]=5。

計數count.most_common

from collections import counter

#統計字串

# top n問題

user_counter = counter(

"abbafafpskaag"

)print

(user_counter.most_common(3)

)#[('a', 5), ('b', 2), ('f', 2)]

print

(user_counter[

'a']

)# 5

#總結:most_common()函式用來實現top n 功能.

生成隨機樣本、資料拼接

# 生成一些隨機樣本

n_points =

100#依據指定的均值和協方差生成資料

x1 = np.random.multivariate_normal([1

,50],

[[1,

0],[

0,10]

], n_points)

x2 = np.random.multivariate_normal([2

,50],

[[1,

0],[

0,10]

], n_points)

#資料拼接

x = np.concatenate(

[x1,x2]

)

product

import itertools

a =(1,

2,3)

b =(

'a',

'b',

'c')

c = itertools.product(a,b)

for elem in c:

print

(elem)(1

,'a')(

1,'b')(1

,'c')(

2,'a')(2

,'b')(

2,'c')(3

,'a')(

3,'b')(3

,'c'

)

還有一些生成熱圖的其他**請看githu

機器學習之KNN

knn主要應用於文字分類 聚類分析 分析 降維等 中心思想是採用測量不同特徵值之間的距離方法進行分類 演算法非常簡單,不過這是乙個監督演算法,訓練資料需要經過人工標記。演算法中心思想是 計算候選樣本到所有訓練樣本之間的距離,選取k個最近距離資料中出現次數最多的分類作為新樣本的類別。from nump...

機器學習之KNN

knn分類演算法 k nearest neighbors classification 即k近鄰演算法 給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分類到這個類中。核心思想 要確定測試樣本屬於哪一類,就尋找所有訓練樣本中與...

機器學習之KNN

knn又叫做k鄰近,即k nearst neighbors,屬於分類任務 用待測樣本較近的幾個樣本來代表待測樣本 k值的選擇 k值較大容易欠擬合,k值較小容易過擬合,可以通過交叉驗證來選取乙個較好的值 距離的度量 一般選用歐幾里得距離 決策的規則 在分類時選用多數表決法或者加權的多數表決法 在做回歸...