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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

网格搜索法

發布時間:2023/12/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网格搜索法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網格搜索法是指定參數值的一種窮舉搜索方法,通過將估計函數的參數通過交叉驗證的方法進行優化來得到最優的學習算法。

即,將各個參數可能的取值進行排列組合,列出所有可能的組合結果生成“網格”。然后將各組合用于SVM訓練,并使用交叉驗證對表現進行評估。在擬合函數嘗試了所有的參數組合后,返回一個合適的分類器,自動調整至最佳參數組合,可以通過clf.best_params_獲得參數值

?

?

?

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/sinat_32547403/article/details/73008127

交叉驗證與網格搜索

交叉驗證與網格搜索是機器學習中的兩個非常重要且基本的概念,但是這兩個概念在剛入門的時候并不是非常容易理解與掌握,自己開始學習的時候,對這兩個概念理解的并不到位,現在寫一篇關于交叉驗證與網格搜索的文章,將這兩個基本的概念做一下梳理。

網格搜索

網格搜索(Grid Search)名字非常大氣,但是用簡答的話來說就是你手動的給出一個模型中你想要改動的所用的參數,程序自動的幫你使用窮舉法來將所用的參數都運行一遍。決策樹中我們常常將最大樹深作為需要調節的參數;AdaBoost中將弱分類器的數量作為需要調節的參數。

評分方法

為了確定搜索參數,也就是手動設定的調節的變量的值中,那個是最好的,這時就需要使用一個比較理想的評分方式(這個評分方式是根據實際情況來確定的可能是accuracy、f1-score、f-beta、pricise、recall等)

交叉驗證

