处理缺失值呢,就不讲了,参考之前的博文,《《scikit-learn》随机森林回归填补缺失值》 即可。
这里来学习怎么对一些数值进行处理

一:对分类型数据处理,对数据进行编码和哑变量的处理
Scikit-learn中处理是不允许有文字的,因此需要做一些转换,对标签或者特征的含有文字的信息进行转换。
1:把文字/字符信息转换成对应的类别数值。
方法如下:

一个是对标签进行数值转换。

from sklearn.preprocessing import LabelEncoder  # 标签专用,将标签转换为数值的,用于y值的转换,只能输入标签。
import numpy as npdata = np.array(['S', 'N', 'S', 'S', 'N', 'N', 'S'])# 方法一
le = LabelEncoder()
res = le.fit(data)
res = le.transform(data)
print('转换后的结果是:', res)  # 得到转换后的结果
print('转换后的标号和类别关系关系是(下标就是标号):', le.classes_)  # 得到对应的类别,每个文字的下标就是其数字标号# 方法二
le = LabelEncoder()
res = le.fit_transform(data)
print('转换后的结果是:', res)  # 得到转换后的结果
print('转换后的标号和类别关系关系是(下标就是标号):', le.classes_)  # 得到对应的类别,每个文字的下标就是其数字标号# 进一步操作
data_src = le.inverse_transform(res)  # 还原即可。
print('逆转回的结果是:', data_src)

另一个是对特征进行批量转换

from sklearn.preprocessing import OrdinalEncoder  # 特征专用,只能用于特征的文字到数值的转换
import numpy as npdata = np.array([['S', 'N', 'S', 'S', 'N', 'N', 'S'],['A', 'B', 'C', 'B', 'C', 'A', 'B'],['man', 'girl', 'man', 'girl', 'girl', 'man', 'girl']])
data = data.transpose()# 方法一
oe = OrdinalEncoder()
res = oe.fit(data)
res = oe.transform(data)
print('转换后的结果是:', res)  # 得到转换后的结果
print('转换后的标号和类别关系关系是(下标就是标号):', oe.categories_)  # 得到对应的类别,每个文字的下标就是其数字标号# 方法一
oe = OrdinalEncoder()
res = oe.fit_transform(data)
print('转换后的结果是:', res)  # 得到转换后的结果
print('转换后的标号和类别关系关系是(下标就是标号):', oe.categories_)  # 得到对应的类别,每个文字的下标就是其数字标号# 进一步操作
data_src = oe.inverse_transform(res)
print(data_src)

还有一种,one-hot编码,也就是独热编码
比如boy和girl,之间没有任何数值上的大小关系,纯属表示了类别而已。

