我必须使用支持向量机对一些文本进行分类。在我的训练文件中,我有5个不同的类别。首先,我必须使用“词包”功能进行分类,然后使用SVD功能进行分类,方法是保留90%的总方差。
我正在使用python和sklearn,但我不知道如何创建上述SVD功能。
我的火车组用制表符(\ t)分隔,我的文本在“内容”列中,类别在“类别”列中。
答案 0 :(得分:0)
tf-idf / PCA / SVM工作流程的高级步骤如下:
加载数据(在您的情况下会有所不同):
propertyName
预处理功能和训练分类器:
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)
数据集执行相同的预处理步骤并进行预测。
PS
如果愿意,可以将预处理步骤合并为test
:
Pipeline
并在以后将其用于处理测试数据。