python3機器學習經典實例-第五章構建推薦引擎22

尋找最近鄰

最近鄰模型是指一個通用演算法類,其目的是根據訓練數據集中的最近鄰數量來做決策。接下來學習如何尋找最近鄰。

修改的內容

修改:input_point = np.array([2.6, 1.7]).reshape(1,-1)#改修改:plt.scatter(input_point[:,0], input_point[:,1], marker=x, s=150, color=k, facecolors=none)#change

詳細步驟代碼

創建一個knn.py文件,導入以下程序包:

import numpy as npimport matplotlib.pyplot as pltfrom sklearn.neighbors import NearestNeighbors

  • 創建一些示例的二維數據:

# Input dataX = np.array([[1, 1], [1, 3], [2, 2], [2.5, 5], [3, 1], [4, 2], [2, 3.5], [3, 3], [3.5, 4]])

  • 我們的目標是對於任意給定點找到其3個最近鄰。定義該參數:

# Number of neighbors we want to findnum_neighbors = 3

  • 定義一個隨機數據點,這個數據點不包括在輸入數據中:

# Input pointinput_point = np.array([2.6, 1.7]).reshape(1,-1)#改

  • 為了尋找最近鄰,用適合的參數定義一個NearestNeighbors對象,並用輸入數據訓練該對象:計算輸入點與輸入數據中所有點的距離:

# Build nearest neighbors modelknn = NearestNeighbors(n_neighbors=num_neighbors, algorithm=ball_tree).fit(X)distances, indices = knn.kneighbors(input_point)

  • 列印出k個最近鄰:畫出輸入數據點,並突出顯示k個最近鄰:

# Print the k nearest neighborsprint ("
k nearest neighbors")for rank, index in enumerate(indices[0][:num_neighbors]): print (str(rank+1) + " -->", X[index])# Plot the nearest neighbors plt.figure()plt.scatter(X[:,0], X[:,1], marker=o, s=25, color=teal)plt.scatter(X[indices][0][:][:,0], X[indices][0][:][:,1], marker=o, s=80, color=r, facecolors=teal)plt.scatter(input_point[:,0], input_point[:,1], marker=*, s=150, color=k, facecolors=yellow)#changeplt.show()

結果輸出out

k nearest neighbors1 --> [2. 2.]2 --> [3. 1.]3 --> [3. 3.]

推薦閱讀:

Scrapy爬蟲框架教程(一)-- Scrapy入門
玩點好玩的--知乎全部話題關係可視化(Docker+Flask+Bootstrap+echarts+uWSGI+Nginx)
給妹子講python--15迭代環境
主題模型初學者指南[Python]
定位後端開發,有哪些書籍值得推薦?

TAG:機器學習 | Python |