Возможности для опорных векторов (SVM) - PullRequest
0 голосов
/ 03 февраля 2019

Я должен классифицировать некоторые тексты с помощью опорных векторов.В моем файле поезда у меня есть 5 разных категорий.Сначала я должен выполнить классификацию с помощью функции «Bag of Words», а затем с помощью функции SVD, сохранив 90% от общей дисперсии.

Я использую python и sklearn, но я не знаю, как создать вышеуказанную функцию SVD.

Мой набор поездов отделен табуляцией (\ t), мои тексты находятся в 'Столбец «Содержимое» и категории находятся в столбце «Категория».

1 Ответ

0 голосов
/ 03 февраля 2019

Шаги высокого уровня для рабочего процесса tf-idf / PCA / SVM следующие:

Загрузка данных (в вашем случае будет другим):

from sklearn.datasets import fetch_20newsgroups
categories = ['alt.atheism', 'soc.religion.christian']
newsgroups_train = fetch_20newsgroups(subset='train', categories=categories)
train_text = newsgroups_train.data
y = newsgroups_train.target

Функции предварительной обработки иклассификатор поездов:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.decomposition import PCA
from sklearn.svm import SVC

vectorizer = TfidfVectorizer()
X_tfidf = vectorizer.fit_transform(train_text)

pca = PCA(.8)
X = pca.fit_transform(X_tfidf.todense())

clf = SVC(kernel="linear")
clf.fit(X,y)

Наконец, выполните те же шаги предварительной обработки для test набора данных и сделайте прогнозы.

PS

При желании вы можете объединить шаги предварительной обработкив Pipeline:

from sklearn.preprocessing import FunctionTransformer
from sklearn.pipeline import Pipeline
preproc = Pipeline([('tfidf',TfidfVectorizer())
                    ,('todense', FunctionTransformer(lambda x: x.todense(), validate=False))
                    ,('pca', PCA(.9))])
X = preproc.fit_transform(train_text)

и использовать его позже для работы с тестовыми данными.

...