gpt4 book ai didi

python - 使用 Python 进行文本分类

转载 作者:行者123 更新时间:2023-12-01 02:52:55 25 4
gpt4 key购买 nike

我有文本变量中的单词列表及其标签。我喜欢制作一个可以预测新输入文本标签的分类器。

我正在考虑使用Python中的scikit-learn包来使用SVM模型。

我意识到文本需要转换为矢量形式,因此我正在尝试 TfidfVectorizer 和 CountVectorizer。

这是我迄今为止使用 TfidfVectorizer 的代码:

from sklearn import svm
from sklearn.feature_extraction.text import TfidfVectorizer

label = ['organisasi','organisasi','organisasi','organisasi','organisasi','lokasi','lokasi','lokasi','lokasi','lokasi']
text = ['Partai Anamat Nasional','Persatuan Sepak Bola', 'Himpunan Mahasiswa','Organisasi Sosial','Masyarakat Peduli','Malioboro','Candi Borobudur','Taman Pintar','Museum Sejarah','Monumen Mandala']

vectorizer = TfidfVectorizer(min_df=1)

X = vectorizer.fit_transform(text)
y = label

klasifikasi = svm.SVC()

klasifikasi = klasifikasi.fit(X,y) #training

test_text = ['Partai Perjuangan']
test_vector = vectorizer.fit_transform(test_text)

prediksi = klasifikasi.predict([test_vector]) #test

print(prediksi)

我还使用上面相同的代码尝试了 CountVectorizer。两者显示相同的错误结果:

ValueError: setting an array element with a sequence.

如何解决这个问题?谢谢

最佳答案

错误是由这一行引起的:

prediksi = klasifikasi.predict([test_vector])

大多数 scikit 估计器需要形状为 [n_samples, n_features] 的数组。 TfidfVectorizer 的 test_vector 输出已经处于该形状,可供估计器使用。您不需要将其括在方括号中([])。包装使其成为不合适的列表。

尝试像这样使用它:

prediksi = klasifikasi.predict(test_vector)

但即使这样你也会出错。因为这一行:

test_vector = vectorizer.fit_transform(test_text)

在这里,您以与 klasifikasi 估计器学习的方式不同的方式拟合矢量化器。 fit_transform() 只是调用 fit() (学习数据)然后调用 transform() 的快捷方式。对于测试数据,请始终使用 transform() 方法,切勿使用 fit()fit_transform()

所以正确的代码是:

test_vector = vectorizer.transform(test_text)
prediksi = klasifikasi.predict(test_vector)

#Output: array(['organisasi'], dtype='|S10')

关于python - 使用 Python 进行文本分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44537453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com