数据预处理——fit()函数,transform()函数,fit_transform()函数

这篇具有很好参考价值的文章主要介绍了数据预处理——fit()函数,transform()函数,fit_transform()函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.fit()函数

sklearn中封装的各种算法 调用之前都要fit。fit相对于整个代码而言,为后续API服务,

用于从一个训练集中学习模型参数,包括归一化时要用到的均值,标准偏差

fit之后,可以调用各种API方法,transform是其中之一。fit_transformtransform运行结果一致,但是fittransform无关,只是数据处理的两个环节。

提前注意:一下测试集都无需使用fit生成规则,否则就是掩耳盗铃了

1.1标准化

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().fit(x_train) # fit生成规则
x_trainScaler = scaler.transform(x_train) # 将规则应用于训练集
x_testScaler = scaler.transform(x_test)  # 将规则应用于测试集

1.2区间缩放

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler().fit(x_train) # fit生成规则
x_trainScaler = scaler.transform(x_train) # 将规则应用于训练集
x_testScaler = scaler.transform(x_test)  # 将规则应用于测试集

1.3归一化:

from sklearn.preprocessing import Normalizer
scaler = Normalizer().fit(x_train) # fit生成规则
x_trainScaler = scaler.transform(x_train) # 将规则应用于训练集
x_testScaler = scaler.transform(x_test)  # 将规则应用于测试集

1.4二值化:设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0

from sklearn.preprocessing import Binarizer
scaler = Binarizer(threshold=3).fit(x_train) # threshold为设定的阀值
x_trainScaler = scaler.transform(x_train) # 将规则应用于训练集
x_testScaler = scaler.transform(x_test)  # 将规则应用于测试集

1.5 哑编码处理:

from sklearn.preprocessing import OneHotEncoder
scaler = OneHotEncoder().fit(x_train.reshape((-1,1)))
x_trainScaler = scaler.transform(x_train) # 将规则应用于训练集
x_testScaler = scaler.transform(x_test)  # 将规则应用于测试集

1.6自定义函数变换

from numpy import log1p  # 使用对数函数转换
from sklearn.preprocessing import FunctionTransformer
scaler = FunctionTransformer(log1p).fit(x_train)
x_trainScaler = scaler.transform(x_train) # 将规则应用于训练集
x_testScaler = scaler.transform(x_test)  # 将规则应用于测试集

1.7PCA降维

from sklearn.decomposition import PCA
pca = PCA(n_components=3).fit(x_train)  # n_components设置降维到n维度
x_trainPca = pca.transform(x_train) # 将规则应用于训练集
x_testPca = pca.transform(x_test)  # 将规则应用于测试集

1.8LDA降维

from sklearn.lda import LDA
lda = LDA(n_components=3).fit(x_train)  # n_components设置降维到n维度
x_trainLda = lda.transform(x_train) # 将规则应用于训练集
x_testLda = lda.transform(x_test)  # 将规则应用于测试集

二.transform()函数

用于将fit()后学到的数据集特征应用到数据集,比如学习到数据集平均数为6,应用到填充数据中的缺失值

数据预处理——fit()函数,transform()函数,fit_transform()函数

transform()是pandas中的转换函数,对DataFrame执行传入的函数后返回一个相同形状的DataFrame。用于对DataFrame中的数据进行转换

2.1transform()传入单个函数

import pandas as pd
import numpy as np
df = pd.DataFrame({'Col-1': [1, 2, 3], 'Col-2': [4, 5, 6]})
print(df)
print("*"*50)
res1 = df.transform(np.square)#平方
print(res1)
print("*"*50)
res2 = df.transform(np.sqrt)#开平方根
print(res2)
print("*"*50)
res3 = df.transform(lambda x: x*10)#匿名函数,相当于让x->x*10
print(res3)
print("*"*50)

可见,transform中若传入单个函数进行转换,其效果与apply()/applymap()类似

此处还有一点要注意:

传入的函数可以是库函数、自定义函数或匿名函数。但是不支持直接传入会将DataFrame“降维”的函数,因为transform()的返回结果要求与自身形状相同。

所以,如会将Series处理成聚合函数min,mean,std时就会报错:ValueError: Function did not transform.

2.2transform()传入多个函数

test4=df.transform([np.square,np.sqrt])
print(test4)

数据预处理——fit()函数,transform()函数,fit_transform()函数

在transform()中传入多个函数对DataFrame进行转换,结果中的索引变成多层索引,第一层索引是DataFrame的列名,第二层索引是执行的函数名。

#若传入相同名字的函数,则最后一个生效
test5=df.transform([np.abs,lambda x:x+10,lambda x:x-10])
print(test5)

 数据预处理——fit()函数,transform()函数,fit_transform()函数

在传入多个函数时,传入的方式是用列表传入,此时如果有多个名字相同的函数,只有最后一个函数生效。(聚合函数agg()中多个匿名函数可以同时生效)

2.3按字典的方式传入函数

2.4与groupby()配合使用

以上两个吃完饭回来再补充

3最后注意点

注意点1:

为何训练集使用fit_transform(),而测试集使用tranform(),不再使用fit_transform()?


因为在训练数据集的时候,已经使用fit()或者fit_transform得到了整体的指标(均值,方差等),所以在测试集上直接transform()调用之前的指标。如果此时在测试集上再进行一次fit(),由于两次的数据不一样,导致得到不同的指标,会使预测发生偏差,因为模型是针对之前的数据fit()出来的标准来训练的,而现在的数据是新的标准,会导致预测的不准确。

注意点2:

transform函数是可以替换为fit_transform函数的,但是fit_transform函数不能替换为transform函数

(看懂了注意点1其实点2就不难理解了)

如果fit_transfrom(trainData)后,使用fit_transform(testData)而不使用transform(testData),虽然也能归一化,但是两个结果不是在同一个“标准”下的,具有明显差异。(一定要避免这种情况)

注意点3:

fit(x,y)传两个参数的是有监督学习的算法,两个参数分别对应这特征和目标值

fit(x)传一个参数的是无监督学习的算法,比如降维,特征提取,标准化

注意点4:

必须先用fit_transform(trainData),之后再transform(testData)。如果直接transform(testData),程序会报错。

最后来个例子

import numpy as np
from sklearn.impute import SimpleImputer
arr=np.array([[7,2,3],[4,np.nan,6],[10,5,9]])
arr

数据预处理——fit()函数,transform()函数,fit_transform()函数

 文章来源地址https://www.toymoban.com/news/detail-449027.html

#学习方法(策略)
imp_mean=SimpleImputer(missing_values=np.nan,strategy="median")
#学习方法(策略)从下面数据集中进行学习
imp_mean_fit=imp_mean.fit(arr)
#学习方法(策略)从实际数据中进行学习,学习到的第1/2/3列中位数 分别是7.0,3.5,6.0
print(imp_mean_fit.statistics_)
print("*"*50)
print(imp_mean.transform(arr))

数据预处理——fit()函数,transform()函数,fit_transform()函数

#将学习到的结果(第1/2/3列中位数 分别是7.0,3.5,6.0)应用到数据集testX,原来的np.nan分别被中位数替换
testX=np.array([[np.nan,2,3],[4,np.nan,6],[10,np.nan,9]])
imp_mean.transform(testX)#testX相当于测试集数据预处理——fit()函数,transform()函数,fit_transform()函数

 

http://t.csdn.cn/Fj8ir

 

