gpt4 book ai didi

python - 如何提高 Python 中不平衡数据集的精度和召回率

转载 作者:行者123 更新时间:2023-11-30 09:32:56 24 4
gpt4 key购买 nike

我建立了一个监督模型来对医学文本数据进行分类(我的输出预测疾病的阳性或阴性发生​​)。数据非常不平衡(130 例阳性病例与 1600 例阴性病例相比,这是可以理解的,因为这种疾病很罕见)。我首先清理数据(删除不必要的单词、词形还原等),然后应用 POS。然后,我将 TfidfVectorizer 和 TfidfTransformer 应用于此清理后的数据。对于分类,我尝试了 SVM 和随机森林,但即使在使用 GridSearchCV 调整参数后,正面数据的精确度和召回率也仅为 56% 和 58%(我还设置了 class_weight = 'balanced')。有人对如何改善这种低精度和召回率有建议吗?非常感谢。

这是我当前的管道(显然,我在运行它时只使用其中一个分类器,但我显示这两个分类器只是为了显示它们的参数)。

pipeline = Pipeline([ 

('vectors', TfidfVectorizer(ngram_range = (2,3),norm = 'l1', token_pattern = r"\w+\b\|\w+" ,min_df = 2, max_features = 1000).fit(data['final'])),

('classifier', RandomForestClassifier(n_estimators = 51, min_samples_split = 8, min_samples_leaf = 2, max_depth = 14, class_weight= 'balanced')),

('classifier', SVC(C = 1000, gamma = 1, class_weight = 'balanced', kernel='linear')),

])

最佳答案

首先,查看分类器看到的数据。测量特征和类别之间的相关性( PIL 逊相关性很好)并检查是否有不相关的特征。例如,“病人”一词通常不被视为停用词,但在医学数据库中,它很可能是一个停用词。

还可以考虑使用更复杂的特征,例如二元组或三元组,甚至添加词嵌入(例如,采用预训练模型,例如 word2vec 或 GloVe,然后采用平均文本向量)。

注意:如今,文本分类主要是通过神经网络和词嵌入来完成的。也就是说,您的数据集不是很大,因此可能不值得更改方法(或者出于某种原因您可能不想这样做)。

关于python - 如何提高 Python 中不平衡数据集的精度和召回率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51371356/

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