关于特征值离散化的相关内容可以看机器学习面试题之机器学习基础(一)
1.pandas进行特征离散处理

import pandas as pd
df = pd.DataFrame([['green', 'M', 10.1, 'class1'], ['red', 'L', 13.5, 'class2'], ['blue', 'XL', 15.3, 'class1']])df.columns = ['color', 'size', 'prize', 'class label']
df


标签处理
通常会把字符型的标签转换成数值型的

class_mapping = {label:idx for idx,label in enumerate(set(df['class label']))}
print(class_mapping )
#{'class1': 0, 'class2': 1}
df['class label'] = df['class label'].map(class_mapping)
df


特征处理
对于特征来说,一般可以做一个映射的字典

size_mapping = {'XL': 3,'L': 2,'M': 1}df['size'] = df['size'].map(size_mapping)
df


还可以转换成编码

color_mapping = {'green': (0,0,1),'red': (0,1,0),'blue': (1,0,0)}df['color'] = df['color'].map(color_mapping)
df


还原数据初始状态

inv_color_mapping = {v: k for k, v in color_mapping.items()}
inv_size_mapping = {v: k for k, v in size_mapping.items()}
inv_class_mapping = {v: k for k, v in class_mapping.items()}df['color'] = df['color'].map(inv_color_mapping)
df['size'] = df['size'].map(inv_size_mapping)
df['class label'] = df['class label'].map(inv_class_mapping)
df


2.使用sklearn进行离散值处理的方式如下:
①.标签编码(LabelEncoder)

from sklearn.preprocessing import LabelEncoder
class_le = LabelEncoder()
df['class label'] = class_le.fit_transform(df['class label'])
df


数据还原回去可以用inverse_transform :

class_le.inverse_transform(df['class label'])

②.特征向量化(DictVectorizer)
使用 DictVectorizer将得到特征的字典

df.transpose().to_dict().values()
dict_values([{'color': 'green', 'size': 'M', 'class label': 0, 'prize': 10.1}, {'color': 'red', 'size': 'L', 'class label': 1, 'prize': 13.5}, {'color': 'blue', 'size': 'XL', 'class label': 0, 'prize': 15.3}])
feature = df.iloc[:, :-1]
feature


对所有的数据都做了映射

from sklearn.feature_extraction import DictVectorizer
dvec = DictVectorizer(sparse=False)X = dvec.fit_transform(feature.transpose().to_dict().values())
X
#输出结果
array([[  0. ,   1. ,   0. ,  10.1,   0. ,   1. ,   0. ],[  0. ,   0. ,   1. ,  13.5,   1. ,   0. ,   0. ],[  1. ,   0. ,   0. ,  15.3,   0. ,   0. ,   1. ]])

可以调用 get_feature_names 来返回新的列的名字,其中0和1就代表是不是这个属性。

pd.DataFrame(X, columns=dvec.get_feature_names())


③.独热编码(OneHotEncoder)
OneHotEncoder 必须使用整数作为输入,所以得先预处理一下

color_le = LabelEncoder()
df['color'] = color_le.fit_transform(df['color'])df

from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse=False)X = ohe.fit_transform(df[['color']].values)
X
#输出结果
array([[ 0.,  1.,  0.],[ 0.,  0.,  1.],[ 1.,  0.,  0.]])

Pandas虚拟变量
Pandas库中同样有类似的操作,使用get_dummies也可以得到相应的特征

import pandas as pd
df = pd.DataFrame([['green', 'M', 10.1, 'class1'], ['red', 'L', 13.5, 'class2'], ['blue', 'XL', 15.3, 'class1']])df.columns = ['color', 'size', 'prize', 'class label']size_mapping = {'XL': 3,'L': 2,'M': 1}
df['size'] = df['size'].map(size_mapping)class_mapping = {label:idx for idx,label in enumerate(set(df['class label']))}
df['class label'] = df['class label'].map(class_mapping)
df


对整个DF使用get_dummies 将会得到新的列:

pd.get_dummies(df)

