機器學習 KNN演算法

2021-09-26 10:27:51 字數 3182 閱讀 5353

概述

knn(k-nearest neighbors),又稱k-近鄰演算法。

簡單來講,k-近鄰演算法採用不同特徵值之間的距離方法進行分類。

2. 前提準備

手動演算法實踐

導包:

import numpy as np

import matplotlib.pyplot as plt

模擬資料集:

建立訓練集對應的標籤(歷史樣本都包含特徵和標籤):

train_label = np.array([0,0,0,0,0,1,1,1,1,1])

繪製歷史樣本的分布:

**樣本在歷史樣本中的分布:

predict_sample = np.array([np.random.random() * 10, np.random.random()

* 10])

畫出分布圖:

計算**樣本與每乙個歷史樣本的距離:

distances = 

for data in train_data:

# (x1 - x2)^2 + (y - y2)^2 開根號,算距離

distance = np.sqrt(np.sum((predict_sample - data) ** 2))

# 將計算出的距離新增到distances集合中

distances = np.array(distances)

取距離**樣本最近的前k個樣本對應的標籤,假設k=5:

k = 5

# .argsort返回的是乙個陣列(陣列中儲存的是資料從小到大的座標)然後用切片的方式取出陣列

predict_label = [train_label[i] for i in distances.argsort()[:k]]

得出結果:

from collections import counter

# .most_common,取出集合中最多的次數的

續:

補充:

anaconda3-2019.07-windows-x86_64not learn to live:

有一次 國王為美麗的公主開宴會

有個士兵在一旁站崗

看到公主經過他的面前

她是絕色佳人 他立刻愛上了她

但卑微的士兵

怎配得上國王的女兒?

有一天 他終於設法接近她

並告訴她 沒有她活不下去

公主被他的深情所感動 她告訴士兵

「如果你能等我100天 且日日夜夜在陽台下等我 百日之後我就是你的」

聽了這話 士兵在陽台下等

一天 兩天 十天 二十天

公主每晚往外探 他仍佇立終宵

風雪雨都抵擋不了他

鳥停在頭上 蜜蜂叮他 他都不動

但是······在第九十天時

士兵全身已······蒼白且瘦削

眼淚從眼眶裡面流出來

他已撐不住了

甚至連睡覺的力氣都沒有

公主一直注視著他

最後 在第九十九天的晚上

士兵站了起來

提起椅子 走了! 走了!

前面的九十九天是愛的表現,最後一天是為了尊嚴。愛,是雙方一起付出的。

機器學習 演算法 KNN

參考 我感覺knn是最簡單的乙個機器學習演算法,實現很簡單,效果也一般般 就是算個euclideam distance,還有一些可以優化的地方,比如可以加權,第二篇文章提到了 python 如下 coding utf 8 created on aug 30,2013 author blacklaw ...

機器學習 KNN 演算法

一 主要目的 在樣本空間中,找到與待估計的樣本最臨近的k個鄰居,用這幾個鄰居的類別來估計待測樣本的類別 二 適用性 樣本容量比較大的類域的自動分類,而樣本容量較小的類域則容易誤分。尤其適用於樣本分類邊界不規則的情況 三 不足 1 當樣本不平衡時,比如乙個類的樣本容量很大,其他類的樣本容量很小,輸入乙...

機器學習 KNN演算法

一 近 鄰 算 法 knn 原理 工 作 原 理 是 存 在 一 個 樣 本 資料 集 合 也 稱 作 訓練 樣 本 集 並 且 樣 本 集 中 每 個 數 據 都 存 在 標 籤 即 我 們 知 道 樣 本 集 中 每 一 數 據與 所 屬 分 類 的 對 應關係 輸 人 沒 有 標 籤 的 新 ...