2

一个愚蠢的问题:在我用 scikit-learn 训练我的 SVM 之后,我必须使用预测函数:predict(X) 来预测属于哪个类?(http://scikit-learn.org/dev/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC.predict

X参数是图像特征向量?如果我给出未训练的图像(未训练,因为 SVM 要求至少 3 个样本作为类),返回什么?

4

1 回答 1

1

第一句话:“predict() 在 scikit learn 中返回与 SVM 的图像相似性”不是问题。请在 Stack Overflow 条目的标题中提出问题。

第二点:sklearn中SVC类的predict方法返回的不是“图像相似度”而是类分配预测。阅读http://scikit-learn.org文档和教程,了解机器学习中分类和预测的含义。

X参数是图像特征向量?

不,X 不是“图像”特征向量:它是一组图像特征向量,其形状(n_samples, n_features)如您参考的文档中所述。在您的情况下,样本是图像,因此预期的形状是(n_images, n_features). 出于效率原因,预测 API 旨在一次计算多个预测。如果要计算单个预测,则必须将单个特征向量包装在一个带有 shape 的数组中(1, n_features)

例如,如果您有一个名为my_single_image_featuresshape的单个特征向量 (1D),(n_features,)您可以调用 predict :

predictions = clf.predict([my_single_image_features])
my_single_prediction = predictions[0]

请注意变量[]周围的符号以将其转换为二维数组。my_single_image_features

my_single_prediction将是一个整数,其含义取决于您在clf.fit(X_train, y_train)首先调用该方法时提供的整数值。

如果我给出未训练的图像(未训练,因为 SVM 要求至少 3 个样本作为类),返回什么?

图像未经“训练”。仅训练模型。当然,您可以将不属于训练集的样本/图像传递给预测方法。这就是机器学习的全部目的:根据你从过去训练数据中看到的统计规律中学到的知识,对新的看不见的数据进行预测。

于 2013-02-14T10:21:45.750 回答