def plot_classification_report(classification_report, title, cmap='RdBu'): ''' Plot scikit-learn classification report. Extension based on https://stackoverflow.com/a/31689645/395857 ''' lines = classification_report.split('\n') classes = [] plotMat = [] support = [] class_names = [] for line in lines[2 : (len(lines) - 4)]: t = line.strip().split() if len(t) < 2: continue classes.append(t[0]) v = [] for x in t[1: len(t) - 2]: if t[1] != 'avg': v.append(float(x)) support.append(int(t[-1])) class_names.append(t[0]) plotMat.append(v) xlabel = 'Métricas' ylabel = 'Zonas' xticklabels = ['Precisión', 'Exhaustividad'] yticklabels = ['{0} ({1})'.format(class_names[idx], sup) for idx, sup in enumerate(support)] figure_width = 25 figure_height = len(class_names) + 7 correct_orientation = False heatmap(numpy.array(plotMat), title, xlabel, ylabel, xticklabels, yticklabels, figure_width, figure_height, correct_orientation, cmap=cmap)
def plot_classification_report(classification_report, title='Classification Report ', cmap='RdBu'): lines = classification_report.split('\n') classes = [] plotMat = [] support = [] class_names = [] for line in lines[2 : (len(lines) - 2)]: t = line.strip().split() if len(t) < 2: continue classes.append(t[0]) v = [float(x) for x in t[1: len(t) - 1]] support.append(int(t[-1])) class_names.append(t[0]) print(v) plotMat.append(v) print('plotMat: {0}'.format(plotMat)) print('support: {0}'.format(support)) xlabel = 'Metrics' ylabel = 'Classes' xticklabels = ['Precision', 'Recall', 'F1-score'] yticklabels = ['{0} ({1})'.format(class_names[idx], sup) for idx, sup in enumerate(support)] figure_width = 25 figure_height = len(class_names) + 7 correct_orientation = False heatmap(np.array(plotMat), title, xlabel, ylabel, xticklabels, yticklabels, figure_width, figure_height, correct_orientation, cmap=cmap)
def plot_classification_report(classification_report, title='Classification report ', cmap='RdBu', figsize=(12, 9), ax=None): ''' Plot scikit-learn classification report. Extension based on http://stackoverflow.com/a/31689645/395857 ''' from matplotlib.cbook import MatplotlibDeprecationWarning import warnings warnings.simplefilter('ignore', MatplotlibDeprecationWarning) classes = [] plotMat = [] support = [] class_names = [] lines = classification_report.split('\n') for line in lines[2:(len(lines) - 1)]: t = line.strip().replace('avg / total', 'micro-avg').split() if len(t) < 2: continue classes.append(t[0]) v = [float(x) * 100 for x in t[1:len(t) - 1]] support.append(int(t[-1])) class_names.append(t[0]) plotMat.append(v) xlabel = 'Metrics' ylabel = 'Classes' xticklabels = ['Precision', 'Recall', 'F1-score'] yticklabels = [ '{0} ({1})'.format(class_names[idx], sup) for idx, sup in enumerate(support) ] # figure_width = 16 # figure_height = len(class_names) + 8 correct_orientation = True # Plot it out if ax is None: fig, ax = plt.subplots(figsize=figsize) else: fig = plt.gcf() fig.sca(ax) heatmap(np.array(plotMat), title, xlabel, ylabel, xticklabels, yticklabels, ax, correct_orientation, cmap=cmap)
def plot_classification_report(self, classification_report, title='Classification report ', cmap='RdYlGn'): ''' Plot scikit-learn classification report. Extension based on https://stackoverflow.com/a/31689645/395857 ''' func_name = self.plot_classification_report.__name__ lines = classification_report.split('\n') classes = [] plotMat = [] support = [] class_names = [] for line in lines[2:(len(lines) - 2)]: t = line.strip().split() if len(t) < 2: continue classes.append(t[0]) v = [float(x) for x in t[1:len(t) - 1]] support.append(int(t[-1])) class_names.append(t[0]) print(v) plotMat.append(v) self.verbose('plotMat: {0}'.format(plotMat), func_name) self.verbose('support: {0}'.format(support), func_name) xlabel, ylabel = 'Metrics', 'Classes' xticklabels = ['Precision', 'Recall', 'F1-score'] yticklabels = [ '{0} ({1})'.format(class_names[idx], sup) for idx, sup in enumerate(support) ] figure_width = 25 figure_height = len(class_names) + 7 correct_orientation = False ax = DataPlots.heatmap(np.array(plotMat), title, xlabel, ylabel, xticklabels, yticklabels, figure_width, figure_height, correct_orientation, cmap=cmap) return ax
def plot_classification_report(classification_report, model, accuracy): """ Tämä funktio tulostaa luokitteluraportin taulukkoon """ lines = classification_report.split('\n') plotMat = [] class_names = [] for line in lines[2:(len(lines) - 5)]: t = line.strip().split() if len(t) < 2: continue v = ['{0:.2f}'.format(float(x)) for x in t[1:len(t) - 1]] class_names.append(t[0]) plotMat.append(v) lastline = lines[len(lines) - 2] t = lastline.strip().split() lastline_class_name = ['_'.join(t[0:2])] lastline_values = [['{0:.2f}'.format(float(x)) for x in t[2:len(t) - 1]]] fig, (ax1, ax2) = plt.subplots(2, sharey=True) xlabel = 'Metrics' ylabel = 'Classes' xticklabels = ['Precision', 'Recall', 'F1-score'] yticklabels = [ ' {} '.format(class_names[i]) for i in range(len(class_names)) ] the_table = ax1.table(cellText=plotMat, cellLoc='center', rowLabels=yticklabels, colLabels=xticklabels, colWidths=[0.3 for x in range(len(xticklabels))], loc=1) the_table1 = ax2.table(cellText=lastline_values, cellLoc='center', rowLabels=lastline_class_name, colWidths=[0.3 for x in range(len(xticklabels))], loc=1) ax1.axis('tight') ax1.axis('off') ax2.axis('tight') ax2.axis('off') accuracytext = 'Accuracy for classifier {}: {}'.format(model, accuracy) plt.text(-0.062, 0.00, accuracytext) ax1.set(title='Classification report for {}'.format(model))
from sklearn import metrics from sklearn.metrics import accuracy_score,confusion_matrix,classification_report from sklearn.cross_validation import cross_val_score from sklearn.metrics import precision_score Y_pred=best_estimator.predict(X_test) #评价模型 accuracy_score = accuracy_score(Y_test,Y_pred) confusion_matrix = confusion_matrix(Y_test,Y_pred,labels=[0,1,2]) # precision = metrics.precision_score(Y_test,Y_pred)#二分类 # recall = metrics.recall_score(Y_test,Y_pred)#二分类 # f1_score = metrics.f1_score(Y_test,Y_pred)#二分类 precision = metrics.precision_score(Y_test,Y_pred,average="macro")#多分类 recall = metrics.recall_score(Y_test,Y_pred,average="macro")#多分类 f1_score = metrics.f1_score(Y_test,Y_pred,average="macro")#多分类 classification_report = classification_report(Y_test,Y_pred) classification_report_split=classification_report.split() #提取矩阵中的值 endtime = time.time() ''' 输出文件 ''' out="\n 最优分类器:"+str(best_estimator)+\ "\n The confusion matrix is:\n"+str(confusion_matrix) f=open('canshu.txt','a') print(out+'\n\n',file=f) f.close() #储存数据 pred_result[str(name)]=np.transpose(Y_pred) evaluate_result.loc[str(name)]=[accuracy_score ,precision