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

时间:2019-06-07 09:08:40

标签: python scikit-learn svm

在下面的代码中,当我通过kernel='linear'时,交叉验证的准确性约为90%,但当我通过kernel='rbf'时,交叉验证的准确性约为40%。 rbf内核也不能用于线性分类吗?
分类问题是对字母(A-Z)进行分类,即编号。的类= 26。每个图像(总计:340)数据均为灰度数据,大小为:20 * 10。
同样,通过使用简单的散点图可以轻松地可视化数字特征。有什么比使用降维技术(例如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))

1 个答案:

答案 0 :(得分:0)

简短的回答:您可以确定图像数据集是线性可分离的(只要足够小且“自然”即可),但是这种分离是无用的,因为它不会扩展到验证和测试集。 / p>

在rbf内核的情况下,线性内核和rbf内核之间的性能差异可能是由于过度拟合造成的。一种解决方案是,如果可能的话,获取更多数据。显然,这并不总是可能的,因此,如果没有,我会坚持使用线性分类器。毕竟,应该使用交叉验证来选择哪种模型效果最好。

说实话,我很惊讶您可以使用26个类的小数据获得90%的准确性!