Это сообщение сопровождается ниже сообщение:Проверьте мои данные линейно разделимы
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)
у меня 2 вопроса:
(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)
пожалуйста, вы можете помочь мне получить больше интуиции?
Спасибо,
Спасибо за ваш ответ @lejlot. Быстрый вопрос для вас (или, может быть, глупый, поскольку я не разбираюсь в этом): почему мои данные одномерны? У меня есть 128 функций ввода. Будет ли это рассматриваться в измерении моих данных? – tafteh
Я исправил размер входных функций X, который был указан неверно: «X - это матрица (10000, 128), а выходные/целевые/классы (10000, 10) ...» , если это изменит ваш ответ или нет? – tafteh
Это только изменяет конечную точку, ничего больше (которую я сейчас удалил, так как после вашего обновления она больше не применяется). – lejlot