更に先程のentryの続きです。
scikit-learn(sklearn)for python の model_selection.cross_val_score() は、データ分割を含めた交差検証を まとめて実行してくれるようです。
試していませんが、今回の cross_val_score()以外に cross_validate()もあるそうです
#!python # -*- coding: utf-8 -*- # refer to https://www.codexa.net/cross_validation/ import pandas as pd import warnings from sklearn import datasets from sklearn import metrics from sklearn import model_selection from sklearn import svm def main(): # warining無視を行わない場合、以下のwarningが大量に表示されます # lib/site-packages/sklearn/utils/validation.py:1143: # DataConversionWarning: A column-vector y was passed when a 1d array was # expected. Please change the shape of y to (n_samples, ), # for example using ravel(). warnings.filterwarnings('ignore') src = datasets.load_breast_cancer() data = pd.DataFrame(src.data, columns=src.feature_names) label = pd.DataFrame(src.target, columns=["label"]) svc = svm.SVC() # defaultの状態でモデル構築 score = model_selection.cross_val_score(svc, data, label, cv=5) # cross_val_score()以外に cross_validate()もあるそうです # c.f. https://www.haya-programming.com/entry/2018/03/31/184557 print('各正解率', score) print('正解率', score.mean()) if __name__ == '__main__': main()
↑こう書くと、↓こう表示されます
各正解率 [0.85087719 0.89473684 0.92982456 0.94736842 0.9380531 ] 正解率 0.9121720229777983