sklearn包源碼分析(一)--neighbors


python如何查看內置函數的用法及其源碼?

在anaconda的安裝目錄下,有一塊會放着我們安裝的所有包,在里面可以找到所有的包

 

找到scikit learn包,進入

 

這里面又有了多個子包,每個子包就是一個主要的算法或功能塊。我們經常使用的一些算法或功能,比如線性模型、集成算法、神經網絡、鄰近neighbors算法,都是在這里面實現的。我們可以進入這些代碼,看看底層到底是如何實現的。

來理一下sklearn中neighbors算法的實現。

knn算法原理

neighbors中,又分為按照不同的問題(分類、回歸),不同的算法(knn、最近形心點、kernel密度)等放在不同的模塊

 這部分內容參考:sklearn中knn相關包

KNN和限定半徑最近鄰法使用的算法algorithm:算法一共有三種,第一種是蠻力實現,第二種是KD樹實現,第三種是球樹實現。這三種方法在K近鄰法(KNN)原理小結中都有講述。

 

 如果用蠻力計算,當樣本量較大時,計算量太大,所以就要考慮節省計算量的方法,KD樹或者球樹都是這樣的方法,主要目的就是節省找到預測樣本的k個最近鄰節點的時間。主要操作就是,1.先建一個kd樹(根據訓練樣本建樹),2.然后把待預測樣本放到kd樹的相應葉子結點,通過比較結點中最短距離與與父節點中最短距離、直到根結點,來找到最近結點,第二輪把剛才找到的結點拋掉后再進行第二輪找到余下樣本中最近的結點,這樣進行k輪,找到k個最近鄰,3.根據k個最近鄰訓練樣本y值給出待預測樣本y值。

以上就是neighbors包中所有的內容,具體的代碼里面的內容參考下面的文章。

sklearn源碼分析系列:neighbors1

sklearn源碼分析系列:neighbors2

下面先粘一個集成算法的文章

sklearn源碼解析:ensemble模型零碎記錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM