2016-10-26 16 views
1

私はscikit learnで混乱行列を使用しています。 しかし、私はプロット(図A)で1小数しかしたくないです。配列(図B)では、私は!!!!!!!!!!!!!!!とマークしたコードで変更することはできませんどのようにして私の混乱行列のプロットを小数点以下1桁にすることができますか?

Figure A

図B

enter image description here

import itertools 
import numpy as np 
import matplotlib.pyplot as plt 

from sklearn import svm, datasets 
from sklearn.model_selection import train_test_split 
from sklearn.metrics import confusion_matrix 

# import some data to play with 
iris = datasets.load_iris() 
X = iris.data 
y = iris.target 
class_names = iris.target_names 

# Split the data into a training set and a test set 
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) 

# Run classifier, using a model that is too regularized (C too low) to see 
# the impact on the results 
classifier = svm.SVC(kernel='linear', C=0.01) 
y_pred = classifier.fit(X_train, y_train).predict(X_test) 


def plot_confusion_matrix(cm, title='Confusion matrix', cmap=plt.cm.Oranges): 
    plt.imshow(cm, interpolation='nearest', cmap=cmap) 
    plt.title(title) 
    plt.colorbar() 
    tick_marks = np.arange(len(iris.target_names)) 
    plt.xticks(tick_marks, rotation=45) 
    ax = plt.gca() 
    ax.set_xticklabels((ax.get_xticks() +1).astype(str)) 
    plt.yticks(tick_marks) 

    thresh = cm.max()/2. 
    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])): 
     plt.text(j, i, cm[i, j], 
       horizontalalignment="center", 
       color="white" if cm[i, j] > thresh else "black") 

    plt.tight_layout() 
    plt.ylabel('True label') 
    plt.xlabel('Predicted label') 

cm = confusion_matrix(y_test, y_pred) 
np.set_printoptions(precision=1) #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
print('Confusion matrix, without normalization') 
print(cm) 
fig, ax = plt.subplots() 
plot_confusion_matrix(cm) 

plt.show() 

答えて

1

変更

plt.text(j, i, cm[i, j], 

plt.text(j, i, format(cm[i, j], '.1f'), 

.1f精度の小数の文字列に、フロート、cm[i, j]を変換するformatを伝えます。


import itertools 
import numpy as np 
import matplotlib.pyplot as plt 

def plot_confusion_matrix(cm, title='Confusion matrix', cmap=plt.cm.Oranges): 
    plt.imshow(cm, interpolation='nearest', cmap=cmap) 
    plt.title(title) 
    plt.colorbar() 
    tick_marks = np.arange(cm.shape[1]) 
    plt.xticks(tick_marks, rotation=45) 
    ax = plt.gca() 
    ax.set_xticklabels((ax.get_xticks() +1).astype(str)) 
    plt.yticks(tick_marks) 

    thresh = cm.max()/2. 
    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])): 
     plt.text(j, i, format(cm[i, j], '.1f'), 
       horizontalalignment="center", 
       color="white" if cm[i, j] > thresh else "black") 

    plt.tight_layout() 
    plt.ylabel('True label') 
    plt.xlabel('Predicted label') 

cm = np.array([(1,0,0), (0,0.625,0.375), (0,0,1)]) 
np.set_printoptions(precision=1) 
print('Confusion matrix, without normalization') 
print(cm) 
fig, ax = plt.subplots() 
plot_confusion_matrix(cm) 

plt.show() 

enter image description here

関連する問題