In [1]:
%matplotlib inline
In [2]:
import matplotlib.pyplot as plt
def plot_confusion_matrix(cm, title='Confusion matrix', normalized=True, cmap=plt.cm.Oranges):
if normalized:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
plt.imshow(cm, interpolation='nearest', cmap=cmap)
plt.title(title)
plt.colorbar()
tick_marks = np.arange(len(iris.target_names))
plt.xticks(tick_marks, iris.target_names, rotation=45)
plt.yticks(tick_marks, iris.target_names)
plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')
In [3]:
import sys
sys.path.append('/home/afruizc/Documents/hacks/')
import svm_bow
In [4]:
from sklearn.cross_validation import KFold
from sklearn.metrics import confusion_matrix
e = svm_bow.Executor()
e.load_data()
e.config_model()
In [7]:
fold = KFold(len(e.train['data']), n_folds=10)
import numpy as np
e.train['data'] = np.array(e.train['data'])
e.train['target'] = np.array(e.train['target'])
def get_indices(data, indices):
result = []
for i in indices:
result.append(data[i])
return result
conf_mat_avg = np.zeros((9, 9))
c = 0
for train, test in fold:
X_train = get_indices(e.train['data'], train)
X_test = get_indices(e.train['data'], test)
y_train = get_indices(e.train['target'], train)
y_test = get_indices(e.train['target'], test)
c += 1
print("Fitting run {}.".format(c))
model = e.param_tunning.fit(X_train, y_train)
print("Predicting...")
y_pred = model.predict(X_test)
conf_matrix = confusion_matrix(y_test, y_pred)
print("Confusion matrix:")
print(conf_matrix)
conf_mat_avg += conf_matrix
In [ ]:
plot_confusion_matrix(conf_mat_avg / 10.0)
In [ ]: