python 的混淆后的代码可以还原么
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 的混淆后的代码可以还原么相关的知识,希望对你有一定的参考价值。
参考技术A 你好,混淆后一般无法还原,但是你可以还原成MSIL语言。大多数混淆都是流程也混淆,如果流程也混淆了的话那就更不可能还原了。一般混淆后只能跟踪执行,找出程序的执行算法。如何在python中使用修改后的输出大小绘制混淆矩阵并输出为.svg图像?
【中文标题】如何在python中使用修改后的输出大小绘制混淆矩阵并输出为.svg图像?【英文标题】:How to get a confusion matrix plotted with modified output size and output as .svg image in python? 【发布时间】:2019-11-18 09:00:54 【问题描述】:我想绘制一个混淆矩阵,因为我有两个矩阵,即 y_test_ 和 y_pred。我希望输出图像为“.svg”。因为我必须将图像放在我的项目报告中,所以我希望它的大小可以修改。我希望能够根据我的论文需要修改图像大小。
我已经尝试过“sklearn.metrics”中的“confusion_matrix”函数。但是输出图像比我需要的太小了。此外,图像为“.png”格式。我使用的代码如下所示。
from sklearn.metrics import confusion_matrix
def plot_confusion_matrix(y_true, y_pred, classes, normalize=False, title=None, cmap=plt.cm.Blues):
if not title:
if normalize:
title = 'Normalized confusion matrix'
else:
title = 'Confusion matrix, without normalization'
cm = confusion_matrix(y_true, y_pred)
if normalize:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
print("Normalized confusion matrix")
else:
print('Confusion matrix, without normalization')
print(cm)
fig, ax = plt.subplots()
im = ax.imshow(cm, interpolation='nearest', cmap=cmap)
ax.figure.colorbar(im, ax=ax)
ax.set(xticks=np.arange(cm.shape[1]), yticks=np.arange(cm.shape[0]), xticklabels=classes, yticklabels=classes, title=title,
ylabel='True label',
xlabel='Predicted label')
plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor")
fmt = '.2f' if normalize else 'd'
thresh = cm.max() / 2.
for i in range(cm.shape[0]):
for j in range(cm.shape[1]):
ax.text(j, i, format(cm[i, j], fmt),
ha="center", va="center",
color="white" if cm[i, j] > thresh else "black")
fig.tight_layout()
return ax
plot_confusion_matrix(y_test_, y_pred, classes=class_names, title='Confusion matrix, without normalization')
plot_confusion_matrix(y_test_, y_pred, classes=class_names, normalize=True, title='Normalized confusion matrix')
plt.show()
此代码生成的图像不能清晰地放在纸上,并且不是“.svg”形式。建议我做什么。
【问题讨论】:
【参考方案1】:为了清晰的输出
您还没有提供完整的代码,但是我认为如果您使用的是 seaborn,您可以使用sns.set()
,如下所示
import matplotlib.pyplot as plt
import seaborn as sn
sn.set()
%matplotlib inline
为了将文件保存为 .svg 使用,在调用plt.show()
之前进行以下操作@
plt.savefig("test.svg", format="svg")
或
plt.savefig("test.svg")
【讨论】:
以上是关于python 的混淆后的代码可以还原么的主要内容,如果未能解决你的问题,请参考以下文章