Evaluate multiple scores on sklearn cross_val_score
<p>I'm trying to evaluate multiple machine learning algorithms with sklearn for a couple of metrics (accuracy, recall, precision and maybe more).</p>

<p>For what I understood from the documentation <a href="http://scikit-learn.org/stable/modules/model_evaluation.html#" rel="noreferrer">here</a> and from the source code(I'm using sklearn 0.17), the <a href="http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.cross_val_score.html#sklearn.cross_validation.cross_val_score" rel="noreferrer">cross_val_score</a> function only receives one scorer for each execution. So for calculating multiple scores, I have to :</p>

<ol>
<li>Execute multiple times</li>
<li><p>Implement my (time consuming and error prone) scorer</p>

<p>I've executed multiple times with this code :</p>

<pre><code>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
</code></pre></li>
</ol>

<p>And I get this output: </p>

<pre><code>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
</code></pre>

<p>Which is ok, but it's slow for my own data. How can I measure all scores ?</p>