日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言网格搜索,使用逻辑回归时怎么利用网格搜索来查找degree,c等超参数

發布時間:2023/12/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言网格搜索,使用逻辑回归时怎么利用网格搜索来查找degree,c等超参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

非常好的問題。如何將自定義的Pipline對象應用于sklearn內置的網格搜索確實是課程沒有講的一個sklearn使用上的語法細節:)

首先,你在31行的注釋分析的是正確的。由于此時,你在構建grid_search的時候,傳入的算法是log_reg。而log_reg是LogisticRegression的對象,但是創建LogisticRegression是并不需要參數degree,所以,這里會報錯。

正確的做法是,我們要對你創建的PolynomialLogisticRegression這個函數返回的對象進行網格搜索。這個函數的邏輯是返回了一個Pipeline的對象,這個Pipeline的對象中創建PolynomialFeatures時使用了degree這個參數。

為了方便起見,在這里,我為這個PolynomialLogisticRegression添加上了默認值。def?PolynomialLogisticRegression(degree?=?1,?C?=?0.1):

return?Pipeline([

('poly',?PolynomialFeatures(degree=degree)),

('std_scaler',?StandardScaler()),

('log_reg',?LogisticRegression(C=C))

])

poly_log_reg?=?PolynomialLogisticRegression()

我們需要針對poly_log_reg這個對象進行網格搜索:)

但是,在這里,poly_log_reg中包含三部分,每部分都有自己的參數。按照你寫的param_grid,參數名稱直接寫degree和C,GridSearchCV是無法認得這些參數名隸屬于哪一部分的。所以,在這種情況下,我們在設置param_grid的時候,參數名要顯示地表明這個參數屬于哪個部分。表示的方法是:{$Pipeline中的對象名稱}__{$參數名}

即,在Pipeline中的對象名稱,加上雙下換線(__),再加上參數名稱。

所以,我們在網格搜索中,要搜索的兩個參數名稱應該是:poly__degree

log_reg__C

其中的poly和log_reg,是你在實例化這個Pipeline對象的時候,給每一部分起的那個名稱。

綜上,此時我們的param_grid,要這樣聲明:C_PARM?=?[0.1,0.2,0.3,0.4,0.5]

param_grid?=?[

{

'poly__degree':?[i?for?i?in?range(1,?11)],

'log_reg__C':?[i?for?i?in?C_PARM]

}

]

現在,就可以按照以前一樣的方法使用GridSearchCV啦:)grid_search?=?GridSearchCV(poly_log_reg,?param_grid)

grid_search.fit(X_train,y_train)

整理一遍,我們的整個代碼就是這樣的:def?PolynomialLogisticRegression(degree?=?1,C?=?0.1):

return?Pipeline([

('poly',?PolynomialFeatures(degree=degree)),

('std_scaler',?StandardScaler()),

('log_reg',?LogisticRegression(C=C))

])

#?待進行網格搜索的算法

poly_log_reg?=?PolynomialLogisticRegression()

#?準備待搜索的參數列表

C_PARM?=?[0.1,0.2,0.3,0.4,0.5]

param_grid?=?[

{

'poly__degree':?[i?for?i?in?range(1,?11)],

'log_reg__C':?[i?for?i?in?C_PARM]

}

]

#?實例化GridSearchCV進行網格搜索

grid_search?=?GridSearchCV(poly_log_reg,?param_grid)

grid_search.fit(X_train,y_train)

看起來寫了很多,但是自己整理一遍,會發現其實這個語法非常簡單:)

加油!

總結

以上是生活随笔為你收集整理的c语言网格搜索,使用逻辑回归时怎么利用网格搜索来查找degree,c等超参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。