Я создал свой собственный корпус, так что я расщепляется на учебный текстовый файл, например так:Неверное предсказание с классификатором SVC в scikit-learn?
POS|This film was awesome, highly recommended
NEG|I did not like this film
NEU|I went to the movies
POS|this film is very interesting, i liked a lot
NEG|the film was very boring i did not like it
NEU|the cinema is big
NEU|the cinema was dark
И для тестирования у меня есть еще один текстовый обзор, который Немеченому:
I did not like this film
Тогда я делаю следующее:
import pandas as pd
from sklearn.feature_extraction.text import HashingVectorizer
trainingdata = pd.read_csv('/Users/user/Desktop/training.txt',
header=None, sep='|', names=['labels', 'movies_reviews'])
vect = HashingVectorizer(analyzer='word', ngram_range=(2,2), lowercase=True, n_features=7)
X = vect.fit_transform(trainingdata['movies_reviews'])
y = trainingdata['labels']
TestText= pd.read_csv('/Users/user/Desktop/testing.txt',
header=None, names=['test_opinions'])
test = vect.transform(TestText['test_opinions'])
from sklearn.svm import SVC
svm = SVC()
svm.fit(X, y)
prediction = svm.predict(test)
print prediction
И предсказание:
['NEU']
Тогда что-то, что приходит мне на ум, почему это предсказание неверно ?. Это проблема кода или функция или проблема алгоритма классификации? Я попытался сыграть с этим, и когда я удаляю последний отзыв из текстового файла обучения, я понимаю, что всегда предсказывает последний элемент этого файла. Любая идея, как решить эту проблему ?.
Спасибо за обратную связь, вы имеете в виду что-то вроде это: 'from sklearn import grid_search parameters = {'kernel' :('linear', 'rbf'), 'C': [1, 10]} svm = SVC() clf = grid_search.GridSearchCV (svm, test_matrix) clf.fit (training_matrix, labels) '? – tumbleweed
Да, но вам также нужно передать сетку параметров в конструктор 'GridSearch'. Кроме того, поиск более широкого интервала для С, например. от 10^-5 до 10^5 вместо просто [1, 10] – mbatchkarov