Я пытаюсь оценить несколько алгоритмов машинного обучения с помощью sklearn для нескольких показателей (точность, отзыв, точность и, возможно, больше).
Для чего я понял из документации здесь и из исходного кода (я использую sklearn 0.17), cross_val_score функция получает только один бомбардир для каждого исполнения. Поэтому для вычисления нескольких баллов я должен:
- Выполнять несколько раз
-
Реализовать мой (отнимающий много времени и подверженный ошибкам) бомбардир
Я выполнял несколько раз с помощью этого кода:
from sklearn.svm import SVC from sklearn.naive_bayes import GaussianNB from sklearn.tree import DecisionTreeClassifier from sklearn.cross_validation import cross_val_score import time from sklearn.datasets import load_iris iris = load_iris() models = [GaussianNB(), DecisionTreeClassifier(), SVC()] names = ["Naive Bayes", "Decision Tree", "SVM"] for model, name in zip(models, names): print name start = time.time() for score in ["accuracy", "precision", "recall"]: print score, print " : ", print cross_val_score(model, iris.data, iris.target,scoring=score, cv=10).mean() print time.time() - start
И я получаю этот вывод:
Naive Bayes
accuracy : 0.953333333333
precision : 0.962698412698
recall : 0.953333333333
0.0383198261261
Decision Tree
accuracy : 0.953333333333
precision : 0.958888888889
recall : 0.953333333333
0.0494720935822
SVM
accuracy : 0.98
precision : 0.983333333333
recall : 0.98
0.063080072403
Это нормально, но он медленный для моих собственных данных. Как измерить все баллы?