ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 在sklearn countvectorizer中fit_transform和transform之间有什么区别?

2019-05-27 20:42:41  阅读:1002  来源: 互联网

标签:python tokenize scikit-learn random-forest


我刚开始学习随机森林,所以如果这听起来很愚蠢我很抱歉

我最近练习bag of words introduction : kaggle,我想澄清一些事情:

使用vectorizer.fit_transform(“清洁评论列表*上的*”)

现在当我们在火车评论上准备一堆单词数组时,我们在火车评论列表中使用了fit_predict,现在我知道fit_predict做了两件事,>首先,它适合数据并知道词汇,然后在每次审核时生成向量.

因此,当我们使用vectorizer.transform(“清洁列车评论列表”)时,这只是将测试评论列表转换为每个评论的向量.

我的问题是…..为什么不在测试列表上使用fit_transform !!我的意思是在文件中它说它会导致过度拟合,但等待它对我来说是否有意义使用它反正,让我给你我的预期:

当我们不使用fit_transform时,我们基本上是说使用最常用的火车评论词来制作测试评论的特征向量!!为什么不使用测试中最频繁的单词来制作测试特征数组呢?

我的意思是随机关怀吗?如果我们给随机森林火车特征数组和训练特征情绪工作和训练自己,然后给它测试特征数组不会只是给出它的情绪预测.

注意:我可能没有以正确的方式询问,但是当人们试图回答时,我会更新问题更清楚..

解决方法:

您没有对测试数据执行fit_transform,因为当您适应随机森林时,随机森林会根据您提供的功能的值来学习分类规则.如果要应用这些规则来对测试集进行分类,则需要确保使用相同的词汇表以相同的方式计算测试要素.如果训练的词汇和测试特征不同,那么特征就不会真正有意义,因为它们会反映出与训练文档不同的词汇.

现在,如果我们专门讨论CountVectorizer,那么请考虑以下示例,让您的训练数据包含以下3个句子:

>狗是黑色的.
>天空是蓝色的.
>狗在跳舞.

现在为此设置的词汇将是{Dog,is,black,sky,blue,dancing}.现在,您将训练的随机森林将尝试根据这6个词汇表的计数来学习规则.因此,您的功能将是长度为6的向量.现在,如果测试集如下:

>狗是白色的.
>天空是黑色的.

现在,如果您使用fit_transform的测试数据,您的词汇将看起来像{Dog,white,is,Sky,black}.因此,您的每个文档将由长度为5的向量表示,表示每个术语的计数.现在,这就像将苹果与橙子进行比较一样.您将学习先前词汇计数的规则,并且这些规则不能应用于此词汇表.这就是您只适合训练数据的原因.

希望有所帮助!

标签:python,tokenize,scikit-learn,random-forest
来源: https://codeday.me/bug/20190527/1166133.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有