Pythonで機械学習 (k-分割交差検証)

現在最も注目されていて、今後ますます発展を遂げるであろう機械学習、深層学習について時間がある時に少しずつ勉強していこうと思い、下記参考書を購入。ブログでもアウトプットしていこう。

機械学習は大きく3種類「教師あり学習」「教師なし学習」「強化学習」に分類されるが、その中でも最も適用例が多い「教師あり学習」を勉強。

今日は 「k-分割交差検証」Cross Validation をTryしてみた。

k-分割交差検証は モデルの評価検証の一つで、データを K 個に分割して、K−1 個で訓練をして残りの 1 個でテストする、というのを K 回繰り返す。

データ量が十分でない場合でも、全てのデータを有効に活用できるが、訓練とテストを K 回行うため、計算時間がかかる。

以下のようなイメージ?

次に、python3.6で k-分割交差検証の実践してみた。
scikit-learn に予め用意されている iris データセットを分割してモデル評価した結果。今回の例では5つに分割。

# ライブラリ import

from sklearn import svm, datasets, cross_validation

iris = datasets.load_iris()
X = iris.data
y = iris.target

#機械学習アルゴリズムSVM
svc = svm.SVC(C=1, kernel="rbf", gamma=0.001)

#交差検証法(cross validation)をもとおいて スコアを求める
#内部では X, y が それぞれ 「X_train, X_test, y_train, y_test」のように分割されて処理されます
scores = cross_validation.cross_val_score(svc, X, y , cv=5)

print(scores)
print("平均スコア :", scores.mean())
# 実行結果 (5つの評価結果と平均スコア)
[0.86666667 0.96666667 0.83333333 0.96666667 0.93333333]
平均スコア : 0.9133333333333334

今回の"note"を気に入って頂けましたら、是非サポートをお願いいたします!