using confusion matrix as scoring metric in cross validation in scikit learn

machine-learning, python, scikit-learn

Solution

You could use `cross_val_predict`(See the scikit-learn docs) instead of `cross_val_score`.

instead of doing :

from sklearn.model_selection import cross_val_score
scores = cross_val_score(clf, x, y, cv=10)

you can do :

from sklearn.model_selection import cross_val_predict
from sklearn.metrics import confusion_matrix
y_pred = cross_val_predict(clf, x, y, cv=10)
conf_mat = confusion_matrix(y, y_pred)

Problem

I am creating a pipeline in scikit learn, ``` pipeline = Pipeline([ ('bow', CountVectorizer()), ('classifier', BernoulliNB()), ]) ``` and computing the accuracy using cross validation ``` scores = cross_val_score(pipeline, # steps to convert raw messages into models train_set, # training data label_train, # training labels cv=5, # split data randomly into 10 parts: 9 for training, 1 for scoring scoring='accuracy', # which scoring metric? n_jobs=-1, # -1 = use all cores = faster ) ``` How can I report confusion matrix instead of 'accuracy'?

Original source