国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

OpenCV闖關記——kNN算法在OpenCV中的實踐

baihe / 2966人閱讀

摘要:什么是算法鄰近算法,或者說最近鄰,分類算法是數據挖掘分類技術中最簡單的方法之一。方法在類別決策時,只與極少量的相鄰樣本有關。

什么是kNN算法

鄰近算法,或者說K最近鄰(kNN,k-NearestNeighbor)分類算法是數據挖掘分類技術中最簡單的方法之一。所謂K最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。
kNN算法的核心思想是如果一個樣本在特征空間中的k個最相鄰的樣本中的大多數屬于某一個類別,則該樣本也屬于這個類別,并具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。 kNN方法在類別決策時,只與極少量的相鄰樣本有關。由于kNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說,kNN方法較其他方法更為適合。

環境準備

安裝Ubuntu16.04桌面版 or 安裝好桌面的服務器版

OpenCV闖關記——Ubuntu16.04 OpenCV Python開發環境搭建

安裝numpy,numpy是什么

pip install numpy
# 在國內往往會安裝失敗,如果安裝失敗,可通過先wget xxx.whl在運行pip install解決
# 比如:
wget https://pypi.python.org/packages/5e/d5/3433e015f3e4a1f309dbb110e8557947f68887fe9b8438d50a4b7790a954/numpy-1.11.2-cp27-cp27mu-manylinux1_x86_64.whl#md5=fa62a11922a9e0776963508fb5254d3d
pip install numpy-1.11.2-cp27-cp27mu-manylinux1_x86_64.whl

安裝matplotlib,matplotlib是什么

pip install matplotlib
# 如安裝失敗的話,解決辦法參考安裝numpy的解決辦法
Coding
# encoding: utf-8

import cv2
import numpy as np
import matplotlib.pyplot as plt

train_data = np.random.randint(0, 100, (25, 2)).astype(np.float32)

responses = np.random.randint(0, 2, (25, 1)).astype(np.float32)

red = train_data[responses.ravel() == 0]
plt.scatter(red[:,0], red[:,1], 80, "r", "^")

blue = train_data[responses.ravel() == 1]
plt.scatter(blue[:,0], blue[:,1], 80, "b", "s")

# plt.show()

newcomer = np.random.randint(0, 100, (1, 2)).astype(np.float32)
plt.scatter(newcomer[:,0], newcomer[:,1], 80, "g", "o")

knn = cv2.ml.KNearest_create()
knn.train(train_data, cv2.ml.ROW_SAMPLE, responses)
ret, results, neighbours, dist = knn.findNearest(newcomer, 5)

print("result: ", results)
print("neighbours: ", neighbours)
print("distance: ", dist)

plt.show()
運行結果

代碼解釋

生成待訓練的數據和標簽

train_data = np.random.randint(0, 100, (25, 2)).astype(np.float32)

responses = np.random.randint(0, 2, (25, 1)).astype(np.float32)

在圖中標記紅色樣本

red = train_data[responses.ravel() == 0]
plt.scatter(red[:,0], red[:,1], 80, "r", "^")

在圖中標記藍色樣本

blue = train_data[responses.ravel() == 1]
plt.scatter(blue[:,0], blue[:,1], 80, "b", "s")

產生待分類數據

newcomer = np.random.randint(0, 100, (1, 2)).astype(np.float32)
plt.scatter(newcomer[:,0], newcomer[:,1], 80, "g", "o")

訓練樣本并產生分類

knn = cv2.ml.KNearest_create()
knn.train(train_data, cv2.ml.ROW_SAMPLE, responses)

給新數據分類

ret, results, neighbours, dist = knn.findNearest(newcomer, 5)

在圖中顯示所有數據

plt.show()
Referer

Understanding k-Nearest Neighbour

wikipedia: k-nearest neighbors algorithm

kNN(K-Nearest Neighbor)最鄰近規則分類

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/38274.html

相關文章

  • opencv python K最近鄰

    Understanding k-Nearest Neighbour 我們將Red系列標記為Class-0(由0表示),將Blue 系列標記為Class-1(由1表示)。 我們創建了25個系列或25個訓練數據,并將它們標記為0級或1級.在Matplotlib的幫助下繪制它,紅色系列顯示為紅色三角形,藍色系列顯示為藍色方塊. import numpy as np import cv2 import ...

    ThinkSNS 評論0 收藏0
  • opencv+mtcnn+facenet+python+tensorflow 實現實時人臉識別

    摘要:實現實時人臉識別本文記錄了在學習深度學習過程中,使用,開發環境為,實現局域網連接手機攝像頭,對目標人員進行實時人臉識別,效果并非特別好,會繼續改進這里是項目地址項目中用到的大文件地址如果各位老爺看完覺得對你有幫助的話,請給個小星星,當前時間 opencv+mtcnn+facenet+python+tensorflow 實現實時人臉識別 Abstract:本文記錄了在學習深度學習過程中,...

    megatron 評論0 收藏0

發表評論

0條評論

baihe

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<