sklearn—無監督最近鄰

 

無監督最近鄰

NearestNeighbors (最近鄰)實現了 unsupervised nearest neighbors learning(無監督的最近鄰學習)。 它爲三種不一樣的最近鄰算法提供統一的接口:BallTreeKDTree, 還有基於 sklearn.metrics.pairwise 的 brute-force 算法。算法的選擇可經過關鍵字 'algorithm' 來控制, 並必須是 ['auto', 'ball_tree', 'kd_tree', 'brute'] 其中的一個。當默認值設置爲 'auto' 時,算法會嘗試從訓練數據中肯定最佳方法。有關上述每一個選項的優缺點,參見 `Nearest Neighbor Algorithms`_ 。html

找到最近鄰

爲了完成找到兩組數據集中最近鄰點的簡單任務, 能夠使用 sklearn.neighbors 中的無監督算法:算法

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
# k個最近的點中包含本身
nbrs = NearestNeighbors(n_neighbors=3, algorithm='ball_tree').fit(X)
#n_neighbors 指定包括本樣本在內距離本樣本最近的 n 個點
#algorithm   指定最臨近算法
distances,indices = nbrs.kneighbors(X)
#distances len(X)*n_neighbors的向量,每一行表示距離本樣本距離由小到大的樣本的index
#distances len(X)*n_neighbors的向量,每一行表示最鄰近的n_neighbors個樣本距離本樣本點的距離
# k個最近點的下標,按升序排列
print(indices)
print(distances)
plt.figure()
plt.scatter(X[:,0],X[:,1])
plt.xlim(X[:,0].min()-1,X[:,0].max()+1)
plt.ylim(X[:,1].min()-1,X[:,1].max()+1)
plt.title("Unsupervised nearest neighbors")
plt.show()

固然KDtree和ball_tree在sklearn中還有單獨的實現方式具體操做請看連接apache

http://sklearn.apachecn.org/cn/0.19.0/modules/neighbors.html#unsupervised-neighbors1.6.1.2學習

sklearn.neighbors.KNeighborsClassifier

X = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X, y)
KNeighborsClassifier(...)
print(neigh.predict([[1.1]]))

print(neigh.predict_proba([[4]]))
相關文章
相關標籤/搜索