gpt4 book ai didi

Python 监督 ML 文本以概率分类为不同类别

转载 作者:行者123 更新时间:2023-11-30 09:47:54 26 4
gpt4 key购买 nike

我正在处理一个大型推文数据集,我从中将一小部分数据训练为四个手动分类的类别。每个手动分类大约有二十条推文,而数据集有数万条推文。这是我用来训练模型的代码。

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import TfidfTransformer

tweets = []
labels_list = []
tfidf = TfidfVectorizer(sublinear_tf=True, min_df=5, norm='l2',
encoding='latin-1', ngram_range=(1, 2), stop_words='english')
features = tfidf.fit_transform(tweets).toarray()
labels = labels_list

X_train, X_test, y_train, y_test = train_test_split(tweets, labels,
random_state = 0)
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(X_train)
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)
clf = MultinomialNB().fit(X_train_tfidf, y_train)

每当我输入

print(clf.predict(count_vect.transform(["Some random content"])))

如果我用与训练数据匹配的内容填充内容,机器会准确地输出推文所属的标签。但是,如果我输入完全无意义的内容,它也会输出一些我知道它不属于的随机类别。

我的目标是找到 100 条最有可能属于该类别的推文,但是,上面提到的四个类别并不能代表整个数据集,因此,我需要知道是否存在某种概率阈值用于消除该推文,如果阈值太低,则不将其添加到 100 中?

我尝试研究多项式逻辑回归,但找不到任何类型的概率输出,所以也许我只是做错了什么,或者是否有其他方法我想知道!

最佳答案

您可以在 clf 上使用 .predict_proba() 方法来获取每条推文的每个类的概率。然后,要获取类别 0 的前 100 条推文,您可以按照类别 0 的概率对所有推文进行排序,并选取前 100 条。

例如,您可以使用 pandas 轻松完成此操作:

import pandas as pd
probsd = pd.DataFrame(clf.predict_proba(Xtest_tfidf))
top_100_class_0_tweets = probsd.sort_values(0, ascending=False).head(100).index

关于Python 监督 ML 文本以概率分类为不同类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49913043/

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