1.LabelEncoder() # 用于构建数字编码

2 .map(dict_map)  根据dict_map字典进行数字编码的映射

3.OnehotEncoder()  # 进行one-hot编码,输入的参数必须是二维的,因此需要做reshape,同时使用toarray() 转换为列表形式

3  pd.get_dummies(feature,drop_first=False) 如果填单个特征的话,只对一个特征做one-hot编码映射, drop_first表示去除one-hot编码后的第一列数据

对于一些离散的文本标签,通常我们可以使用两种编码方式

比如存在['小明', '小红’, '小花', '小明']

数字编码:

对于数字映射的编码方式,存在一个编码映射表:比如{‘小明’: 0, '小红': 1, '小花': 2}

那么上述的特征可以通过数字编码映射为[0, 1, 2, 1]

one-hot编码:

对于one-hot编码而言:通常使用特征作为列名,如果存在该特征,对应的列名为1, 其他列名为0

即上述的one-hot编码的结果为

小明   小红   小花

0     1          0        0

1     0         1         0

2     0         0         1

3     1         0         0

代码:

数字编码:

第一种方法: 导入LabelEncoder() 进行编码:

第二种方式: 构建数字映射字典,使用.map完成映射

one-hot编码:

第一种方法:使用OnehotEncoder(), 对某列样本特征进行编码,使用toarray()获得列表的格式,构建字典,变换为DataFrame格式,通过pd.concat([], axis=1) 完成DataFrame格式的拼接

第二种方法:导入pd.get_dummies(feature, drop_first=False) 对某一列文本特征进行onehot编码的映射,使用pd.concat完成DataFrame格式的拼接,如果不填参单个特征,将对所有的文本特征都进行onehot编码操作

import numpy as np
import pandas as pd vg_df = pd.read_csv('datasets/vgsales.csv', encoding = "ISO-8859-1") # print(vg_df[['Name', 'Platform', 'Year', 'Genre', 'Publisher']].iloc[1:7]) # 第一种方法数字映射编码方式:
# 使用LabelEncoder() 进行编码
from sklearn.preprocessing import LabelEncoder Gen_encode = LabelEncoder()
Gen_labels = Gen_encode.fit_transform(vg_df['Genre'])
Gen_map = {encode: label for label, encode in enumerate(Gen_encode.classes_)}
print(Gen_map)
vg_df['Genre_en'] = Gen_labels
print(vg_df[['Name', 'Platform', 'Year', 'Genre', 'Genre_en']].iloc[1:7]) # 第二种方法:使用map进行直接的数字编码映射
map_dict = {'Action': 0, 'Adventure': 1, 'Fighting': 2, 'Misc': 3, 'Platform': 4, 'Puzzle': 5, 'Racing': 6, 'Role-Playing': 7, 'Shooter': 8, 'Simulation': 9, 'Sports': 10, 'Strategy': 11}
vg_df['Genre_en'] = vg_df['Genre'].map(map_dict)
print(vg_df[['Name', 'Platform', 'Year', 'Genre', 'Genre_en']].iloc[1:7]) # One-hot编码方式
# 第一种方式
# 使用onehot对离散值进行编码,使用的是OneHotEncoder from sklearn.preprocessing import OneHotEncoder, LabelEncoder One_encode = OneHotEncoder()
label_encode = LabelEncoder()
poke_df = pd.read_csv('datasets/Pokemon.csv', encoding='utf-8')
# 将数据进行打乱
poke_df = poke_df.sample(frac=1, random_state=1).reset_index(drop=False)
label_classes = label_encode.fit_transform(poke_df['Generation'])
# 打印出类别
print(label_encode.classes_)
One_val = One_encode.fit_transform(poke_df['Generation'].values.reshape(-1, 1)).toarray()
One_dict_encode = {label_encode.classes_[j]: One_val[:, j] for j in range(len(label_encode.classes_))}
One_pd_encode = pd.DataFrame(One_dict_encode)
print(One_pd_encode)
# 将两个pd进行组合
poke_df[One_pd_encode.columns] = One_pd_encode[One_pd_encode.columns] Leg_label = label_encode.fit_transform(poke_df['Legendary'])
Leg_classes = label_encode.classes_ Leg_one = One_encode.fit_transform(poke_df['Legendary'].values.reshape(-1, 1)).toarray()
# 作为每一列的类名
Leg_name = ['Leg_'+str(Leg_class) for Leg_class in Leg_classes]
Leg_dict = {Leg_name[j]:Leg_one[:, j] for j in range(len(Leg_name))}
Leg_pd = pd.DataFrame(Leg_dict)
# 使用pd.concat也可以进行组合
poke_df = pd.concat([poke_df, Leg_pd], axis=1)
# poke_df[Leg_pd.columns] = Leg_pd[Leg_pd.columns]
print(poke_df.head()) # 使用onehot编码的第二种方法:使用pd.get_dummies poke_df = pd.read_csv('datasets/Pokemon.csv', encoding='utf-8')
poke_dummy_feature = pd.get_dummies(poke_df['Generation'], drop_first=True)
poke_df = pd.concat([poke_df, poke_dummy_feature], axis=1)
print(poke_df.head())

机器学习入门-数值特征-数字映射和one-hot编码 1.LabelEncoder(进行数据自编码) 2.map(进行字典的数字编码映射) 3.OnehotEncoder(进行one-hot编码) 4.pd.get_dummies(直接对特征进行one-hot编码)的更多相关文章

  1. 机器学习入门-数值特征-数据四分位特征 1.quantile(用于求给定分数位的数值) 2.plt.axvline(用于画出竖线) 3.pd.pcut(对特征进行分位数切分,生成新的特征)

    函数说明: 1.  .quantile(cut_list) 对DataFrame类型直接使用,用于求出给定列表中分数的数值,这里用来求出4分位出的数值 2.  plt.axvline()  # 用于画 ...

  2. 机器学习入门-数值特征-进行多项式变化(将特征投影到高维度上) 1.PolynomialFeatures(将数据变化为多项式特征)

    函数说明: 1. PolynomialFeatures(degree=2, interaction_only=False, include_bias=False) 参数说明:degree=2,表示多项 ...

  3. 机器学习入门-数值特征-对数据进行log变化

    对于一些标签和特征来说,分布不一定符合正态分布,而在实际的运算过程中则需要数据能够符合正态分布 因此我们需要对特征进行log变化,使得数据在一定程度上可以符合正态分布 进行log变化,就是对数据使用n ...

  4. 机器学习入门-数值特征-连续数据离散化(进行分段标记处理) 1.hist(Dataframe格式直接画直方图)

    函数说明: 1. .hist 对于Dataframe格式的数据,我们可以使用.hist直接画出直方图 对于一些像年龄和工资一样的连续数据,我们可以对其进行分段标记处理,使得这些连续的数据变成离散化 就 ...

  5. 机器学习入门-数值特征-进行二值化变化 1.Binarizer(进行数据的二值化操作)

    函数说明: 1. Binarizer(threshold=0.9) 将数据进行二值化,threshold表示大于0.9的数据为1,小于0.9的数据为0 对于一些数值型的特征:存在0还有其他的一些数 二 ...

  6. 机器学习入门-随机森林温度预测的案例 1.datetime.datetime.datetime(将字符串转为为日期格式) 2.pd.get_dummies(将文本标签转换为one-hot编码) 3.rf.feature_importances_(研究样本特征的重要性) 4.fig.autofmt_xdate(rotation=60) 对标签进行翻转

    在这个案例中: 1. datetime.datetime.strptime(data, '%Y-%m-%d') # 由字符串格式转换为日期格式 2. pd.get_dummies(features)  ...

  7. 机器学习入门 - Google机器学习速成课程 - 笔记汇总

    机器学习入门 - Google机器学习速成课程 https://www.cnblogs.com/anliven/p/6107783.html MLCC简介 前提条件和准备工作 完成课程的下一步 机器学 ...

  8. 机器学习入门-随机森林温度预测-增加样本数据 1.sns.pairplot(画出两个关系的散点图) 2.MAE(平均绝对误差) 3.MAPE(准确率指标)

    在上一个博客中,我们构建了随机森林温度预测的基础模型,并且研究了特征重要性. 在这个博客中,我们将从两方面来研究数据对预测结果的影响 第一方面:特征不变,只增加样本的数据 第二方面:增加特征数,增加样 ...

  9. Pythoncookbook(数据结构与算法)在字典中将键映射到多个值上的方法

    Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法 本文实例讲述了Python在字典中将键映射到多个值上的方法.分享给大家供大家参考,具体如下: 问题:一个能将键(key ...

随机推荐

  1. ES6必知必会 (五)—— Promise 对象

    Promise 对象 1.Promise对象是ES6对异步编程的一种解决方案,它有以下两个特点: Promise对象代表一个异步操作,它只有三种状态:Pending(进行中).Resolved(已完成 ...

  2. 开源泛域名服务xip.io部署试用

    xip.io 是一个很方便的泛域名服务,类似的有一个xip.name 的开源实现 下载 go get github.com/peterhellberg/xip.name 启动 二进制包在GOPATH/ ...

  3. Jersey RESTful Web服务

    Jersey是一个RESTFUL请求服务JAVA框架,与常规的JAVA编程使用的struts框架类似,它主要用于处理业务逻辑层.与Struts类似,它同样可以和hibernate,spring框架整合 ...

  4. 使用点聚 weboffice 以及vsto、 web service 实现word 的自动化文档处理

    开发环境的搭建: 1.visual studio 2010 2. 点聚web office 开发步骤 1. 创建word vsto 项目 比较简单 1. 添加任务窗格 页面如下: 代码如下: 1. 使 ...

  5. TensorFlow笔记-04-神经网络的实现过程,前向传播

    TensorFlow笔记-04-神经网络的实现过程,前向传播 基于TensorFlow的NN:用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型 张量(tenso ...

  6. Sql语句导出数据库表结构及查询表视图储存过程名

    --一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colo ...

  7. 3种web会话管理方式:基于server端session方式、cookie-based方式、token-based方式

    出处:http://www.cnblogs.com/lyzg/p/6067766.html

  8. java 多线程之:join() 方法

    join()介绍 join() 定义在java.lang.Thread中. join() 的作用:让"主线程"等待"子线程"结束之后才能继续运行.

  9. webpack 的插件 DllPlugin 和 DllReferencePlugin

    在项目中,引入了比较多的第三方库,导致项目大,而每次修改,都不会去修改到这些库,构建却都要再打包这些库,浪费了不少时间.所以,把这些不常变动的第三方库都提取出来,下次 build 的时候不再构建这些库 ...

  10. java 访问修饰符:public protected default private