我试图很好地绘制混淆矩阵,所以我遵循scikit-learn较新版本0.22的built plot混淆矩阵函数。然而,我的混淆矩阵值的一个值是153,但它在混淆矩阵图中显示为1.5e+02:
根据scikit-learn的文档,我发现了一个名为values_format
的参数,但我不知道如何操作这个参数,以便它可以抑制科学计数法。我的代码如下。
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import plot_confusion_matrix
# import some data to play with
X = pd.read_csv("datasets/X.csv")
y = pd.read_csv("datasets/y.csv")
class_names = ['Not Fraud (positive)', 'Fraud (negative)']
# Split the data into a training set and a test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
# Run classifier, using a model that is too regularized (C too low) to see
# the impact on the results
logreg = LogisticRegression()
logreg.fit(X_train, y_train)
np.set_printoptions(precision=2)
# Plot non-normalized confusion matrix
titles_options = [("Confusion matrix, without normalization", None),
("Normalized confusion matrix", 'true')]
for title, normalize in titles_options:
disp = plot_confusion_matrix(logreg, X_test, y_test,
display_labels=class_names,
cmap=plt.cm.Greens,
normalize=normalize, values_format = '{:.5f}'.format)
disp.ax_.set_title(title)
print(title)
print(disp.confusion_matrix)
plt.show()
4条答案
按热度按时间wgx48brx1#
只需从调用参数声明中删除“.format”和{}方括号:
此外,您可以使用
'.5g'
来避免十进制0取自源
hrirmatl2#
如果有人使用
seaborn
的heatmap
来绘制混淆矩阵,并且上面的答案都不起作用。您应该在混淆矩阵seaborn
中关闭科学记数法fmt='g'
,如下所示:lokaqttq3#
只需传递values_format=''示例:
xlpyo6sf4#
在较新的
scikit-learn
版本(version >= 1.0
)中,sklearn.metrics.ConfusionMatrixDisplay.plot
方法使用参数values_format
。scikit-learn ConfusionMatrixDisplay文档