Python实现数据预处理-离散值处理相关推荐

  1. python图片保存和图片展示顺序_【IT专家】【 python 】 —— 数据预处理:(1) 读取与显示图片 + 图像通道顺序变换...

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 [ python ] -- 数据预处理: (1) 读取与显示图片 + 图像通道顺 序变换 2018/05/31 29 # ---- 用 OPENC ...

  2. Python数据分析数据预处理特征值独热编码

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python数据分析 数据预处理 特征值独热编码 独热编码,是一种将分类变量转换为若干二进制 ...

  3. python文本数据处理_从 App 描述介绍文字中发掘 Python 文本数据预处理实例

    本文为 AI 研习社编译的技术博客,原标题 What App Descriptions Tell Us: Text Data Preprocessing in Python,作者为 Finn Qiao ...

  4. python 归一化_一文学会用python进行数据预处理

    怎样用Python进行数据转换和归一化 1.概述 ​ 实际的数据库极易受到噪声.缺失值和不一致数据的侵扰,因为数据库太大,并且多半来自多个异种数据源,低质量的数据将会导致低质量的数据分析结果,大量的数 ...

  5. 使用 Python 进行数据预处理的标准化

    机器学习和深度学习算法中的缩放方法 标准化和规范化是机器学习和深度学习项目中大量使用的数据预处理技术之一. 这些技术的主要作用 以类似的格式缩放所有数据,使模型的学习过程变得容易. 数据中的奇数值被缩 ...

  6. Python商品数据预处理与K-Means聚类可视化分析

    数据提取 在我之前的文章Scrapy自动爬取商品数据爬虫里实现了爬虫爬取商品网站搜索关键词为python的书籍商品,爬取到了60多页网页的1260本python书籍商品的书名,价格,评论数和商品链接, ...

  7. Python数据挖掘 数据预处理案例(以航空公司数据为例)

    Python数据预处理 一.内容: 1.数据清洗 2.数据集成 3.数据可视化 二.实验数据 根据航空公司系统内的客户基本信息.乘机信息以及积分信息等详细数据,依据末次飞行日期( LAST_FLIGH ...

  8. 在机器学习中,如何用Python进行数据预处理?

    数据分析之路持续学习中- - - 近期学习了机器学习中的数据预处理章节,在此进行分享,欢迎大家讨论指正. 顺便说一下,这里我使用的软件是Anacnoda 3中已经安装好的Spyder 3,这个软件用起 ...

  9. 【Python】数据预处理之将类别数据转换为数值的方法(含Python代码分析)

    在进行Python数据分析的时候,首先要进行数据预处理.但是有时候不得不处理一些非数值类别的数据,遇到这类问题时该怎么解决呢? 目前为止,总结了三种方法,这里分享给大家. 一.通过mapping方式, ...

最新文章

  1. 【直播】回放与PPT下载!深度学习如何用于摄影图像的处理?
  2. codevs 1200:同余方程
  3. 23.IntelliJ IDEA 常用设置-1
  4. 文件服务器冷热数据划分,游戏服务器冷热数据分离方案
  5. 《Javascript语言精粹》 读书笔记
  6. 《leetcode》valid-parentheses
  7. Oracle结果集缓存(Result Cache)--服务器、客户端、函数缓存
  8. 这一小点程序员务实的调整,可以避免整个开发团队的崩溃
  9. axure element元件_Axure教程,产品小白从0学起
  10. 【分享】如何创建自己的Visual Studio 2005/2008配色
  11. CASE WHEN THEN 判断
  12. JavaEE全套资料+视频+工具
  13. 科学计算与数学建模-线性方程组求解的迭代法 思维导图
  14. 如何搭建用户生命周期模型
  15. 数字图像处理作业文档整合
  16. 《禁闭岛》与脑前额叶,从白痴到天才看人类的认知
  17. 阿里巴巴2016校招面试经验
  18. Android开发者请进:猛击鼠标,请投一票!
  19. 极路由1S 开启临时ssh 并刷breed成功
  20. u盘数据恢复的原理_如何进行u盘数据恢复

热门文章

  1. window系统重启问题追踪
  2. cf 1A Theatre Square
  3. 移动叔叔MT6573一键ROOT工具!适应所有android2.2/2.3以上系统
  4. Java----jar包
  5. 数据库找不到字段报错
  6. 《HFSS电磁仿真设计从入门到精通》一第1章 HFSS概述
  7. Floquet port激励及主从边界设置
  8. 智能配线系统技术高峰论坛PPT讲座主要内容
  9. 未授权访问火眼红队工具
  10. 淘宝TOP开发:(二)