一个 class SVM 模型用于文本 classification (scikit-learn)
One class SVM model for text classification (scikit-learn)
我正在尝试对一组文本进行分类,以用于预测测试文本集中的相似文本。我正在使用 one_class_svm 模型。 'author_corpus' 包含单个作者所写的文本列表,'test_corpus' 包含其他作者和原作者所写的文本列表。我正在尝试使用 one_class_svm 来识别测试文本中的作者。
def analyse_corpus(author_corpus, test_corpus):
vectorizer = TfidfVectorizer()
author_vectors = vectorizer.fit_transform(author_corpus)
test_vectors = vectorizer.fit_transform(test_corpus)
model = OneClassSVM(gamma='auto')
model.fit(author_vectors)
test = model.predict(test_vectors)
我收到值错误:
X.shape[1] = 2484 should be equal to 1478, the number of features at training time
在给定训练集中的单个作者的情况下,我如何实施此模型以准确预测测试集中文本的作者身份?任何帮助表示赞赏。
供参考,这里是 one_class_svm 模型指南的 link:https://scikit-learn.org/stable/modules/generated/sklearn.svm.OneClassSVM.html#sklearn.svm.OneClassSVM
您应该在 train
数据上 fit
(训练)模型,并使用在 test
数据上训练的模型进行预测。
fit
:拟合(训练)模型
fit_transform
:拟合模型然后进行预测
transform
: 做出预测
你犯的错误是
test_vectors = vectorizer.fit_transform(test_corpus)
示例用法
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
train = fetch_20newsgroups(subset='train', categories=['alt.atheism'], shuffle=True, random_state=42).data
test = fetch_20newsgroups(subset='train', categories=['alt.atheism', 'soc.religion.christian'], shuffle=True, random_state=42).data
vectorizer = TfidfVectorizer()
train_vectors = vectorizer.fit_transform(train)
test_vectors = vectorizer.transform(test)
model = OneClassSVM(gamma='auto')
model.fit(train_vectors)
test_predictions = model.predict(test_vectors)
我正在尝试对一组文本进行分类,以用于预测测试文本集中的相似文本。我正在使用 one_class_svm 模型。 'author_corpus' 包含单个作者所写的文本列表,'test_corpus' 包含其他作者和原作者所写的文本列表。我正在尝试使用 one_class_svm 来识别测试文本中的作者。
def analyse_corpus(author_corpus, test_corpus):
vectorizer = TfidfVectorizer()
author_vectors = vectorizer.fit_transform(author_corpus)
test_vectors = vectorizer.fit_transform(test_corpus)
model = OneClassSVM(gamma='auto')
model.fit(author_vectors)
test = model.predict(test_vectors)
我收到值错误:
X.shape[1] = 2484 should be equal to 1478, the number of features at training time
在给定训练集中的单个作者的情况下,我如何实施此模型以准确预测测试集中文本的作者身份?任何帮助表示赞赏。
供参考,这里是 one_class_svm 模型指南的 link:https://scikit-learn.org/stable/modules/generated/sklearn.svm.OneClassSVM.html#sklearn.svm.OneClassSVM
您应该在 train
数据上 fit
(训练)模型,并使用在 test
数据上训练的模型进行预测。
fit
:拟合(训练)模型fit_transform
:拟合模型然后进行预测transform
: 做出预测
你犯的错误是
test_vectors = vectorizer.fit_transform(test_corpus)
示例用法
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
train = fetch_20newsgroups(subset='train', categories=['alt.atheism'], shuffle=True, random_state=42).data
test = fetch_20newsgroups(subset='train', categories=['alt.atheism', 'soc.religion.christian'], shuffle=True, random_state=42).data
vectorizer = TfidfVectorizer()
train_vectors = vectorizer.fit_transform(train)
test_vectors = vectorizer.transform(test)
model = OneClassSVM(gamma='auto')
model.fit(train_vectors)
test_predictions = model.predict(test_vectors)