为什么训练集用fit_transform()而测试集用transform()及sklearn.feature_extraction.text.CountVectorizer API详解

2023-11-19

真正讲明白的

https://blog.csdn.net/yyhhlancelot/article/details/85097656

 

API

https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html#sklearn.feature_extraction.text.CountVectorizer

 

真正讲明白的博客内容

Sklearn 里面的fit transform fit_transform的区别(为什么训练集用fit_transform()而测试集用transform()?)
 yyhhlancelot 最后发布于2018-12-19 15:34:40 阅读数 1820  收藏 12
展开
在国内网上找了很多资料,感觉都说的不明不白不清不楚,很多博客都是根据原始document来进行阐述,使用的时候也是按照格式使用,最后去外网感觉终于有点搞明白了来头。

参考:

https://stackoverflow.com/questions/23838056/what-is-the-difference-between-transform-and-fit-transform-in-sklearn
https://stackoverflow.com/questions/38692520/what-is-the-difference-between-fit-transform-and-transform-in-sklearn-countvecto
https://stackoverflow.com/questions/43675665/when-scale-the-data-why-the-train-dataset-use-fit-and-transform-but-the-te
https://sebastianraschka.com/faq/docs/scale-training-test.html
推荐大家一定点进第四个去阅读一下,如果觉得英文阅读不方便,也可以看一下我接下来的解释。

首先要提及的一点,这些方法都是用来对数据进行尺度化(标准化)。

我们使用Z-score方法将数据进行正态分布化:

对训练集使用这些方法:

fit():计算数据的参数,(均值),(标准差),并存储在对象中(例如实例化的CountVectorizer()等)。
transform():将这些参数应用到数据集,进行标准化(尺度化)。
fit_transform():将前两种方法合并,fit + transform,然后对数据集使用。
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_tranform(X_train)
sc.tranform(X_test)
不管是StandardScaler或是其他类,道理都是相通的,所以不用纠结类的问题。

这里就要提出来一个问题,为什么test数据集只使用transfrom()?

按照通俗的解释是 对测试集使用通过计算训练集相同的参数来进行尺度化,那到底是为什么呢?

下面我们用一个例子进行说明:

假设我的训练集有三个棒子的样本,它们分别是:

样本1:10cm  ---> class 2
样本2:20cm  ---> class 2
样本3:30cm  ---> class 1
通过给出的数据,我们可以算出以下参数:

mean : 20
std : 8.2
我们对数据进行标准化,得到以下:

样本1:-1.21  ---> class 2
样本2:0  ---> class 2
样本3:1.21  ---> class 1
现在我们对数据做一个假设结论,当小于0.6的就归到class 2,反之就归类到 class 1。这个假设看起来比较有意义,符合数据分布。

接下来,我们看看测试集的样本:

样本4:5cm  ---> class ?
样本5:6cm  ---> class ?
样本6:7cm  ---> class ?
这是“未标准化的”数据,如果我们不对它们进行标准化,那按我们刚刚的假设,那它们都属于class 1了?肯定不可能是吧,好的,那现在假如我们“重新”对它们计算参数,注意了,这里我们是针对测试集计算参数!

我们将测试集标准化后,得到了一下:

样本4:-1.21 
样本5:0 
样本6:1.21 
巧了,和刚刚训练集得到的一模一样。然后我们用我们刚刚训练集训练得到的结论,对它们分类:

样本4:-1.21  ---> class 2
样本5:0  ---> class 2
样本6:1.21  ---> class 1
奇怪的事情发生了,感觉不太对是吧?

那我们用训练集得到的参数对它们进行标准化呢:

样本4:-1.837
样本5:-1.715
样本6:-1.592
按我们开始的假设结论进行分类:

样本4:-1.837 ---> class 2
样本5:-1.715 ---> class 2
样本6:-1.592 ---> class 2
这下似乎看起来有意义多了,我们训练集似乎训练了一个比较说的通的模型(刚刚的假设结论~)。所以,你经常看到为什么大家在说,如果对test_data进行fit_transform()就会"overfitting"就是这么来的。
————————————————
版权声明:本文为CSDN博主「yyhhlancelot」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yyhhlancelot/article/details/85097656

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么训练集用fit_transform()而测试集用transform()及sklearn.feature_extraction.text.CountVectorizer API详解 的相关文章

  • sklearn中的归一化方法StandardScaler中的fit、transform和fit_transform

    StandardScaler类 常用的数据归一化方式 减去平均值 然后通过标准差映射到均至为0的空间内 系统会记录每个输入参数的平均数和标准差 以便数据可以还原 sklearn preprocessing StandardScaler能够轻
  • 数据处理中的归一化与反归一化

    一 定义 数据归一化 标准化 是数据预处理的一项基础工作 不同评价指标往往具有不同的量纲和量纲单位 为避免影响数据分析结果 消除指标之间的量纲影响 须对数据进行标准化处理 数据的归一化 normalization 是将数据按比例缩放 使之落
  • 【sklearn】fit()、transform()和fit_transform()的区别

    fit Method calculates the parameters mu and sigma and saves them as internal objects 解释 简单来说 就是求得训练集X的均值 方差 最大值以及最小值等这
  • 4-3 嵌入法

    文章目录 4 3 嵌入法 基础知识 项目案例 动手练习 4 3 嵌入法 请参考 数据准备和特征工程 中的相关章节 调试如下代码 基础知识 import pandas as pd from sklearn model selection im
  • sklearn库简述-zstarling

    文章目录 模型的选择与评估 划分数据集 评估模型 监督学习 最近邻 支持向量机 SVM 决策树 集成方法 朴素贝叶斯 线性回归 随机梯度下降 判别分析 模型的选择与评估 划分数据集 from sklearn model selection
  • dataframe数据按行做线性拟合

    转载 https blog csdn net m0 37324740 article details 79529963 数据形式 目的 对每一行进行线性拟合 计算斜率和评估斜率的不确定性 方法 调用python的sklearn包中的线性回归
  • pip 安装 sklearn or scikit-learn python3

    安装 sklearn 1 安装 numpy scipy matplot pip3 install numpy scipy matplotlib i https pypi tuna tsinghua edu cn simple 2 安装 sk
  • 10.机器学习sklearn-------手写数字识别实例

    1 概念介绍 图像识别 Image Recognition 是指利用计算机对图像进行处理 分析和理解 以识别各种不同模式的目标和对像的技术 图像识别的发展经历了三个阶段 文字识别 数字图像处理与识别 物体识别 机器学习领域一般将此类识别问题
  • sklearn中ValueError: Unknown label type: ‘continuous‘错误解决

    ValueError Unknown label type continuous 错误解决 今天在做决策树鸢尾花分类时出现了一个错误 解决方法是 train y后加上astype int 即可
  • 机器学习之逻辑回归,代码实现(附带sklearn代码,小白版)

    文章目录 前言 一 逻辑回归能够解决什么 二 公式 三 激活函数 四 如何求得w 六 逻辑回归代码实现 五 sklearn demo 总结 前言 虽然名字带有回归 但实际上是一个常用的二分类算法 并且在预测的时候能够提供预测类别的概率 一
  • 机器学习之SVM

    文章目录 一 SVM基本介绍 二 SVM工作原理 1 线性支持向量机 数据可分 2 软边距支持向量机 数据不可分 三 sklearn实现SVM 注 SVM涉及距离 需要先数据标准化处理 1 线性SVM LinearSVC 构造函数的参数及默
  • sklearn 转换器和预估器

    刚学习sklearn时 没分清转换器的fit 和模型训练的fit 还以为是一个 结果学完了回过头来 才发现这些差异 再此记录一下 一 sklearn 转换器和预估器 转换器 Transformers 定义 转换器是一种可以对数据进行某种转换
  • sklearn中的fit_transform、获取特征、标签转换

    skearn中有数据预处理的功能 如fit transform 和fit transform fit 求得训练集X的均值 方差 最大值 最小值 这些训练集X固有的属性 transform 在fit的基础上 进行标准化 降维 归一化等操作 f
  • sklearn矩阵分解类库学习

    sklearn decomposition模块提供矩阵分解算法 其他PCA NMF 或ICA 其中大部分算法都被视为降维技术 主成分分析 sklearn decomposition PCA n components None copy Tr
  • sklearn与分类算法

    导读 众所周知 Scikit learn 以前称为 scikits learn 是一个用于 Python 编程语言的免费软件机器学习库 它具有各种分类 回归和聚类算法 包括支持向量机 随机森林 梯度增强 k means 和 DBSCAN 旨
  • 密度聚类DBSCAN、主成分分析PCA算法讲解及实战(附源码)

    需要源码请点赞关注收藏后评论区留言私信 一 基于密度的聚类 基于密度的聚类算法的主要思想是 只要邻近区域的密度 对象或数据点的数目 超过某个阀值 就把它加到与之相近的聚类中 也就是说 对给定类中的每个数据点 在一个给定范围的区域中必须至少包
  • 线性回归算法--拟合正弦函数

    目录 步骤 代码实现 本博客参考书籍 scikit learn机器学习 常用算法原理及编程实战 本博客源码地址 码云 步骤 生成200个在 2 2
  • 机器学习——朴素贝叶斯算法

    朴素贝叶斯算法 1 引言 2 朴素贝叶斯分类方法 3 概率基础 4 朴素贝叶斯特征提取 5 朴素贝叶斯分类的sklearn实现 6 垃圾短息分类 补充 1 引言 贝叶斯方法是一个历史悠久 有着坚实的理论基础的方法 同时处理很多问题时直接而又
  • 随机森林(RFC)实现模型优化与特征提取

    随机森林既可以进行分类也可以进行回归预测 这里通过随机森林 RFC 模型对汽油辛烷值RON进行特征提取与模型优化 一 导入相关的数据库 import matplotlib pyplot as plt from sklearn ensembl
  • 数据分箱3——决策树分箱(有监督)

    思路比较简单 将某一列数据作为训练集 将label作为结果 直接训练一个决策树 然后根据决策树的分裂节点的阈值作为分箱的依据 sklearn的决策树文档 https scikit learn org stable modules gener

随机推荐

  • QT-----ChartView控件的使用

    chartview可用于制作折线图 饼状图 条行 柱状 直方图系等来体现数据数据变化起浮 以下案例以折线图举例 1 使用ChartView控件 注意点 1 要在pro文件中加入 QT widgets 2 主界面应当使用QApplicatio
  • Java EE学习路线

    Java EE 是在 Java SE 的基础上构建的 它提供Web服务 组件模型 管理和通信API 可以用来实现企业级的面向服务体系结构 service oriented architecture SOA 和 Web 3 0应用程序 目前j
  • 将android项目生成library

    1 先将自己的项目改为library 在app下的build gradle下修改application为library 2 再将applicationId注销 3 点击 sync 4 进入项目文件夹 保留app文件夹 5 进入app文件目录
  • 深度学习实战:利用Xception算法和PaddlePaddle进行鸟类图像识别

    目录 1 引言 2 Xception算法介绍 3 鸟类识别问题介绍 4 数据集 5 使用PaddlePaddle实现Xception
  • Oracle创建新用户以及导入数据表dmp文件

    创建用户名之前 需要以用户管理员身份登陆数据库 1 在创建用户之前 先要创建表空间 其格式为 格式 create tablespace 表间名 datafile 数据文件名 size 表空间大小 例如 SQL gt create table
  • WEB前端网页设计-Bootstrap4 导航栏

    目录 Bootstrap4 导航栏 垂直导航栏 居中对齐的导航栏 不同颜色导航栏 品牌 Logo 折叠导航栏 导航栏使用下拉菜单 导航栏的表单与按钮 导航栏文本 固定导航栏 Bootstrap4 导航栏 导航栏一般放在页面的顶部 我们可以使
  • python中最常用的三大数据提取方法(1)----jsonpath

    1 jsonpath是python最常用提取数据的方法之一 jsonpath用于对json格式的数据进行提取 可以理解为对字典中value值的提取 用来解析多层嵌套的json数据 JsonPath 是一种信息抽取类库 是从JSON文档中抽取
  • 网络三定律:摩尔定律、吉尔德定律和迈特卡夫定律

    网络三定律 摩尔定律 吉尔德定律和迈特卡夫定律 拓展 1 网络论坛三大定律 2 影响世界的三大定律
  • 复杂交通环境感知

    作者 黄浴 编辑 计算机视觉深度学习和自动驾驶 点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 后台回复 领域综述 获取自动驾驶感知定位融合近80篇综述论文 近年来 计算机
  • TIA博途中如何为IO设备分配设备名称

    TIA博途中如何为IO设备分配设备名称 Robot PLC 自动化学院 CSDN博客
  • React 引入ant-design开发指南

    使用create react app搭建react开发环 创建react脚手架 create react app react antd demo 进入react antd demo cd react antd demo 运行react an
  • MYSQL中索引与主键的区别

    MYSQL中索引与主键的区别 索引 索引好比是一本书的目录 可以快速的通过页码找到你需要的那一页 惟一地标识一行 主键 做为数据库表唯一行标识 作为一个可以被外键有效引用的对象 索引是一种特殊的文件 InnoDB数据表上的索引是表空间的一个
  • Unity中的重载和重写

    Unity中的重载和重写 一 重载 二 重写 三 重载和重写的区别 一 重载 重载 两个必须一个可以 参数名必须相同 参数列表必须不同 返回值类型可以不同 代码示例 using System Collections using System
  • Linux 磁盘命令工具 比df更好用

    对于分析磁盘使用情况 有两个非常好用的命令 du 和 df 简单来说 这两个命令的作用是这样的 du 命令 它是英文单词 disk usage 的简写 主要用于查看文件与目录占用多少磁盘空间 df 命令 它是英文单词 disk free 的
  • python爬取证券之星网站

    周末无聊 找点乐子 coding utf 8 import requests from bs4 import BeautifulSoup import random import time 抓取所需内容 user agent Mozilla
  • 安卓逆向学习-Crack01 学习记录

    Crack01 学习记录 要感谢京峰教育 资料下载 https download csdn net download m0 47210241 85053839 利用jadx gui打开 分析代码 package com zhy editVi
  • nodejs封装api

    安装了nodeJs 执行 安装淘宝镜像 npm install g cnpm registry https registry npm taobao org 安装 yarn 我使用这个 淘宝镜像总是莫名其妙各种bug npm install
  • aix安装 php,CNESA

    aix安装samba服务器可以使用两种方式安装 一种是使用rpm包进行安装 一种是使用源码编译安装 一 使用samba的rpm包进行安装 1 下载samba的rpm包 下载地址为http www bullfreeware com searc
  • C++笔记--线程间共享数据

    当线程在访问共享数据的时候 必须制定一些规矩 用来限定线程可访问的数据位 还有 一个线程更新了共享数据 需要对其他线程进行通知 从易用性的角度 同一进程中的多个线程进行数据共享 错误的共享数据使用是产生并发bug的一个主要原因 当涉及到共享
  • 为什么训练集用fit_transform()而测试集用transform()及sklearn.feature_extraction.text.CountVectorizer API详解

    真正讲明白的 https blog csdn net yyhhlancelot article details 85097656 API https scikit learn org stable modules generated skl