今天简单聊聊随机森林算法(RandomForest)做文本分类任务的大致流程:在开始对数据进行建立分类模型的时候,通常需要对这些数据进行评价能不能做? 最简单的办法就是快速搭建一个模型跑一下,拿到结果再来看下这批数据的质量,然后才是用这批数据训练fasttext,bert,llm等大模型.因为数据决定了模型上限.模型不能直接识别自然语言文本,需将其转化为词向量.在随机森林算法里,底层选用的是tfidf指标,tfidf是tf(词频:某一个词在文本中出现的频率)和idf(逆文档频率:某一个词出现的文本数加一整体的倒数乘以总的文本数整体取自然对数再加一)的乘积.思想就是:某个词在一片文章中出现的频率越高,并且在其他文章中很少出现,那么这个词就有很好的类别区分能力,适合做文本分类.导包:from skearn.feature_extraction,text import TfidfVectorizer.TfidfVectorizer(stop_words(读到这些词,自动忽略)).fit_transform(传入已经做完分词处理的数据,中文通常用结巴分词)形成一个稀疏矩阵,根据这些做了一张词表TfidfVectorizer().vocabulary_.这张词表里面是传入文本的所有词(去重过后)和所对应的索引位置.稀疏矩阵的行就是传入文本的行数,列就是这些分词过后的词,词下面就是tfidt权重.为什么稀疏?因为一行里面的所有词相对于列来说太少,好多地方就是零,因此是稀疏的.然后就是拿词表的索引去找权重分数,用feature和label划分数据集,选择RandomForestClassifier()模型,拟合fit(x_train,y_train)即可.后续要做测试的话,模型和向量化器(TfidfVectorizer())要一并保存,用的同一张词表,测试也是文本先经过向量化器,得到结果再传给模型.随机森林算法是一种集成学习,多个弱学习器是并行关系,当处理大样本数量,也并不快.可以通过调整以下参数.n_estimators,max_depth,min_samples_split,min_sample_leaf,max_features,n_jobs等来加快它的运算速度.