我在管道中定義了一個模型的超引數,該演算法在執行時可能會使用GridsearchCV,如果它這樣做了,那么之前在管道中定義的超引數會發生什么變化
管線pipe_nusvc = Pipeline([('clfnu'/span>, NuSVC(nu=0.5,kernel='rbf'/span>)])
我可以用
添加引數pipe_nusvc['clfnu'].cache_size=300
而且我想過從管道中洗掉添加的cache_size 如果使用GridsearchCV的話
如果GridsearchCV被使用的話
如果使用GridsearchCV,在管道中定義的cache_size=300將仍然存在,沒有辦法在運行程序中洗掉它,那么如果在管道和GridsearchCV中都定義相同的超引數會發生什么呢
uj5u.com熱心網友回復:你不能 "移除"cache_size;它是NuSVC物件的一個引數。你可以將它重置為默認值,但是200已經是默認值了。
如果您為一個引數設定了一個值(無論是在初始化時,使用set_params,還是像您所寫的那樣手動設定),那么它將覆寫默認值,并且它將保持這種狀態直到您改變它。
sklearn有一個叫做 "克隆 "的工具:一個新的相同型別的估計器被回傳,引數設定相同,但沒有擬合/學習的屬性。
在網格搜索中,估計器(本例中為管道)被克隆,并且每個克隆都被分配了一個引陣列合(覆寫了你之前可能設定的任何引數)。 因此,如果你在管道的定義中設定了cache_size,或者后來在你的代碼中設定了cache_size,但你在網格搜索中也設定了cache_size,那么只有網格值才是重要的。 原始的管道,在網格搜索之外,將繼續獨立存在,并有你設定的cache_size,但搜索的cv_results_和best_estimator_將不會。 另一方面,如果你沒有在你的引數網格中設定cache_size,那么你事先設定的任何值都將被用于搜索中的every引陣列合。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/316890.html
標籤:
