做数据处理,你连 fit、transform、fit_transform 都分不清?
关注+星标,听说他有点东西
全文共 1413 字,阅读全文需 8 分钟
大家好,我是小一
这节内容源自于上节的延伸:数据处理中的标准化、归一化,究竟是什么?
在上一节介绍数据处理中的归一化和标准化操作,其中分别用到了 sklearn 下的 preprocessing 模块的 MinMaxScaler 和 StandardScaler。
在进行特征处理的过程中,用到了 fit_transform 函数进行训练+转换操作,fit_transform 究竟是什么,这节就来研究研究。
fit、transform 是什么?
MinMaxScaler 的 fit 函数的官方定义:
Compute the minimum and maximum to be used for later scaling.
翻译一下:计算用于进行特征缩放的最大值、最小值
也就是说,通过 fit 函数可以先对需要归一化的数据集进行最大、最小值的计算,至于说最终归一化的结果是多少,对不起,fit 函数到此为止了。
所以,在 MinMaxScaler 的 fit 之后可以查看数据集中的最大、最小值
通过如下代码:
import numpy as np
from sklearn.preprocessing import MinMaxScaler# 创建数组
data_rn = np.random.randint(-10, 10, 10).reshape(5, 2)
print(data_rn)
# 进行标准归一化
scaler_mmc = MinMaxScaler()
scaler_mmc_fit = scaler_mmc.fit(data_rn)
print(scaler_mmc_fit.data_min_) # 最小值
print(scaler_mmc_fit.data_max_) # 最大值
print(scaler_mmc_fit.data_range_) # 极差"""输出"""
[[ 4 -5][-5 2][-5 -4][-2 -8][-6 3]]
# 最小值
[-6. -8.]
# 最大值
[4. 3.]
# 极差
[10. 11.]
StandardScaler 的 fit 函数的官方定义:
Compute the mean and std to be used for later scaling.
翻译一下:计算用于进行特征缩放的均值、标准差
同样的,使用 fit 函数也可以对需要标准化的数据集进行均值、标准差的计算
相应的函数方法如下:
import numpy as np
from sklearn.preprocessing import StandardScalerscaler_ss = StandardScaler()
scaler_ss_fit = scaler_ss.fit(data_rn)
print(scaler_ss_fit.mean_) # 均值
print(scaler_ss_fit.var_) # 方差"""输出"""
# 均值
[-2.8 -2.4]
# 方差
[13.36 17.84]
总结一下 fit 的用法:
简单来说,就是求得数据集的均值、方差、最大值、最小值等固有的属性,经常和 transform 搭配使用
从算法模型的角度上讲,fit 过程可以理解为一个训练过程。
再来说说 transform 函数。
同样的先来看看官方对于 transform 函数的定义:
MinMaxScaler:Scale features of X according to feature_range.
StandardScaler:Perform standardization by centering and scaling
翻译一下:
MinMaxScaler:根据 feature_range 进行 X 的缩放
StandardScaler:通过居中和缩放执行标准化
也就是说,其实 transform 才是真正做归一化和标准化的函数,fit 函数只是做了前面的准备工作。
从算法模型的角度上讲,transform 过程可以理解为一个转换过程。
用法也很简单,对前面 fit 过的数据集直接进行操作即可
# 归一化
scaler_mmc_result = scaler_mmc.transform(data_rn)
# 标准化
scaler_ss_result = scaler_ss.transform(data_rn)
最终的结果和直接进行 fit_transform 的结果一致。即:
fit + transform = fit_transform
即 fit_transform 是 fit 和 transform 的组合,整个过程既包括了训练又包含了转换
fit_transform 对数据先拟合 fit,找到数据的整体指标,如均值、方差、最大值最小值等,然后对数据集进行转换transform,从而实现数据的标准化、归一化操作。
项目中使用技巧
了解了 fit、transform 的用法之后,可以再来学习下在项目中使用的小技巧。
项目的数据集一般都会分为 训练集和测试集,训练集用来训练模型,测试集用来验证模型效果。
要想训练的模型在测试集上也能取得很好的得分,不但需要保证训练集数据和测试集数据分布相同,还必须保证对它们进行同样的数据预处理操作。比如:标准化和归一化。
所以一般对于数据集处理上,会直接对训练集进行 拟合+转换,然后直接对测试集 进行转换。
注意了,是用训练集进行拟合,然后对训练集、测试集都用拟合好的”模型“进行转换,一定要明白这个逻辑!!
并不是真正的模型,所以带了引号
写成代码就是这样子:
from sklearn.preprocessing import StandardScalerscaler_ss = StandardScaler()
# 训练接操作
new_train_x = scaler_ss.fit_transform(train_x)
# 测试集操作
new_test_x = scaler_ss.tranform(test_x)
一定要注意,一定要注意,一定要注意:
不能对训练集和测试集都使用 fit_transform,虽然这样对测试集也能正常转换(归一化或标准化),但是两个结果不是在同一个标准下的,具有明显差异。
总结一下
首先,如果要想在 fit_transform 的过程中查看数据的分布,可以通过分解动作先 fit 再 transform,fit 后的结果就包含了数据的分布情况
如果不关心数据分布只关心最终的结果可以直接使用 fit_transform 一步到位。
其次,在项目上对训练数据和测试数据需要使用同样的标准进行转换,切记不可分别进行 fit_transform.
往期文章
数据处理中的标准化、归一化,究竟是什么?
Python 批量加水印!轻松搞定!
千万级别数据 de 筛选过滤,小一教你一招
知乎凡尔赛沙雕语录,究竟有多沙雕?
只需要10秒,使用PPT给证件照换底色
同事微博涨粉200+,一顿分析真爱粉只有4个?
我是小一,坚持向暮光所走的人,终将成为耀眼的存在!
期待你的 三连!我们下节见
做数据处理,你连 fit、transform、fit_transform 都分不清?相关推荐
- fit,transform,fit_transform详解
写在前面 fit和transform没有任何关系,仅仅是数据处理的两个不同环节,之所以出来fit_transform这个函数名,仅仅是为了写代码方便,会高效一点. sklearn里的封装好的各种算法使 ...
- 机器学习:fit,transform,fit_transform区别(附代码)
导论: 在机器学习中,我们需要对数据集的数据进行处理,进而使用sklearn库中的一些函数对数据进行数据特征提取,训练模型,其中fit,transform,fit_transform是进行数据的预处理 ...
- iPhone 隐私新规下的“大地震”:四大平台损失近百亿美元,“连用户是男是女都分不清……”
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 大家有这样的经历吗?前一秒刚在聊天软件上跟朋友分享了一款产品,下一秒就能在其他 App 中看到这款产品的广告推送,不了解内情的人说不定还 ...
- iPhone 隐私新规下的“大地震”:四大平台损失近百亿美元,“连用户是男是女都分不清”
大家有这样的经历吗?前一秒刚在聊天软件上跟朋友分享了一款产品,下一秒就能在其他 App 中看到这款产品的广告推送,不了解内情的人说不定还会感慨一句:"好巧哦."但这真的是巧合?显然 ...
- scikit_learn中fit()/transform()/fit_transform()区别和联系
函数功能解释 fit() 根据训练集数据学习得到数据集的特征,比如均值.中位数.标准差等等 transform() 将fit()学到数据集特征,应用到数据集,比如学习到数据集平均数为6,应用到填充数据 ...
- 都在讨论高并发,结果连并发量、TPS、QPS都分不清
" 年年岁岁跳槽季,回回必问高并发!原因很简单,因为高并发能牵扯出太多问题,接口响应超时.CPU负载升高.GC频繁.死锁.大数据量存储等,能考察求职者的真实情况. 而很多人在第一步就倒下了! ...
- arcgis直方图工具在哪_这些分析工具都分不清?别说你懂数据分析!
举一个例子,铅笔.钢笔.圆珠笔.水彩笔.中性笔,它们的区别是什么?同理,spss.sas.excel .python.powerbi ,这些常见的数据分析工具有什么区别?很显然,这两个问题是有共性的. ...
- 尴尬!三星Galaxy S10系列面部识别疑似翻车:连兄妹都分不清
才发布不久的三星Galaxy S10系列依然最酷的旗舰机之一,旗舰机该有的配置都有,在手机解锁方面,S10和S10+机型上采用了屏下超声波指纹识别技术,号称最高安全等级. 但同样是手机解锁,三星Gal ...
- 涡轮增压和机械增压都分不清,还敢自称老司机?
最近几年,越来越多的汽车厂商加入了涡轮增压大家庭,从承诺过"自然进气"的本田,宝马到V12引擎靠自然进气排气做出天籁之声的法拉利都逐步重拾或者说新开发了涡轮增压的机器.不少看官们惊 ...
最新文章
- 我们离爱因斯坦想了解的“上帝的思想”,还有多远?
- dos 删除文件夹 rd
- 全面剖析VeriSign代码签名证书
- C++ Primer 5th笔记(chap 16 模板和泛型编程)实例化
- Java集合篇:Vector
- 艾伟:ASP.NET 与 AJAX的实现方式
- java中的基本数据类型的取值范围分别是多少?
- js 调用 php,利用js调用后台php进行数据处理原码
- “极狐•华为HI版本”的尴尬与困境
- 怎么看计算机内存和独显,电脑独立显卡或集成显卡的显存大小怎么查看?
- java消息平台_Java微信公众平台之消息管理
- vivo一面翻车,整理完这份Java面经分类汇总,我突然悟了
- 最大后验概率(MAP)- maximum a posteriori
- Halcon图像预处理-感兴趣区域(ROI)
- 商务英语类毕业论文文献有哪些?
- 基于Java实现在线翻译【100010578】
- servlet的生命周期 (四个阶段).
- WEB前端大作业-汽车保养服务中心响应式网页模板(HTML JS CSS)
- 31岁失业四个月,做测试好迷茫,怎么规划呢?
- JavaScript实现春节倒计时