回答編集履歴
1
d
test
CHANGED
@@ -15,3 +15,69 @@
|
|
15
15
|
|
16
16
|
|
17
17
|
[scikit-learnのGridSearchCVでハイパーパラメータ探索 - Qiita](https://qiita.com/saiaron/items/bb96c0f898cd0cbcd788)
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
## 追記
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
> GridSearchCVは、使えるレベルに至っておりませんので、とりあえず、手動でいろいろ値を変化させてみようと思います。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
試行するパラメータを設定して、GridSearchCV オブジェクトを作成し、あとは通常と同じように fit() を呼び出すだけなので、簡単に使えますよ。
|
30
|
+
|
31
|
+
以下にサンプルコードを載せておきます。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
```python
|
36
|
+
|
37
|
+
import pandas as pd
|
38
|
+
|
39
|
+
from sklearn.datasets import load_iris
|
40
|
+
|
41
|
+
from sklearn.model_selection import GridSearchCV, train_test_split
|
42
|
+
|
43
|
+
from sklearn.svm import SVC
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
# データセットを準備する。
|
48
|
+
|
49
|
+
X, y = load_iris(return_X_y=True)
|
50
|
+
|
51
|
+
X_train, X_test, y_train, y_test = train_test_split(
|
52
|
+
|
53
|
+
X, y, test_size=0.15, stratify=y, random_state=0
|
54
|
+
|
55
|
+
)
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
# 試行するパラメータとその値
|
60
|
+
|
61
|
+
params = {"kernel": ["linear", "rbf"], "C": [0.01, 0.1, 1, 10, 100, 1000]}
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
# グリッドサーチする。
|
66
|
+
|
67
|
+
base_model = SVC(gamma="scale")
|
68
|
+
|
69
|
+
clf = GridSearchCV(base_model, params, cv=5, return_train_score=False, iid=False)
|
70
|
+
|
71
|
+
clf.fit(X_train, y_train)
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
# 最も精度がいいモデルを取得する。
|
76
|
+
|
77
|
+
best_clf = clf.best_estimator_
|
78
|
+
|
79
|
+
print("score: {:.2%}".format(best_clf.score(X_test, y_test))) # score: 100.00%
|
80
|
+
|
81
|
+
print(clf.best_params_) # {'C': 1, 'kernel': 'linear'}
|
82
|
+
|
83
|
+
```
|