如何检查我的数据集的预测
How to check the prediction of my dataset
我有 3 个数据集文件夹,
1- Face Images
2- Non-Face Images
3- Testing Dataset
我使用 SVM 训练我的数据集,使用面部图像作为 1
,非面部图像作为 -1
。我的文件经过训练并以 .xml
格式保存。我检查了来自测试数据集的一些图像的预测,这些图像是正负数据集的混合。现在我正在尝试创建一个混淆矩阵。我从 here 那里读到过它。
在我的测试数据集中,图像几乎有 50 张,(35 张正片和 15 张负片)命名为 1_F.jpg、2_F.jpg、3_NF ... 50NF.jpg。这里 F 代表人脸,NF 代表非人脸。这些实际上是图像的名称。
Can I call it a labeled dataset?
当我将混淆矩阵应用于文件夹中的所有图像时,我如何创建混淆矩阵,我如何知道它是否正确预测了图像?
要创建混淆矩阵,请查看 Python 中的 scikit-learn
库。假设 y_actual
是您的测试标签集,与您的测试集中的图像对应的特征存储在一个名为 X_test
的变量中,您训练的分类器为 clf
,一种可能的方式构造混淆矩阵如下:
from sklearn.metrics import confusion_matrix
y_pred = clf.predict(X_test)
## Obtaining confusion matrix below
CM = confusion_matrix(y_pred, y_actual)
我可以称其为带标签的数据集吗?
如果没有测试集的原始标签,您将无法确认您的预测。从混淆矩阵中,您可以得出有关模型性能的不同指标。
鉴于您已根据是否存在人脸为测试集中的图像命名,您可以使用它来获得 y_actual
import glob
import os
import numpy as np
def obtain_y_pred(test_folder):
label = {'F':1, 'NF':-1}
test_images = glob.glob(os.path.join(test_folder, '*.jpg'))
y_test_ = []
for image in test_images:
y_test_.append(label[image.split('/')[-1].split('.')[0].split('_')[-1]])
return np.array(y_test_)
总而言之,您首先需要知道测试集的标签。然后,您需要在 训练集 上训练模型后,评估模型在 测试集 上的表现。
我有 3 个数据集文件夹,
1- Face Images
2- Non-Face Images
3- Testing Dataset
我使用 SVM 训练我的数据集,使用面部图像作为 1
,非面部图像作为 -1
。我的文件经过训练并以 .xml
格式保存。我检查了来自测试数据集的一些图像的预测,这些图像是正负数据集的混合。现在我正在尝试创建一个混淆矩阵。我从 here 那里读到过它。
在我的测试数据集中,图像几乎有 50 张,(35 张正片和 15 张负片)命名为 1_F.jpg、2_F.jpg、3_NF ... 50NF.jpg。这里 F 代表人脸,NF 代表非人脸。这些实际上是图像的名称。
Can I call it a labeled dataset?
当我将混淆矩阵应用于文件夹中的所有图像时,我如何创建混淆矩阵,我如何知道它是否正确预测了图像?
要创建混淆矩阵,请查看 Python 中的 scikit-learn
库。假设 y_actual
是您的测试标签集,与您的测试集中的图像对应的特征存储在一个名为 X_test
的变量中,您训练的分类器为 clf
,一种可能的方式构造混淆矩阵如下:
from sklearn.metrics import confusion_matrix
y_pred = clf.predict(X_test)
## Obtaining confusion matrix below
CM = confusion_matrix(y_pred, y_actual)
我可以称其为带标签的数据集吗?
如果没有测试集的原始标签,您将无法确认您的预测。从混淆矩阵中,您可以得出有关模型性能的不同指标。
鉴于您已根据是否存在人脸为测试集中的图像命名,您可以使用它来获得 y_actual
import glob
import os
import numpy as np
def obtain_y_pred(test_folder):
label = {'F':1, 'NF':-1}
test_images = glob.glob(os.path.join(test_folder, '*.jpg'))
y_test_ = []
for image in test_images:
y_test_.append(label[image.split('/')[-1].split('.')[0].split('_')[-1]])
return np.array(y_test_)
总而言之,您首先需要知道测试集的标签。然后,您需要在 训练集 上训练模型后,评估模型在 测试集 上的表现。