到了这里,关于数据预处理——fit()函数,transform()函数,fit_transform()函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV图像预处理常用函数及流程

    在PyCharm终端中,运行如下命令 由于默认使用的为外网资源,下载速度和稳定性较差,具体看网络状态。如下命令为使用清华镜像下载安装相应的包 在终端中运行命令时,Windows10系统可能会存在如下报错:无法加载激活文件,因此在此系统上禁止运行脚本。此情况是因为win

    2024年02月05日
    浏览(51)
  • Less预处理——继承、导入、条件表达式和函数

    1、extend 的使用 extend 是 Less 的一个伪类,它可继承所匹配声明中的全部样式 index.less 文件 index.css 文件 自动转义后的 css 文件内容如下 2、all 全局搜索替换 使用选择器匹配到的全部声明 index.less 文件 index.css 文件 自动转义后的 css 文件内容如下 3、减少代码的重复性

    2024年02月20日
    浏览(51)
  • C 语言高级3--函数指针回调函数,预处理,动态库的封装

    目录 1.函数指针和回调函数 1.1 函数指针 1.1.1 函数类型 1.1.2 函数指针(指向函数的指针) 1.1.3 函数指针数组        1.1.4 函数指针做函数参数(回调函数)  2.预处理 2.1 预处理的基本概念 2.2 文件包含指令(#include) 2.2.1 文件包含处理  2.2.2 #incude和#include\\\"\\\"区别 2.3 宏定义 2.3.1 无参

    2024年02月14日
    浏览(39)
  • C语言文本为什么不包括库函数和预处理命令

    C语言的文本不包括库函数和预处理命令 是因为库函数和预处理命令并不是C语言本身的一部分, 它们是由 C语言标准库 和 预处理器 提供的功能。 C语言 标准库 是一组预定义的函数和常量, 用于提供常见的功能,如输入输出、字符串处理、数学计算等。 这些库函数是由C语言

    2024年02月09日
    浏览(46)
  • 数据采集与预处理01: 项目1 数据采集与预处理准备

    数据采集:足够的数据量是企业大数据战略建设的基础,因此数据采集成为大数据分析的前站。数据采集是大数据价值挖掘中重要的一环,其后的分析挖掘都建立在数据采集的基础上。大数据技术的意义确实不在于掌握规模庞大的数据信息,而在于对这些数据进行智能处理,

    2024年01月25日
    浏览(65)
  • 字母串哈希模板题题解:哈希+前缀和+进制转换+预处理指数函数

    841. 字符串哈希 给定一个 长度为 n n 的字符串,再给定 m m 个询问 , 每个询问包含四个整数 l1,r1,l2,r2 l1,r1,l2,r2,请你判断 [l1,r1][l1,r1] 和 [l2,r2][l2,r2]  这两个区间所包含的字符串子串是否完全相同 。 字符串中只包含大小写英文字母和数字 。 输入格式 第一行包含整数 

    2024年02月14日
    浏览(53)
  • 数据预处理matlab matlab数据的获取、预处理、统计、可视化、降维

    1.1 从Excel中获取 使用readtable() 例1: 使用 spreadsheetImportOptions(Name,Value) 初步确定导入信息, 再用 opts.Name=Value 的格式添加。 例2: 先初始化 spreadsheetImportOptions 对象, 再用 opts.Name=Value 的格式逐个添加。 例3: 将导入信息存到变量里, 再使用 spreadsheetImportOptions(Name,Value)

    2024年02月15日
    浏览(56)
  • 大数据采集技术与预处理学习一:大数据概念、数据预处理、网络数据采集

    目录 大数据概念: 1.数据采集过程中会采集哪些类型的数据? 2.非结构化数据采集的特点是什么? 3.请阐述传统的数据采集与大数据采集的区别? ​​​​​​​ ​​​​​​​4.大数据采集的数据源有哪些?针对不同的数据源,我们可以采用哪些不同的方法和工具? 数据

    2024年01月25日
    浏览(54)
  • 数据预处理之数据规约

    目录 一、前言 二、PCA的主要参数: 三、数据归约任务1 四、数据规约任务2 PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构

    2024年02月12日
    浏览(47)
  • 数据分析--数据预处理

    本文主要是个人的学习笔记总结,数据预处理的基本思路和方法,包括一些方法的使用示例和参数解释,具体的数据预处理案例case详见其他文章。如有错误之处还请指正! 目录 数据的质量评定 数据处理步骤 缺失值的处理 标记缺失值 删除 缺失值 填充 缺失值 重复值处理 异

    2024年02月04日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包