我正在使用 sklearn 库中的 ConfusionMatrixDisplay 在我拥有的两个列表上绘制混淆矩阵,虽然结果都是正确的,但有一个细节困扰着我。混淆矩阵中的颜色密度似乎与实例数量匹配,而不是与分类的准确性匹配。
这是我用来绘制混淆矩阵的代码:
target_names = ['Empty', 'Human', 'Dog', 'Dog&Human']
labels_names = [0,1,2,3]
print(classification_report(y_true, y_pred,labels=labels_names, target_names=target_names))
cm = confusion_matrix(y_true, y_pred,labels=labels_names)
disp = ConfusionMatrixDisplay(confusion_matrix=cm,display_labels=target_names)
disp = disp.plot(cmap=plt.cm.Blues,values_format='g')
plt.show()
Run Code Online (Sandbox Code Playgroud)
现在我从报告和混淆矩阵中得到的结果是:
正如您所看到的,“Dog”类和“Dog&Human”类都达到了精度 1,但“Dog”类的颜色是唯一具有浓蓝色的颜色。即使有一些错误分类实例的“空”类也有较深的颜色,使得分类看起来更好。这显然是由于每个类中的数据数量所致,但是,颜色不应该取决于分类的性能而不是正确检测到的实例数量吗?
我尝试标准化混淆矩阵,它解决了问题,但我更喜欢有一个显示实际数字而不是百分比的矩阵。有什么解决办法吗?多谢。
我正在使用Keras对我的数据集进行一些培训,并且每次都要不断运行以找到获得最佳结果所需的时期数是很费时间的。我尝试使用回调来获得最佳模型,但它无法正常工作,通常停止得太早。另外,保存每N个时期对我来说不是一个选择。
我想要做的是在完成某些特定的时期后保存模型。举例来说,结束后epoch = 150,它将另存为model.save(model_1.h5),之后epoch = 152,将另存为,model.save(model_2.h5)等等。
有办法在Keras中实现这一点吗?我已经在寻找一种方法,但到目前为止还没有运气。
感谢您的帮助/建议。
我用的是pycharm。我创建了一个虚拟环境来使用,当我尝试安装 opencv 库时,收到一条错误消息。
我使用 pip 命令安装 openCV:
命令:pip install opencv-python
这是我使用命令时出现的错误消息:
错误: -
Collecting opencv-python
Using cached https://files.pythonhosted.org/packages/e0/6f/237b730227927c15a68ec831a51bc83837bb65d54bf9651c08b474201b9a/opencv-python-4.4.0.40.tar.gz
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... done
Requirement already satisfied: numpy>=1.17.3 in f:\python\rio python\project rio\reco_env\lib\site-packages (from opencv-python) (1.19.1)
Building wheels for collected packages: opencv-python
Building wheel for opencv-python (PEP 517) ... error
Complete output from command "F:\Python\Rio Python\Project Rio\Reco_env\Scripts\python.exe" "F:\Python\Rio Python\Project Rio\Reco_env\lib\site-packages\pip-19.0.3-py3.8.egg\pip\_vendor\pep517\_in_process.py" build_wheel C:\Users\Rio\AppData\Local\Temp\tmpew_pbwjp:
Not searching for unused variables given on the …Run Code Online (Sandbox Code Playgroud)