from sklearn.preprocessing import OneHotEncoder  # 独热编码
import numpy as npdata = np.array([['S', 'N', 'S', 'S', 'N', 'N', 'S'],  # 两个类别['A', 'B', 'C', 'B', 'C', 'A', 'B'],  # 三个类别['man', 'girl', 'man', 'girl', 'girl', 'man', 'girl']]  # 两个类别)
data = data.transpose()# 方法一
oe = OneHotEncoder(categories='auto')
res = oe.fit(data)
res = oe.transform(data).toarray()
print('转换后的结果是:', res)  # 得到转换后的结果
print('转换后的标号和类别关系关系是(下标就是标号):', oe.categories_)  # 得到对应的类别,每个文字的下标就是其数字标号
print(oe.get_feature_names())  # 从这里能看到各个列对应的原始属性和具体类别信息# 方法一
oe = OneHotEncoder(categories='auto')
res = oe.fit_transform(data).toarray()
print('转换后的结果是:', res)  # 得到转换后的结果
print('转换后的标号和类别关系关系是(下标就是标号):', oe.categories_)  # 得到对应的类别,每个文字的下标就是其数字标号
print(oe.get_feature_names())  # 从这里能看到各个列对应的原始属性和具体类别信息# 进一步操作
data_src = oe.inverse_transform(res)
print(data_src)

获取独热编码后,拼接到原始特征后面,原始的特征就可以删除了。

二:处理连续性变量,二值化和分段
决策树呢是可以处理一些连续型的数据的,但是有时候我们不需要那么精细,比如年龄作为特征,22岁和21岁可能没什么差距,但是22岁和42岁就是有很大差距了,年龄不同,背后的社会经验,体能等有点影响。
这时候我们需要把数据进行二值化或分段,比如在某个范围段是我关心的,在另外个范围段也是我关心的。

先来看将年龄二值化,比如我们将30岁作为界限,分为30以下和30以上。

from sklearn.preprocessing import Binarizer  # 独热编码
import numpy as np# [] : 一维数组
# [[]] : 二维数组
# [[[]]] : 三维数组
data = np.array([13, 16, 22, 28, 32, 38, 45]).reshape(-1, 1)  # 特征专用,不能使用一个样本,也就是一维数组bz = Binarizer(threshold=30)  # 以30为界限
res = bz.fit_transform(data)
print(res)

有时候我们按照儿童(12岁),青少年(30),中老年(45),老年划分(65),分为多个段。

from sklearn.preprocessing import KBinsDiscretizer  # 独热编码
import numpy as np# [] : 一维数组
# [[]] : 二维数组
# [[[]]] : 三维数组
data = np.array([8, 16, 22, 28, 32, 38, 45, 50, 68, 80]).reshape(-1, 1)  # 特征专用,不能使用一个样本,也就是一维数组# 实例一:分成4类,每个分裂都是用一个数值表示,使用均匀分布来划分
kbd = KBinsDiscretizer(n_bins=4, encode='ordinal', strategy='uniform')  # 以30为界限
res = kbd.fit_transform(data)
print(res)# 实例二:分成4类,每个分裂都是用一个独热向量表示,使用均匀分布来划分
kbd = KBinsDiscretizer(n_bins=4, encode='onehot', strategy='uniform')  # 以30为界限
res = kbd.fit_transform(data).toarray()
print(res)
print(kbd.bin_edges_)  # 得到划分额边界值

《scikit-learn》数据预处理与特征工程(二)数值转换相关推荐

  1. sklearn 神经网络_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...

  2. sklearn中eof报错_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...

  3. sklearn实战-----3.数据预处理和特征工程

    1 概述 1.1 数据预处理与特征工程 想象一下未来美好的一天,你学完了菜菜的课程,成为一个精通各种算法和调参调库的数据挖掘工程师了.某一天 你从你的同事,一位药物研究人员那里,得到了一份病人临床表现 ...

  4. 数据预处理与特征工程—12.常见的数据预处理与特征工程手段总结

    文章目录 引言 1.数据预处理 1.1 数据清洗 1.1.1 异常值处理 1.1.2 缺失值处理 1.2 特征预处理 1.2.1 数值型特征无量纲化 1.2.2 连续数值型特征分箱 1.2.2.1 无 ...

  5. 使用Sklearn库学习数据预处理和特征工程

    目录 1,概述 1.1,数据预处理和特征工程 1.2,sklearn中的数据预处理和特征工程 2,数据预处理 Preprocessing & Impute 2.1,数据无量纲化 2.2,缺失值 ...

  6. pandas用众数填充缺失值_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o()ブ,我是菜菜,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你的版本至少要3.4以上 Scikit-learn 0.20.0 (你的版 ...

  7. sklearn_数据预处理和特征工程

    转载自:菜菜的sklearn课堂 文章目录 1 概述 1.1 数据预处理与特征工程 1.2 sklearn中的数据预处理和特征工程 2 数据预处理 Preprocessing & Impute ...

  8. 「机器学习速成」数据预处理,特征工程,良好特征的特点

    https://www.toutiao.com/a6703863693408469516/ 大家好,今天我们学习[机器学习速成]之 数据预处理,特征工程,良好特征的特点 我们 马上学三点 , 特征工程 ...

  9. 天池- IJCAI-18 阿里妈妈搜索广告转化预测新手入门经历(一:数据预处理、特征工程)

    第一次正式参加数据挖掘类的比赛,投入了三个星期.结果没有进入复赛,但是学到了许多经验.感谢技术圈和github的大佬们提供的baseline,让我少走了很多弯路. 第一次写博客,其一为了防止以后忘记, ...

  10. 数据预处理和特征工程

    一.数据预处理 1.数据采集 2.数据格式化(存储格式等) 3.数据清洗:去掉脏数据 简单直观可以看出的不可能数据 组合或统计属性判定 缺失值处理 1.删除元祖:删除这一条记录或者一列特征,适合记录或 ...

最新文章

  1. day060 ajax文件上传 json补充
  2. android用于查询数据的方法,android: SQLite查询数据
  3. eclipse php uml,Eclipse UML插件Amateras UML及GEF安装与用法
  4. hybris backoffice和产品主数据相关的一些sample data
  5. Docker-Desktop储存路径更改
  6. redis session 超时时间_Shiro性能优化:解决Session频繁读写问题
  7. 大数据阶段划分及案例单词统计
  8. PyQt5学习笔记(一)PyQt5入门QLabel控件及使用
  9. Linux内核哈希表分析与应用
  10. python 类 对象 方法 应用_Python 定制类与其对象的创建和应用
  11. 拓端tecdat|R语言用关联规则和聚类模型挖掘处方数据探索药物配伍中的规律
  12. 浏览器打印设置横向打印_震旦打印机如何设置认证打印
  13. 177.第N高的薪水
  14. jQuery源码学习(四)
  15. wps2019无法使用粘贴复制快捷键
  16. Removing a detached instance--删除失败
  17. MySql5.6操作时报错:You must SET PASSWORD before execut
  18. 一万年很长,所以只争朝夕
  19. 【读书联动】认知觉醒:开启自我改变的原动力
  20. 神舟gx8cp5s1uefi安装win10和ubuntu18.04双系统记录

热门文章

  1. 《HTML5移动应用开发入门经典》—— 1.6 编写移动网站
  2. SQL Server 之 在与SQLServer建立连接时出现与网络相关的或特定于实例的错误
  3. HDU1856More is better(并查集)
  4. 优化反射性能的总结(上)
  5. Silverlight实例教程 - 理解Navigation导航框架Frame类
  6. HTTP 请求之URLs 与 URNs
  7. 面试官系统精讲Java源码及大厂真题 - 13 差异对比:集合在 Java 7 和 8 有何不同和改进
  8. 容器编排技术 -- Kubernetes kubectl create secret generic 命令详解
  9. PHP通知弹窗代码_公告弹窗
  10. dnslog-server的概念