【发布时间】:2017-07-11 18:43:08
【问题描述】:
这个帖子后面跟着下面的帖子:
https://cs.stackexchange.com/questions/70395/what-is-the-effect-of-hidden-layer-size
我想知道我的数据是否线性可分。根据我在上面链接的帖子中收到的评论,我决定对我的数据运行硬 SVM 以查看分类结果。
我的输入数据,X 是 (10000, 128) 的矩阵,输出/目标/类是 (10000, 10)。我有 10 个班级,范围从 1 到 10。
使用以下代码,我尝试了 LogisticRegression()、svm.LinearSVC(C=1, loss='hinge') 和 svm.SVC(kernel='linear', C=1):
dataframe = read_csv('data.txt')
array = dataframe.values
X = array[:, 0:128]
y = array[:,-1]
plt.hist(y, bins='auto') # plt.hist passes it's arguments to np.histogram
plt.title("Histogram with 'auto' bins")
plt.show()
models = []
models.append(('LR', LogisticRegression() ))
models.append(('LSVM', svm.LinearSVC(C=1, loss='hinge') ))
models.append(('LSVM2', svm.SVC(kernel='linear', C=1) ))
results=[]
names=[]
scoring = 'accuracy'
for name, model in models:
kfold = KFold(n_splits=10, random_state=7)
cv_results = cross_val_score(model, X, y, cv=kfold, scoring=scoring)
results.append(cv_results)
names.append(name)
msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
print(msg)
结果如下:
LR: 0.613360 (0.019632)
LSVM: 0.307829 (0.020123)
LSVM2: 1.000000 (0.000000)
我有两个问题:
(1) 我的数据是线性可分的吗?
(2) LSVM2的结果是不是很奇怪? 为此我进一步使用了
models.append(('RBFSVM', svm.SVC(kernel='rbf', gamma=0.7, C=1) ))
models.append(('POLYSVM', svm.SVC(kernel='poly', degree=3, C=1) ))
并收到以下信息:
RBFSVM: 0.797680(.015187)
POLYSVM: 0.100011(0.008113)
你能帮我获得更多的直觉吗?
谢谢,
【问题讨论】:
-
如果您可以发布单独的问题而不是将您的问题合并为一个问题,则最好。这样,它可以帮助回答您的问题的人以及其他寻找您的至少一个问题的人。
标签: machine-learning classification svm