import cv2
import numpy as np
import matplotlib.pyplot as plt
pip install matplotlib下面是安裝的成功提示資訊
installing collected packages: six, cycler, kiwisolver, pyparsing, python-dateutil, matplotlib
successfully installed cycler-0.10.0 kiwisolver-1.2.0 matplotlib-3.2.1 pyparsing-2.4.7 python-dateutil-2.8.1 six-1.14.0
knn的(k-nearest neighbor)是一種資料分類,有監督的演算法
特點:分類 ,有監督
knn 是根據事先擬定的距離度量公式,計算未知類別點與k個相鄰資料點的距離;
演算法流程如下:
如下圖訓練集合有3個地方組成 分別提供給20個的 三組空間,在0-35,36-65,66-100 三組隨機小數
# 用於訓練的資料
# train1資料位於(0,35) 訓練資料0-35的資料
train1 = np.random.randint(0, 35, (50, 2)).astype(np.float32)
# train2資料位於(65,100)
train2 = np.random.randint(65, 100, (50, 2)).astype(np.float32)
#訓練集疊加
traindata = np.vstack((train2, train1))
# test為用於測試的隨機數,該數在0到100之間
隨機x點紅色,距離黃色的(型別0會近一點)
def knnclassify(inx, dataset, labels, k):
datasetsize = dataset.shape[0]
diffmax = tile(inx,(datasetsize,1)) - dataset
sqdiffmax = diffmax ** 2 #平方
sqdistances = sqdiffmax.sum(axis=1)
distances = sqdistances**0.5
# argsort 返回由大到小的索引值
sorteddistindicies = distances.argsort()
classcount= {}
for i in range(k):
# 找到最大索引值對應資料的label
voteilabel = labels[sorteddistindicies[i]]
# returns a value for the given key
classcount[voteilabel] = classcount.get(voteilabel,0) + 1
# 按照鍵值的大小排列
sortedclasscount = sorted(classcount.items(), key = operator.itemgetter(1), reverse = true)
return sortedclasscount[0][0]
網上有個例子為約會的例子,分析資料 將 dotntlike ==0,smalldoses==1,largedoses==2
最終會轉化為 陣列型別 ,以此類推,數值為了方便處理,
42770 11.075735 0.089726 dotntlike
8848 3.543989 0.345853 smalldoses
31340 8.123889 1.282880 largedoses
42770 11.075735 0.089726 0
8848 3.543989 0.345853 1
31340 8.123889 1.2828802
執行效果為:
貼**太累了,還是用git方便管理
機器學習之K近鄰
k近鄰演算法在機器學習演算法中是最容易理解並且是最容易使用的演算法,下面是機器學習實戰中對k近鄰演算法的注釋。created on sep 16,2010 knn k nearest neighbors input inx vector to compare to existing dataset ...
K近鄰 Python 機器學習
from numpy import 科學計算包 import operator 運算子模組 defcreatdataset group array 1.0,1.1 1.0,1.0 0,0 0,0.1 建立資料集 labels a a b b 建立標籤 return group,labels inx,...
機器學習 k 近鄰演算法
一.k 近鄰演算法概述 簡單地說,k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。k 近鄰演算法 knn 它的工作原理是 存在乙個樣本資料集,也稱訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將資料的每個特徵與樣本集合中資...