如何知道图像数据集是否线性可分?

How to know if the image data-set is linearly separable or not?

在下面的代码中,当我通过 kernel='linear' 时,交叉验证准确率约为 90%,但当我通过 kernel='rbf' 时,交叉验证准确率约为 40%。 rbf 内核不也适用于线性分类吗?
分类问题是对字母(A-Z)i.e.no进行分类。 类=26 个。每张图片(共340张)数据为灰度,大小为:20*10.
因为,数字特征可以通过使用简单的散点图轻松可视化。有没有比使用降维技术可视化图像更好的主意 (e.g.PCA)?
如何知道图像数据集是否线性可分?

from sklearn.svm import SVC

np.random.seed(42)
shuffle_index = np.random.permutation(340)
shuffled_X, shuffled_y = X_train[shuffle_index], y_train[shuffle_index]

model = SVC(kernel='linear', probability=True)
model.fit(shuffled_X, shuffled_y)

print(cross_val_score(model, shuffled_X, shuffled_y, cv=2))

简短回答:您可以非常确定图像数据集是线性可分的(只要它足够小并且"natural"),但是分离是无用的,因为它不会扩展到验证和测试集。

线性内核和 rbf 内核之间的性能差异可能是由于 rbf 内核的强烈过度拟合。如果可能的话,一种解决方案是获取更多数据。显然,这并不总是可行的,所以如果不行,我会坚持使用线性分类器。毕竟,cross-validation 应该用于 select 哪个模型效果最好。

老实说,我很惊讶你可以用 26 类 的这么小的数据获得 90% 的准确率!