问题描述
我正在使用train_test_split训练和测试我的数据,这是一个有趣的概念,可以将数据分为训练和测试,但是如果我要加载测试数据中没有的某些数据怎么办?
我的问题是train_test_split仅处理数据rand,我想看看外部图像属于什么标签。
当前,我正在从图像中提取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.,224.,70.,223.,175.,195.],[140.,233.,226.,161.,234.,220.,67.,159.,194.],[135.,225.,157.,221.,65.,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,b_test):
clf.fit(A_train,b_train)
print ("Accuracy on training set:")
print (clf.score(A_train,b_train))
train(svc_,b_test)
例如,我将如何测试以下图像的功能?
([[126.,232.,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))
在执行此操作之前,您应该已经训练过分类器。