Ich versuche Dokumente mit TF-IDF und SVM als trügerisch oder wahrheitsgemäß zu klassifizieren. Ich weiß, dass dies schon einmal gemacht wurde, aber ich bin mir nicht ganz sicher, ob ich es richtig umgesetzt habe. Ich habe einen Korpus von Texten und am Aufbau der TF-IDF wieNiedrige Genauigkeit für TF-IDF mit SVM mit TfidfVectorizer und Scikit-learn
vectorizer = TfidfVectorizer(min_df=1, binary=0, use_idf=1, smooth_idf=0, sublinear_tf=1)
tf_idf_model = vectorizer.fit_transform(corpus)
features = tf_idf_model.toarray()
Und für die Klassifizierung:
seed = random.random()
random.seed(seed)
random.shuffle(features)
random.seed(seed)
random.shuffle(labels)
features_folds = np.array_split(features, folds)
labels_folds = np.array_split(labels, folds)
for C_power in C_powers:
scores = []
start_time = time.time()
svc = svm.SVC(C=2**C_power, kernel='linear')
for k in range(folds):
features_train = list(features_folds)
features_test = features_train.pop(k)
features_train = np.concatenate(features_train)
labels_train = list(labels_folds)
labels_test = labels_train.pop(k)
labels_train = np.concatenate(labels_train)
scores.append(svc.fit(features_train, labels_train).score(features_test, labels_test))
print(scores)
Aber ich bin eine Genauigkeit von ~ 50% erhalten. Mein Korpus ist 1600 Texte.
Sie könnten eine Verwirrungsmatrix oder mehr Metriken als nur die Genauigkeit veröffentlichen. –