如何测试不在数据集中的图像的准确性
How to test accuracy from images that were not in the dataset
我正在使用 train_test_split 来训练和测试我的数据这是一个将数据分为训练和测试的有趣概念,但是如果我想加载一些不在测试数据中的数据怎么办?
我的问题是 train_test_split 随机处理数据,我想看看外部图像属于什么标签。
目前,我正在从图像中提取 22 个特征并使用这些特征来训练线性 SVC 进行识别,现在根据 train_test_split 我在测试集上得到了 94%,这很好,我想要的要做的只是在不在数据集中的图像上对其进行测试。 train_test_split 从先前加载的数据集接收数据用于训练和测试,但我想加载图像并直接测试它们。
可重现示例:(3 张图像具有 10 个特征)
import sklearn
from sklearn.model_selection import train_test_split
from sklearn import metrics
y_target = [1]*1 + [2]*1 + [3]*1 # number of images per person
data = np.asarray([[152., 236., 228., 168., 236., 224., 70., 223., 175., 195.],
[140., 233., 226., 161., 234., 220., 67., 220., 159., 194.],
[135., 233., 225., 157., 234., 221., 65., 220., 159., 193.]])
svc_ = SVC(kernel='linear', C=0.00005)
A_train, A_test, b_train, b_test = train_test_split(
data, y_target, test_size=0.25, random_state=0)
def train(clf, A_train, A_test, b_train, b_test):
clf.fit(A_train, b_train)
print ("Accuracy on training set:")
print (clf.score(A_train, b_train))
train(svc_, A_train, A_test, b_train, b_test)
例如,我将如何测试下图的特征?
([[126., 232., 225., 149., 231., 222., 60., 218., 152., 191.]])
所以,我正在做的是选择一个特定的图像,对其进行一些编辑,然后我想看看我的分类器在测试这张经过编辑、未经训练且不在数据集,例如,如果我从互联网上挑选一张图片,我将如何测试它?
如果您知道如何从图像中获取您感兴趣的特征,只需加载图像、收集特征,然后根据正确值进行预测和测试。例如
y_test = [[1], [2], [3]]
images = # fill in however you are getting your images into memory here
clf.score(images, y_test)
# or get the predictions by hand and do your own metric
predictions = clf.predict(images)
mse = np.mean(np.square(y_test - predictions))
在执行此操作之前,您应该已经训练了分类器。
我正在使用 train_test_split 来训练和测试我的数据这是一个将数据分为训练和测试的有趣概念,但是如果我想加载一些不在测试数据中的数据怎么办?
我的问题是 train_test_split 随机处理数据,我想看看外部图像属于什么标签。
目前,我正在从图像中提取 22 个特征并使用这些特征来训练线性 SVC 进行识别,现在根据 train_test_split 我在测试集上得到了 94%,这很好,我想要的要做的只是在不在数据集中的图像上对其进行测试。 train_test_split 从先前加载的数据集接收数据用于训练和测试,但我想加载图像并直接测试它们。
可重现示例:(3 张图像具有 10 个特征)
import sklearn
from sklearn.model_selection import train_test_split
from sklearn import metrics
y_target = [1]*1 + [2]*1 + [3]*1 # number of images per person
data = np.asarray([[152., 236., 228., 168., 236., 224., 70., 223., 175., 195.],
[140., 233., 226., 161., 234., 220., 67., 220., 159., 194.],
[135., 233., 225., 157., 234., 221., 65., 220., 159., 193.]])
svc_ = SVC(kernel='linear', C=0.00005)
A_train, A_test, b_train, b_test = train_test_split(
data, y_target, test_size=0.25, random_state=0)
def train(clf, A_train, A_test, b_train, b_test):
clf.fit(A_train, b_train)
print ("Accuracy on training set:")
print (clf.score(A_train, b_train))
train(svc_, A_train, A_test, b_train, b_test)
例如,我将如何测试下图的特征?
([[126., 232., 225., 149., 231., 222., 60., 218., 152., 191.]])
所以,我正在做的是选择一个特定的图像,对其进行一些编辑,然后我想看看我的分类器在测试这张经过编辑、未经训练且不在数据集,例如,如果我从互联网上挑选一张图片,我将如何测试它?
如果您知道如何从图像中获取您感兴趣的特征,只需加载图像、收集特征,然后根据正确值进行预测和测试。例如
y_test = [[1], [2], [3]]
images = # fill in however you are getting your images into memory here
clf.score(images, y_test)
# or get the predictions by hand and do your own metric
predictions = clf.predict(images)
mse = np.mean(np.square(y_test - predictions))
在执行此操作之前,您应该已经训练了分类器。