У меня есть фрейм данных all_data
, который содержит два столбца: Event_Summary
: текстовое описание события и Impact
- классификация.Я использовал SVM для автоматической классификации этих данных - см. Код ниже:
train, test = train_test_split(all_data, test_size=0.2)
count_vect = CountVectorizer(stop_words='english', analyzer = "word")
X_train_counts = count_vect.fit_transform(train.Event_Summary)
tf_transformer = TfidfTransformer(use_idf=False).fit(X_train_counts)
X_train_tf = tf_transformer.transform(X_train_counts)
y_train = train["Impact"]
y_test = test["Impact"]
X_test_counts = count_vect.transform(test.Event_Summary)
tf_transformer = TfidfTransformer(use_idf=False).fit(X_test_counts)
X_test_tf = tf_transformer.transform(X_test_counts)
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svc = svm.SVC(gamma="scale")
clf = GridSearchCV(svc, parameters, cv=5)
clf.fit(X_train_tf, y_train)
pred = clf.predict(X_test_tf)
score = np.mean(pred == y_test)*100
Результат составляет около 70%, что довольно мало, учитывая, что есть только две категории.Из-за этой низкой оценки я хотел бы классифицировать описание только в том случае, если алгоритм находится выше определенного порога достоверности, что это правильная катогаризация (оставляя неопределенные значения для заполнения вручную).
Является ли этовозможно с python / sklearn и если да, то есть ли у кого-нибудь совет, как это сделать?Также, если у кого-то есть рекомендации относительно того, как я могу сделать свою модель более точной?