




已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
KNN算法介紹與參數(shù)調(diào)優(yōu)K近鄰法(k-nearest neighbors,KNN)是一種很基本的機器學習方法了,在我們平常的生活中也會不自主的應用。比如,我們判斷一個人的人品,只需要觀察他來往最密切的幾個人的人品好壞就可以得出了。這里就運用了KNN的思想。KNN方法既可以做分類,也可以做回歸,這點和決策樹算法相同。KNN做回歸和分類的主要區(qū)別在于最后做預測時候的決策方式不同。KNN做分類預測時,一般是選擇多數(shù)表決法,即訓練集里和預測的樣本特征最近的K個樣本,預測為里面有最多類別數(shù)的類別。而KNN做回歸時,一般是選擇平均法,即最近的K個樣本的樣本輸出的平均值作為回歸預測值。由于兩者區(qū)別不大,雖然本文主要是講解KNN的分類方法,但思想對KNN的回歸方法也適用。由于scikit-learn里只使用了蠻力實現(xiàn)(brute-force),KD樹實現(xiàn)(KDTree)和球樹(BallTree)實現(xiàn),本文只討論這幾種算法的實現(xiàn)原理。1. KNN算法三要素KNN算法我們主要要考慮三個重要的要素,對于固定的訓練集,只要這三點確定了,算法的預測方式也就決定了。這三個最終的要素是k值的選取,距離度量的方式和分類決策規(guī)則。對于分類決策規(guī)則,一般都是使用前面提到的多數(shù)表決法。所以我們重點是關注與k值的選擇和距離的度量方式。對于k值的選擇,沒有一個固定的經(jīng)驗,一般根據(jù)樣本的分布,選擇一個較小的值,可以通過交叉驗證選擇一個合適的k值。選擇較小的k值,就相當于用較小的領域中的訓練實例進行預測,訓練誤差會減小,只有與輸入實例較近或相似的訓練實例才會對預測結(jié)果起作用,與此同時帶來的問題是泛化誤差會增大,換句話說,K值的減小就意味著整體模型變得復雜,容易發(fā)生過擬合;選擇較大的k值,就相當于用較大領域中的訓練實例進行預測,其優(yōu)點是可以減少泛化誤差,但缺點是訓練誤差會增大。這時候,與輸入實例較遠(不相似的)訓練實例也會對預測器作用,使預測發(fā)生錯誤,且K值的增大就意味著整體的模型變得簡單。一個極端是k等于樣本數(shù)m,則完全沒有分類,此時無論輸入實例是什么,都只是簡單的預測它屬于在訓練實例中最多的類,模型過于簡單。對于距離的度量,我們有很多的距離度量方式,但是最常用的是歐式距離,即對于兩個n維向量x和y,兩者的歐式距離定義為:Dx,y=i=1n(xi-yi)2大多數(shù)情況下,歐式距離可以滿足我們的需求,我們不需要再去操心距離的度量。當然我們也可以用他的距離度量方式。比如曼哈頓距離,定義為:Dx,y=i=1n|xi-yi|更加通用點,比如閔可夫斯基距離(Minkowski Distance),定義為:Dx,y=pi=1n|xi-yi|p可以看出,歐式距離是閔可夫斯基距離在p=2時的特例,而曼哈頓距離是p=1時的特例。2. KNN算法蠻力實現(xiàn)從本節(jié)起,我們開始討論KNN算法的實現(xiàn)方式。首先我們看看最想當然的方式。既然我們要找到k個最近的鄰居來做預測,那么我們只需要計算預測樣本和所有訓練集中的樣本的距離,然后計算出最小的k個距離即可,接著多數(shù)表決,很容易做出預測。這個方法的確簡單直接,在樣本量少,樣本特征少的時候有效。但是在實際運用中很多時候用不上,為什么呢?因為我們經(jīng)常碰到樣本的特征數(shù)有上千以上,樣本量有幾十萬以上,如果我們這要去預測少量的測試集樣本,算法的時間效率很成問題。因此,這個方法我們一般稱之為蠻力實現(xiàn)。比較適合于少量樣本的簡單模型的時候用。既然蠻力實現(xiàn)在特征多,樣本多的時候很有局限性,那么我們有沒有其他的好辦法呢?有!這里我們講解兩種辦法,一個是KD樹實現(xiàn),一個是球樹實現(xiàn)。3. KNN算法之KD樹實現(xiàn)原理KD樹算法沒有一開始就嘗試對測試樣本分類,而是先對訓練集建模,建立的模型就是KD樹,建好了模型再對測試集做預測。所謂的KD樹就是K個特征維度的樹,注意這里的K和KNN中的K的意思不同。KNN中的K代表最近的K個樣本,KD樹中的K代表樣本特征的維數(shù)。為了防止混淆,后面我們稱特征維數(shù)為n。KD樹算法包括三步,第一步是建樹,第二部是搜索最近鄰,最后一步是預測。1.1 KD樹的建立我們首先來看建樹的方法。KD樹建樹采用的是從m個樣本的n維特征中,分別計算n個特征的取值的方差,用方差最大的第k維特征nk來作為根節(jié)點。對于這個特征,我們選擇特征nk的取值的中位數(shù)nkv對應的樣本作為劃分點,對于所有第k維特征的取值小于nkv的樣本,我們劃入左子樹,對于第k維特征的取值大于等于nkv的樣本,我們劃入右子樹,對于左子樹和右子樹,我們采用和剛才同樣的辦法來找方差最大的特征來做更節(jié)點,遞歸的生成KD樹。 具體流程如下圖:比如我們有二維樣本6個,(2,3),(5,4),(9,6),(4,7),(8,1),(7,2),構(gòu)建kd樹的具體步驟為:1)找到劃分的特征。6個數(shù)據(jù)點在x,y維度上的數(shù)據(jù)方差分別為6.97,5.37,所以在x軸上方差更大,用第1維特征建樹。2)確定劃分點(7,2)。根據(jù)x維上的值將數(shù)據(jù)排序,6個數(shù)據(jù)的中值(所謂中值,即中間大小的值)為7,所以劃分點的數(shù)據(jù)是(7,2)。這樣,該節(jié)點的分割超平面就是通過(7,2)并垂直于:劃分點維度的直線x=7;3)確定左子空間和右子空間。 分割超平面x=7將整個空間分為兩部分:x=7的部分為左子空間,包含3個節(jié)點=(2,3),(5,4),(4,7);另一部分為右子空間,包含2個節(jié)點=(9,6),(8,1)。4)用同樣的辦法劃分左子樹的節(jié)點(2,3),(5,4),(4,7)和右子樹的節(jié)點(9,6),(8,1)。最終得到KD樹。最后得到的KD樹如下:1.2 KD樹搜索最近鄰當我們生成KD樹以后,就可以去預測測試集里面的樣本目標點了。對于一個目標點,我們首先在KD樹里面找到包含目標點的葉子節(jié)點。以目標點為圓心,以目標點到葉子節(jié)點樣本實例的距離為半徑,得到一個超球體,最近鄰的點一定在這個超球體內(nèi)部。然后返回葉子節(jié)點的父節(jié)點,檢查另一個子節(jié)點包含的超矩形體是否和超球體相交,如果相交就到這個子節(jié)點尋找是否有更加近的近鄰,有的話就更新最近鄰。如果不相交那就簡單了,我們直接返回父節(jié)點的父節(jié)點,在另一個子樹繼續(xù)搜索最近鄰。當回溯到根節(jié)點時,算法結(jié)束,此時保存的最近鄰節(jié)點就是最終的最近鄰。從上面的描述可以看出,KD樹劃分后可以大大減少無效的最近鄰搜索,很多樣本點由于所在的超矩形體和超球體不相交,根本不需要計算距離。大大節(jié)省了計算時間。我們用3.1建立的KD樹,來看對點(2,4.5)找最近鄰的過程。先進行二叉查找,先從(7,2)查找到(5,4)節(jié)點,在進行查找時是由y = 4為分割超平面的,由于查找點為y值為4.5,因此進入右子空間查找到(4,7),形成搜索路徑,但 (4,7)與目標查找點的距離為3.202,而(5,4)與查找點之間的距離為3.041,所以(5,4)為查詢點的最近點;以(2,4.5)為圓心,以3.041為半徑作圓,如下圖所示。可見該圓和y = 4超平面交割,所以需要進入(5,4)左子空間進行查找,也就是將(2,3)節(jié)點加入搜索路徑中得;于是接著搜索至(2,3)葉子節(jié)點,(2,3)距離(2,4.5)比(5,4)要近,所以最近鄰點更新為(2,3),最近距離更新為1.5;回溯查找至(5,4),直到最后回溯到根結(jié)點(7,2)的時候,以(2,4.5)為圓心1.5為半徑作圓,并不和x = 7分割超平面交割,如下圖所示。至此,搜索路徑回溯完,返回最近鄰點(2,3),最近距離1.5。對應的圖如下:1.3 KD樹預測有了KD樹搜索最近鄰的辦法,KD樹的預測就很簡單了,在KD樹搜索最近鄰的基礎上,我們選擇到了第一個最近鄰樣本,就把它置為已選。在第二輪中,我們忽略置為已選的樣本,重新選擇最近鄰,這樣跑k次,就得到了目標的K個最近鄰,然后根據(jù)多數(shù)表決法,如果是KNN分類,預測為K個最近鄰里面有最多類別數(shù)的類別。如果是KNN回歸,用K個最近鄰樣本輸出的平均值作為回歸預測值。4.KNN算法之球樹實現(xiàn)原理KD樹算法雖然提高了KNN搜索的效率,但是在某些時候效率并不高,比如當處理不均勻分布的數(shù)據(jù)集時,不管是近似方形,還是矩形,甚至正方形,都不是最好的使用形狀,因為他們都有角。一個例子如下圖:如果黑色的實例點離目標點星點再遠一點,那么虛線圓會如紅線所示那樣擴大,導致與左上方矩形的右下角相交,既然相 交了,那么就要檢查這個左上方矩形,而實際上,最近的點離星點的距離很近,檢查左上方矩形區(qū)域已是多余。于此我們看見,KD樹把二維平面劃分成一個一個矩形,但矩形區(qū)域的角卻是個難以處理的問題。為了優(yōu)化超矩形體導致的搜索效率的問題,牛人們引入了球樹,這種結(jié)構(gòu)可以優(yōu)化上面的這種問題。我們現(xiàn)在來看看球樹建樹和搜索最近鄰的算法。4.1球樹的建立球樹,顧名思義,就是每個分割塊都是超球體,而不是KD樹里面的超矩形體。我們看看具體的建樹流程:1) 先構(gòu)建一個超球體,這個超球體是可以包含所有樣本的最小球體。2) 從球中選擇一個離球的中心最遠的點,然后選擇第二個點離第一個點最遠,將球中所有的點分配到離這兩個聚類中心最近的一個上,然后計算每個聚類的中心,以及聚類能夠包含它所有數(shù)據(jù)點所需的最小半徑。這樣我們得到了兩個子超球體,和KD樹里面的左右子樹對應。3)對于這兩個子超球體,遞歸執(zhí)行步驟2). 最終得到了一個球樹??梢钥闯鯧D樹和球樹類似,主要區(qū)別在于球樹得到的是節(jié)點樣本組成的最小超球體,而KD得到的是節(jié)點樣本組成的超矩形體,這個超球體要與對應的KD樹的超矩形體小,這樣在做最近鄰搜索的時候,可以避免一些無謂的搜索。4.2球樹搜索最近鄰使用球樹找出給定目標點的最近鄰方法是首先自上而下貫穿整棵樹找出包含目標點所在的葉子,并在這個球里找出與目標點最鄰近的點,這將確定出目標點距離它的最近鄰點的一個上限值,然后跟KD樹查找一樣,檢查兄弟結(jié)點,如果目標點到兄弟結(jié)點中心的距離超過兄弟結(jié)點的半徑與當前的上限值之和,那么兄弟結(jié)點里不可能存在一個更近的點;否則的話,必須進一步檢查位于兄弟結(jié)點以下的子樹。檢查完兄弟節(jié)點后,我們向父節(jié)點回溯,繼續(xù)搜索最小鄰近值。當回溯到根節(jié)點時,此時的最小鄰近值就是最終的搜索結(jié)果。從上面的描述可以看出,KD樹在搜索路徑優(yōu)化時使用的是兩點之間的距離來判斷,而球樹使用的是兩邊之和大于第三邊來判斷,相對來說球樹的判斷更加復雜,但是卻避免了更多的搜索,這是一個權衡。5.KNN算法的擴展這里我們再討論下KNN算法的擴展,限定半徑最近鄰算法。有時候我們會遇到這樣的問題,即樣本中某系類別的樣本非常的少,甚至少于K,這導致稀有類別樣本在找K個最近鄰的時候,會把距離其實較遠的其他樣本考慮進來,而導致預測不準確。為了解決這個問題,我們限定最近鄰的一個最大距離,也就是說,我們只在一個距離范圍內(nèi)搜索所有的最近鄰,這避免了上述問題。這個距離我們一般稱為限定半徑。接著我們再討論下另一種擴展,最近質(zhì)心算法。這個算法比KNN還簡單。它首先把樣本按輸出類別歸類。對于第 L類的Cl個樣本。它會對這Cl個樣本的n維特征中每一維特征求平均值,最終該類別所有維度的n個平均值形成所謂的質(zhì)心點。對于樣本中的所有出現(xiàn)的類別,每個類別會最終得到一個質(zhì)心點。當我們做預測時,僅僅需要比較預測樣本和這些質(zhì)心的距離,最小的距離對于的質(zhì)心類別即為預測的類別。這個算法通常用在文本分類處理上。6.KNN算法小結(jié)KNN算法是很基本的機器學習算法了,它非常容易學習,在維度很高的時候也有很好的分類效率,因此運用也很廣泛,這里總結(jié)下KNN的優(yōu)缺點。KNN的主要優(yōu)點有:1) 理論成熟,思想簡單,既可以用來做分類也可以用來做回歸。2) 可用于非線性分類。3) 訓練時間復雜度比支持向量機之類的算法低,僅為O(n)。4) 和樸素貝葉斯之類的算法比,對數(shù)據(jù)沒有假設,準確度高,對異常點不敏感。5) 由于KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合。6)該算法比較適用于樣本容量比較大的類域的自動分類,而那些樣本容量較小的類域采用這種算法比較容易產(chǎn)生誤分。KNN的主要缺點有:1)計算量大,尤其是特征數(shù)非常多的時候2)樣本不平衡的時候,對稀有類別的預測準確率低3)KD樹,球樹之類的模型建立需要大量的內(nèi)存4)使用懶散學習方法,基本上不學習,導致預測時速度比起邏輯回歸之類的算法慢5)相比決策樹模型,KNN模型可解釋性不強4.scikit-learn K近鄰法類庫使用小結(jié)4.1scikit-learn 中KNN相關的類庫概述在scikit-learn 中,與近鄰法這一大類相關的類庫都在sklearn.neighbors包之中。KNN分類樹的類是KNeighborsClassifier,KNN回歸樹的類是KNeighborsRegressor。除此之外,還有KNN的擴展,即限定半徑最近鄰分類樹的類RadiusNeighborsClassifier和限定半徑最近鄰回歸樹的類RadiusNeighborsRegressor, 以及最近質(zhì)心分類算法NearestCentroid。在這些算法中,KNN分類和回歸的類參數(shù)完全一樣。限定半徑最近鄰法分類和回歸的類的主要參數(shù)也和KNN基本一樣。比較特別是的最近質(zhì)心分類算法,由于它是直接選擇最近質(zhì)心來分類,所以僅有兩個參數(shù),距離度量和特征選擇距離閾值,比較簡單,因此后面就不再專門講述最近質(zhì)心分類算法的參數(shù)。另外幾個在sklearn.neighbors包中但不是做分類回歸預測的類也值得關注。kneighbors_graph類返回用KNN時和每個樣本最近的K個訓練集樣本的位置。radius_neighbors_graph返回用限定半徑最近鄰法時和每個樣本在限定半徑內(nèi)的訓練集樣本的位置。NearestNeighbors是個大雜燴,它即可以返回用KNN時和每個樣本最近的K個訓練集樣本的位置,也可以返回用限定半徑最近鄰法時和每個樣本最近的訓練集樣本的位置,常常用在聚類模型中。4.2K近鄰法和限定半徑最近鄰法類庫參數(shù)小結(jié)本節(jié)對K近鄰法和限定半徑最近鄰法類庫參數(shù)做一個總結(jié)。包括KNN分類樹的類KNeighborsClassifier,KNN回歸樹的類KNeighborsRegressor, 限定半徑最近鄰分類樹的類RadiusNeighborsClassifier和限定半徑最近鄰回歸樹的類RadiusNeighborsRegressor。這些類的重要參數(shù)基本相同,因此我們放到一起講。參數(shù)KNeighborsClassifierKNeighborsRegressorRadiusNeighborsClassifierRadiusNeighborsRegressorKNN中的K值n_neighborsK值的選擇與樣本分布有關,一般選擇一個較小的K值,可以通過交叉驗證來選擇一個比較優(yōu)的K值,默認值是5。如果數(shù)據(jù)是三維一下的,如果數(shù)據(jù)是三維或者三維以下的,可以通過可視化觀察來調(diào)參。不適用于限定半徑最近鄰法限定半徑最近鄰法中的半radius不適用于KNN半徑的選擇與樣本分布有關,可以通過交叉驗證來選擇一個較小的半徑,盡量保證每類訓練樣本其他類別樣本的距離較遠,默認值是1.0。如果數(shù)據(jù)是三維或者三維以下的,可以通過可視化觀察來調(diào)參。近鄰權重weights主要用于標識每個樣本的近鄰樣本的權重,如果是KNN,就是K個近鄰樣本的權重,如果是限定半徑最近鄰,就是在距離在半徑以內(nèi)的近鄰樣本的權重??梢赃x擇uniform,distance 或者自定義權重。選擇默認的uniform,意味著所有最近鄰樣本權重都一樣,在做預測時一視同仁。如果是distance,則權重和距離成反比例,即距離預測目標更近的近鄰具有更高的權重,這樣在預測類別或者做回歸時,更近的近鄰所占的影響因子會更加大。當然,我們也可以自定義權重,即自定義一個函數(shù),輸入是距離值,輸出是權重值。這樣我們可以自己控制不同的距離所對應的權重。一般來說,如果樣本的分布是比較成簇的,即各類樣本都在相對分開的簇中時,我們用默認的uniform就可以了,如果樣本的分布比較亂,規(guī)律不好尋找,選擇distance是一個比較好的選擇。如果用distance發(fā)現(xiàn)預測的效果的還是不好,可以考慮自定義距離權重來調(diào)優(yōu)這個參數(shù)。KNN和限定半徑最近鄰法使用的算法algorithm算法一共有三種,第一種是蠻力實現(xiàn),第二種是KD樹實現(xiàn),第三種是球樹實現(xiàn)。這三種方法在K近鄰法(KNN)原理小結(jié)中都有講述,如果不熟悉可以去復習下。對于這個參數(shù),一共有4種可選輸入,brute對應第一種蠻力實現(xiàn),kd_tree對應第二種KD樹實現(xiàn),ball_tree對應第三種的球樹實現(xiàn), auto則會在上面三種算法中做權衡,選擇一個擬合最好的最優(yōu)算法。需要注意的是,如果輸入樣本特征是稀疏的時候,無論我們選擇哪種算法,最后scikit-learn都會去用蠻力實現(xiàn)brute。個人的經(jīng)驗,如果樣本少特征也少,使用默認的auto就夠了。 如果數(shù)據(jù)量很大或者特征也很多,用auto建樹時間會很長,效率不高,建議選擇KD樹實現(xiàn)kd_tree,此時如果發(fā)現(xiàn)kd_tree速度比較慢或者已經(jīng)知道樣本分布不是很均勻時,可以嘗試用ball_tree。而如果輸入樣本是稀疏的,無論你選擇哪個算法最后實際運行的都是brute。停止建子樹的葉子節(jié)點閾值leaf_size這個值控制了使用KD樹或者球樹時, 停止建子樹的葉子節(jié)點數(shù)量的閾值。這個值越小,則生成的KD樹或者球樹就越大,層數(shù)越深,建樹時間越長,反之,則生成的KD樹或者球樹會小,層數(shù)較淺,建樹時間較短。默認是30. 這個值一般依賴于樣本的數(shù)量,隨著樣本數(shù)量的增加,這個值必須要增加,否則不光建樹預測的時間長,還容易過擬合。可以通過交叉驗證來選擇一個適中的值。如果使用的算法是蠻力實現(xiàn),則這個參數(shù)可以忽略。距離度量metricK近鄰法和限定半徑最近鄰法類可以使用的距離度量較多,一般來說默認的歐式距離(即p=2的閔可夫斯基距離)就可以滿足我們的需求。可以使用的距離度量參數(shù)有:a) 歐式距離“euclidean”: i=1n(xi-yi)2b) 曼哈頓距離 “manhattan”:i=1n|xi-yi|c) 切比雪夫距離“chebyshev”:max|xi-yi|(i=1,2,n)d)閔可夫斯基距離“minkowski”(默認參數(shù)):pi=1n|xi-yi|p,,p=1為哈曼頓距離,p=2是歐式距離。e) 帶權重閔可夫斯基距離“wminkowski”:pi=1nw*|xi-yi|p f) 標準化歐式距離“seuclidean”: 即對于各特征維度做了歸一化以后的歐式距離。此時各樣本特征維度的均值為0,方差為1.g) 馬氏距離“mahalanobis”: x-yTS-1(x-y),其中,S-1為樣本協(xié)方差矩陣的逆矩陣。當樣本分布獨立時,S為單位矩陣,此時馬氏距離等同于歐式距離。還有一些其他不是實數(shù)的距離度量,一般在KNN之類的算法用不上,這里也就不列了。距離度量附屬參數(shù)pp是使用距離度量參數(shù) metric 附屬參數(shù),只用于閔可夫斯基距離和帶權重閔可夫斯基距離中p值的選擇,p=1為曼哈頓距離, p=2為歐式距離。默認為2距離度量其他附屬參數(shù)metric_params一般都用不上,主要是用于帶權重閔可夫斯基距離的權重,以及其他一些比較復雜的距離度量的參數(shù)。并行處理任務數(shù)n_jobs主要用于多核CPU時的并行處理,加快建立KNN樹和預測搜索的速度。一般用默認的-1就可以了,即所有的CPU核都參與計算。不適用于限定半徑最近鄰法異常點類別選擇outlier_label不適用于KNN主要用于預測時,如果目標點半徑內(nèi)沒有任何訓練集的樣本點時,應該標記的類別,不建議選擇默認值 none,因為這樣遇到異常點會報錯。一般設置為訓練集里最多樣本的類別。不適用于限定半徑最近鄰回歸4.3使用KNeighborsRegressor做回歸的實例1數(shù)據(jù)情況:boston數(shù)據(jù)集2.建模的過程(1)標準化數(shù)據(jù)(2)初步搜索 n_neighbors,algorithm(3)搜索 leaf_size、wights(4)搜索p值(5)用最佳訓練的參數(shù)進行預測3.涉及核心內(nèi)容 自定義scoring的使用1. 自定義評價函數(shù)評價函數(shù)的輸入是實際的label(y_true)和模型的輸出label(y_pred)def my_custom_loss_func(y_true, y_pred): :param y_true:實際label :param y_pred: 預測的label :return: r2 =0.5* r2_score(y_true,y_pred) return r22.scoring函數(shù)的制作通過 greater_is_better 參數(shù)設定scoring的值的優(yōu)化方向通過 greater_is_better 參數(shù)設定scoring的值的優(yōu)化方向score = make_scorer(my_custom_loss_func, greater_is_better=True)from sklearn.datasets import load_bostonfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScalerimport numpy as npfrom sklearn.neighbors import KNeighborsRegressorfrom sklearn.model_selection import GridSearchCVfrom sklearn.metrics import r2_score,mean_absolute_error,mean_squared_error,make_scorerdef search_best_param(clf,X,y,param_base,param_grid,scoring=r2): clf.set_params(*param_base) gs = GridSearchCV( estimator=clf, param_grid=param_grid, scoring=scoring, n_jobs=-1, iid=False, cv=5) gs.fit(X,y) param_base.update(gs.best_params_) print(nbest param:%s%str(gs.best_params_)+ best score:%s%str(gs.best_score_) return param_basedef model_select_step(clf,X,y,param_grids,scoring=r2): param_base=clf.get_params() for param_grid in param_grids: param_base = search_best_param(clf, X, y, param_base=param_base, param_grid=param_grid, scoring=scoring) return param_base自定義scoringdef my_custom_loss_func(y_true, y_pred): :param y_true:實際label :param y_pred: 預測的label :return: r2 =0.5* r2_score(y_true,y_pred) return r2if _name_=_main_: boston = load_boston() X = boston.data y = boston.target X_tra
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 26732-2025輪胎翻新工藝
- GB/T 20405.4-2025失禁者用尿液吸收劑聚丙烯酸酯高吸水性粉末第4部分:用加熱失重法測定水分含量
- 個人租賃簡易門面合同文本
- 3《雪地里的小畫家》第一課時 教學設計-2024-2025學年語文一年級上冊(統(tǒng)編版)
- 聯(lián)合制作電視劇合同模板
- 勞動合同經(jīng)典模板
- 離婚子女撫養(yǎng)事項合同協(xié)議
- 度三溝白酒購銷合同協(xié)議
- 市政基礎設施人機勞務分包合同
- 度戰(zhàn)略合作合同細則解析
- 《工業(yè)廢水臭氧催化氧化深度處理技術規(guī)程》(T-SDEPI 030-2022)
- 多元化與平等待遇管理制度
- 2025年統(tǒng)編版中考語文課內(nèi)文言文《唐雎不辱使命》三年中考試題+模擬題(學生版+解析)
- 生日快樂祝福含生日歌相冊課件模板
- 本科生畢業(yè)論文寫作指導-課件
- 2024-2025學年人教版數(shù)學六年級上冊 期末綜合卷(含答案)
- 《商務溝通-策略、方法與案例》課件 第九章 職場溝通
- 微電網(wǎng)經(jīng)濟性研究-洞察分析
- 2020-2024年五年高考地理真題分類匯編專題02(地球運動)+解析版
- 水文與水資源勘測基礎知識單選題100道及答案解析
- 銷售沙盤演練培訓
評論
0/150
提交評論