有了好的評分方式,但是只用一次的結果就能說明某組的參數組合比另外的參數組合好嗎?這顯然是不嚴謹的,上小學的時候老師就告訴我們要求平均��。所以就有了交叉驗證這一概念。下面以K折交叉驗證為例介紹這一概念。

  • 首先進行數據分割?
    將原始數據集分為訓練集和測試集。如下圖以8:2的方式分割:?
    ?
    訓練集使用來訓練模型,測試集使用來測試模型的準確率。?
    注意:絕對不能使用測試集來訓練數據,這相當于考試的時候先讓你把考試的答案背過了,又讓你參加考試。
  • 數據驗真?
    在k折交叉驗證方法中其中K-1份作為訓練數據,剩下的一份作為驗真數據:
  • ?
    這個過程一共需要進行K次,將最后K次使用實現選擇好的評分方式的評分求平均返回,然后找出最大的一個評分對用的參數組合。這也就完成了交叉驗證這一過程。

    ### 舉例 下面使用一個簡單的例子(預測年收入是否大于5萬美元)來進行說明網格搜索與交叉驗證的使用。 數據集來自[UCI機器學習知識庫](https://archive.ics.uci.edu/ml/datasets/Census+Income)。

    import numpy as np import pandas as pd from IPython.display import display from sklearn.preprocessing import MinMaxScaler from sklearn.model_selection import train_test_split from sklearn.metrics import make_scorer, fbeta_score, accuracy_score from sklearn.model_selection import GridSearchCV, KFold%matplotlib inline data = pd.read_csv("census.csv")# 將數據切分成特征和標簽 income_raw = data['income'] features_raw = data.drop('income', axis=1)# 顯示部分數據 # display(features_raw.head(n=1))# 因為原始數據中的,capital-gain 和 capital-loss的傾斜度非常高,所以要是用對數轉換。 skewed = ['capital-gain', 'capital-loss'] features_raw[skewed] = data[skewed].apply(lambda x: np.log(x + 1))# 歸一化數字特征,是為了保證所有的特征均被平等的對待 scaler = MinMaxScaler() numerical = ['age', 'education-num', 'capital-gain', 'capital-loss', 'hours-per-week'] features_raw[numerical] = scaler.fit_transform(data[numerical]) # display(features_raw.head(n=1))# 獨熱編碼,將非數字的形式轉化為數字 features = pd.get_dummies(features_raw) income = income_raw.replace(['>50K', ['<=50K']], [1, 0])# 切分數據集 X_train, X_test, y_train, y_test = train_test_split(features, income, test_size=0.2, random_state=0)# Adaboost from sklearn.ensemble import AdaBoostClassifier clf_Ada = AdaBoostClassifier(random_state=0)# 決策樹 from sklearn.tree import DecisionTreeClassifier clf_Tree = DecisionTreeClassifier(random_state=0)# KNN from sklearn.neighbors import KNeighborsClassifier clf_KNN = KNeighborsClassifier()# SVM from sklearn.svm import SVC clf_svm = SVC(random_state=0)# Logistic from sklearn.linear_model import LogisticRegression clf_log = LogisticRegression(random_state=0)# 隨機森林 from sklearn.ensemble import RandomForestClassifier clf_forest = RandomForestClassifier(random_state=0)# GBDT from sklearn.ensemble import GradientBoostingClassifier clf_gbdt = GradientBoostingClassifier(random_state=0)# GaussianNB from sklearn.naive_bayes import GaussianNB clf_NB = GaussianNB()scorer = make_scorer(accuracy_score)# 參數調優kfold = KFold(n_splits=10) # 決策樹 parameter_tree = {'max_depth': xrange(1, 10)} grid = GridSearchCV(clf_Tree, parameter_tree, scorer, cv=kfold) grid = grid.fit(X_train, y_train)print "best score: {}".format(grid.best_score_) display(pd.DataFrame(grid.cv_results_).T)

    best score: 0.855737070514.dataframe thead tr:only-child th { text-align: right; } .dataframe thead th { text-align: left; } .dataframe tbody tr th { vertical-align: top; }

    ?012345678mean_fit_timemean_score_timemean_test_scoremean_train_scoreparam_max_depthparamsrank_test_scoresplit0_test_scoresplit0_train_scoresplit1_test_scoresplit1_train_scoresplit2_test_scoresplit2_train_scoresplit3_test_scoresplit3_train_scoresplit4_test_scoresplit4_train_scoresplit5_test_scoresplit5_train_scoresplit6_test_scoresplit6_train_scoresplit7_test_scoresplit7_train_scoresplit8_test_scoresplit8_train_scoresplit9_test_scoresplit9_train_scorestd_fit_timestd_score_timestd_test_scorestd_train_score
    0.05625350.06921330.08851260.1102330.1283370.1587190.171240.1936370.223979
    0.002404740.002282120.002215290.00260470.002267720.002542970.002314810.002466960.00256622
    0.751140.8238110.8393450.8399260.8466710.8523920.8515080.8531390.855737
    0.751140.824210.8396280.8405030.8478780.8533290.8552640.8592020.863667
    123456789
    {u’max_depth’: 1}{u’max_depth’: 2}{u’max_depth’: 3}{u’max_depth’: 4}{u’max_depth’: 5}{u’max_depth’: 6}{u’max_depth’: 7}{u’max_depth’: 8}{u’max_depth’: 9}
    987653421
    0.7606410.82670.8438360.8446660.8515750.8557210.8554450.860420.859038
    0.7500840.8238280.8391840.839430.8475380.8529130.8542950.8599470.863233
    0.7581540.8211720.8391380.8424540.8452180.8496410.8477060.8507460.852957
    0.7503610.8244420.8397060.8459110.8500880.8542030.8558310.8614820.864984
    0.7548370.8242120.8402430.840520.84660.8546160.8543390.8540630.856551
    0.7507290.8247180.8390310.8393070.8473230.8522370.8542030.8595780.86397
    0.731620.8206190.8380320.8383080.84660.8507460.8485350.8468770.852957
    0.7533090.8245030.8398290.8401060.8483370.8537420.855370.8581040.863171
    0.7465450.8186840.833610.8338860.839690.8479820.8454950.850470.848811
    0.7516510.8247180.8403210.8405970.8448970.8535580.8583190.8619120.864922
    0.7542840.8261470.8449420.8452180.8540630.8590380.857380.8582090.861802
    0.7507910.8238890.8390610.8393380.8473230.8527290.8541110.8569670.862741
    0.7542840.8253180.8380320.8377560.8454950.8485350.8485350.8521280.857103
    0.7507910.8239810.8398290.8401670.8484290.8537730.8556470.8577660.863141
    0.7497930.8213990.8354990.8354990.8446230.852640.8520870.8537460.85264
    0.751290.8244160.8401110.8404180.8483720.8535010.8549450.8608110.863882
    0.7533870.8263750.8382640.838540.844070.8520870.8529170.8523640.858446
    0.7508910.8238640.8398030.840080.8483720.8530710.8549450.8578010.863391
    0.7478570.8274810.8418580.8424110.848770.8529170.852640.8523640.857064
    0.7515050.8237410.8394040.8396810.8480960.8535630.8549750.8576470.863237
    0.01235830.004427880.005520260.006316910.00531950.01570110.004769910.006228540.0147429
    0.0005292140.0004670910.0003550280.0007606240.0004608290.0005046270.0004462890.0004452560.000449312
    0.007698980.002924640.003331180.003587760.003824960.003244060.003604140.003663890.00363761
    0.0008554820.0003661660.0004189730.001852640.001246980.0005531710.001161510.001687320.000726325

    總結

    以上是生活随笔為你收集整理的网格搜索法的全部內容,希望文章能夠幫你解決所遇到的問題。

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