【问题标题】:Python supervised ML text classification into different categories with probabilityPython 监督 ML 文本以概率分类为不同类别
【发布时间】:2018-09-29 11:35:27
【问题描述】:

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

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 中?

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

【问题讨论】:

    标签: python machine-learning text twitter supervised-learning


    【解决方案1】:

    您可以在clf 上使用.predict_proba() 方法来获取每条推文的每个类别的概率。然后,要获得前 100 条推文,比如第 0 类,您可以按照第 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
    

    【讨论】:

    • 我正在使用逻辑回归对体育、政治、商业、娱乐等新闻类型进行文本分类,不属于上述类别的文本也被预测为类别之一。如何在机器学习中防止这种情况?还有如何将超出类别的文本添加到 other_category 标签?
    猜你喜欢
    • 2019-02-12
    • 2020-10-03
    • 2016-05-02
    • 2016-08-20
    • 2019-05-09
    • 2017-06-16
    • 2015-05-12
    • 2019-06-04
    • 2012-05-10
    相关资源
    最近更新 更多