ランダムサーチ

以下のコードでは、ランダムサーチによって SVM の最適なハイパーパラメータを探索しています.
コード内で空欄になっている行に入る適切なものを1 ~ 3 からそれぞれ選び、空欄 Q1 ~ Q2 を埋めてください.
また、今回は scipy.stats モジュールを使用して 0 ~ 1000 の一様分布の中から、最適なパラメータの値を探索しています.

import scipy.stats
from sklearn.datasets import load_digits
from sklearn.svm import SVC
from ########## import RandomizedSearchCV

[Q1 選択肢]
1. skleran.decomposition
2. sklearn.model_selection
3. sklearn.linear_model

from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score

data = load_digits()
train_X, test_X, train_y, test_y = train_test_split(data.data,
data.target, random_state=42)

#Q2:最適なパラメータ値の候補として、 0 ~ 1000 の一様分布を設定してください.
model_param_set_random = {SVC(): {
“kernel” : [“linear”, “poly”, “rbf”, “sigmoid”],
“C” : ##########,
“decision_function_shape” : [“ovr”, “ovo”],
“random_state” : scipy.stats.randint(0, 100)
}}

[Q2 の選択肢]
1. scipy.stats.uniform(0.0, 1000)
2. scipy.stats.uniform(0.00001, 1000)
3. scipy.stats.uniform(0.1, 100)

max_score = 0
best_param = None

for model, param in model_param_set_random.items():
clf = RandomsearchCV(model, param)
clf.fit(train_X, train_y)
pred_y = clf.predict(test_X)
score = f1_score(test_y, pred_y, average=”micro”)

if max_score < score: max_score = score best_param = clf.best_params_ print("パラメータ : {}".format(best_param)) print("ベストスコア : ", max_score) svm = SVC() svm.fit(train_X, train_y) print() print('調整なし') print(svm.score(test_X, test_y))

Leave a comment

Your email address will not be published. Required fields are marked *