sklearn的KNN文档中实例代码的注释
生活随笔
收集整理的這篇文章主要介紹了
sklearn的KNN文档中实例代码的注释
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鏈接是:
http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.NearestNeighbors.html#sklearn.neighbors.NearestNeighbors.radius_neighbors_graph
Example1.py
#-*- encoding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') import numpy as np from sklearn.neighbors import NearestNeighbors samples=[[0,0,2],[1,0,0],[0,0,1]]#-------------------------------------------------- neigh=NearestNeighbors(2,0.4) neigh.fit(samples)#無監督訓練,Samples作為候選列表 print neigh #輸出結果為: #NearestNeighbors(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=2, p=2, radius=0.4) print"--------------------------------------------------" neigh.kneighbors([[0,0,1.3]],2,return_distance=False) print"--------------------------------------------------" nbrs = neigh.radius_neighbors([[0, 0, 1.3]], 0.4, return_distance=False) print nbrs#這個意思是和(0,0,1.3)最近的點是samples列表中的第2個點(從0開始數起) print np.asarray(nbrs[0][0])#相比arrary而言,asarrary不會占用新的內存 #參考鏈接:https://blog.csdn.net/gobsd/article/details/56485177Example2.py
#-*- encoding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8')samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] from sklearn.neighbors import NearestNeighbors neigh = NearestNeighbors(n_neighbors=1) neigh.fit(samples) #這個代碼是無監督訓練,意思是把上面三個點作為下面這個點(1,1,1)的備選項print(neigh.kneighbors([[1., 1., 1.]])) #(array([[ 0.5]]), array([[2]], dtype=int64)) #返回結果的含義是,最近的距離是0.5,離(1,1,1)最近的點是訓練集中的第2個(從第0個開始數數) #也就是說離(1,1,1)最近的點是訓練集中的(1,1,0.5) print"---------------------------------------------------------" X = [[0., 1., 0.], [1., 0., 1.]] print neigh.kneighbors(X, return_distance=False) #結果為[[1] [2]] #離(0,1,0)最近的點是訓練集中的第1個數據(從第0個開始數數) #離(1,0,1)最近的點是訓練集中的第2個數據(從第0個開始數數)Example3.py
#-*- encoding:Utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') import numpy as np samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] from sklearn.neighbors import NearestNeighbors neigh = NearestNeighbors(radius=2.6) neigh.fit(samples) rng = neigh.radius_neighbors([[1., 1., 1.]])print rng print"rng[0][0]=",rng[0][0]#運行結果是[1.5 0.5],因為(0-1)2+(0.5-1)2+(0-1)2=2.25,所以開放后是1.5 print"rng[0][0]=",rng[1][0]#運行結果是[1,2]表示,離(1,1,1)距離在1.5以內的兩個點,分別是第1個點和第2個點print(np.asarray(rng[0][0])) print(np.asarray(rng[1][0])) # The first array returned contains the distances to all points which are closer than 1.6, # while the second array returned contains their indices. # In general, multiple points can be queried at the same time.import numpy print"-------------------下面單獨計算歐氏距離--------------------------------------" def calEuclideanDistance(vec1,vec2): print"vec1-vec2=",vec1-vec2print"numpy.square(vec1-vec2)=",sum(numpy.square(vec1 - vec2))dist = numpy.sqrt(numpy.sum(numpy.square(vec1 - vec2))) return dist v1 = [0,0.5,0] v2 = [1,1,1] v1 = numpy.array(v1) v2 = numpy.array(v2) print calEuclideanDistance(v1,v2)Example4.py
#-*- encoding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8')print"-------------------------------------------" X = [[0], [3], [1]]#這里表示3個點 print"X=",X from sklearn.neighbors import NearestNeighbors neigh = NearestNeighbors(n_neighbors=2,radius=1) neigh.fit(X) print"-------------------------------------------" A = neigh.kneighbors_graph(X) print A.toarray()#返回的這個矩陣的意思就是,如果是屬于前k個最近點,那么就在矩陣上面標記1,否則標記0 # 也即是說,矩陣的每行必定會標記出k個非零值 # [[1. 0. 1.] # [0. 1. 1.] # [1. 0. 1.]]print"-------------------------------------------" A = neigh.kneighbors_graph(X,mode='distance')#當取mode為distance時,會對上面的bool矩陣標記上具體的距離 print A.toarray() # [[0. 0. 1.] # [0. 0. 2.] # [1. 0. 0.]] # 這個運行結果是對上一個運行結果的更進一步的修正。 #可以看做是上一個運行結果的K=1時候的結果,并且把結果中的“標記1”改為具體的兩點間的距離數值#參考鏈接: #http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.NearestNeighbors.html#sklearn.neighbors.NearestNeighbors.radius_neighbors_graph #可能需要圖論的知識再加一個predict_probe函數的用法:
#-*- encoding:utf-8 -*- import sys reload(sys) #這個代碼是監督學習 sys.setdefaultencoding('utf-8') X = [[0], [1], [2], [3]] y = [0, 0, 1, 1] from sklearn.neighbors import KNeighborsClassifier neigh = KNeighborsClassifier(n_neighbors=3) neigh.fit(X, y) print(neigh.predict([[1.1]])) print(neigh.predict_proba([[0]]))#返回概率估計:0被預測為標簽0的概率,0被預測為標簽1的概率 print(neigh.predict_proba([[3]]))#返回概率估計:3被預測為標簽0的概率,3被預測為標簽1的概率注意:
為了簡單起見,上面的例子中,都是一維數據。
總結
以上是生活随笔為你收集整理的sklearn的KNN文档中实例代码的注释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sklearn中knn的各种用法总结
- 下一篇: 用scikit-learn进行LDA降维