sklearn超引數搜尋

2021-08-16 23:29:03 字數 2171 閱讀 2500

1,超引數:在模型訓練中,有些引數不能通過對資料進行學習得到,這種引數叫做超引數。比如,神經網路的層數,每層的神經元數量等。

from sklearn.model_selection import gridsearchcv

from sklearn import svm,datasets

defgs

():def

gs():

iris = datasets.load_iris()

parameters = #超引數選擇空間

svr = svm.svc()

clf = gridsearchcv(svr,parameters)

clf.fit(iris.data,iris.target)

print(clf.best_estimator_)#最好的模型

print(clf.best_score_)#最好模型的得分

print(clf.best_params_)#最好模型的引數

import numpy as np

from time import time

from scipy.stats import randint as sp_randint

from sklearn.model_selection import randomizedsearchcv

from sklearn.datasets import load_digits

from sklearn.ensemble import randomforestclassifier

defreport

(results, n_top=3):

#搜尋結果展示

for i in range(1, n_top + 1):

candidates = np.flatnonzero(results['rank_test_score'] == i)

for candidate in candidates:#可能有名次並列的模型

print("model with rank:".format(i))

print("mean validation score:(std:)".format(

results['mean_test_score'][candidate],

results['std_test_score'][candidate]))

print("parameters:".format(results['params'][candidate]))

print("")

defrs

(): digis = load_digits()

x, y = digis.data, digis.target

clf = randomforestclassifier(n_estimators=20)

# 設定想要優化的超引數以及他們的取值分布

param_dist = #同樣需要設定引數空間,不同的是有的引數是乙個分布

# 開啟超引數空間的隨機搜尋

n_iter_search = 20

#隨機搜尋的次數,也就是建立了多少個模型

random_search = randomizedsearchcv(clf, param_distributions=param_dist, n_iter=n_iter_search)

start = time()

random_search.fit(x, y)

print("randomizedsearchcv took %.3f seconds for %d candidates"

"parameter settings." % ((time() - start), n_iter_search))

report(random_search.cv_results_)#cv_results_裡面包括每次迭代得到的模型資訊,常用資訊:rank_test_score(模型得分排名,可能有並列)、mean_test_score(模型的測試得分)、params(模型的引數)

1,這裡給出一點經驗:在實踐中,我們一般根據超引數的重要程度,對重要和次重要的引數先進行優化。具體優化的過程中並不是純粹採用網格和隨機,而是採用一種迭代的思想進行:現在乙個大的範圍裡面進行粗粒度的網格或者隨機搜尋,然後在表現良好的區域內進行更加細粒度的網格或者隨機搜尋。具體迭代次數,達到你想要的結果為止。

sklearn 引數搜尋

引數搜尋 提前設定好引數可以選擇的候選值,然後根據不同引數組合對於模型泛化能力的貢獻,選取最佳的超引數組合。gridsearchcv,基於交叉驗證的網格搜尋法 將要搜尋的引數候選值輸入搜尋器內,搜尋器遍歷每一種引數組合,使用交叉驗證法對比每種引數組合下模型的表現,返回表現最好模型的引數值 優點 自動...

sklearn學習 超參的搜尋

我們上面已經初步得出模型,並且效果看起來還不錯,所以我們現在應該下想辦法進一步優化這乙個模型了。我們在調參的時候需要將資料集分為三部分,分別是 訓練集 驗證集以及測試集。訓練集用於模型的訓練,然後我們根據驗證集的結果去調整出泛化能力較強的模型,最後通過測試集得出模型的泛化能力。如果只把資料分為訓練集...

Tensorflow 七 超引數搜尋

一 超引數 超引數就是每次訓練中提前設定好的值,在訓練過程不會隨著data的輸入而變化,並且會影響結果的引數。比如 網路結構引數 層數,每層寬度,啟用函式等 訓練引數 batch size,學習率等 在深度學習中,超引數眾多,逐一除錯會很繁瑣,所以需要輔助可以迅速定位超引數。二 超引數搜尋策略 超引...