如何知道图像数据集是否线性可分?
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% 的准确率!
在下面的代码中,当我通过 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% 的准确率!