以下部落格主要由兩部分構成。一是理論講解,而是**實現(因為工程上使用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值較小容易過擬合,可以通過交叉驗證來選取乙個較好的值 距離的度量 一般選用歐幾里得距離 決策的規則 在分類時選用多數表決法或者加權的多數表決法 在做回歸...