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. 优化Django ORM中的性能问题(含prefetch_related 和 select_related)

    Django是个好工具,使用的很广泛. 在应用比较小的时候,会觉得它很快,但是随着应用复杂和壮大,就显得没那么高效了.当你了解所用的Web框架一些内部机制之后,才能写成比较高效的代码. 怎么查问题 W ...

  2. Linux中的其他命令

    1.  修改文件的所有者 chown 用户名  文件名 2. 修改文件所属组 chgrp 组名  文件名 3. 创建用户,创建组,将用户添加到组中等 修改film文件夹的所有者和所属组 修改film文 ...

  3. Angular 4 路由介绍

    Angular 4 路由 1. 创建工程 ng new router --routing 2. 创建home和product组件 ng g component home ng g component ...

  4. php设计模式之职责链模式

    <?php /** * @desc php设计模式之职责链模式(责任链模式) 定义:顾名思义,责任链模式为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这 ...

  5. 【jmeter】Jmeter启动GUI界面出错

    今天要用Jmeter测试服务器性能,发现GUI界面总是有warning提示: WARNING: Could not open/create prefs root node Software\JavaS ...

  6. 【selenium】HTMLTestRunner测试报告生成

    __author__ = 'Administrator' #coding=utf-8 from selenium import webdriver from selenium.webdriver.co ...

  7. qt creator 快捷键 (一)

    F1        查看帮助F2        跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2    声明和定义之间切换F4        头文件和源文件之间切换Ctrl+1     ...

  8. PHP中header的用法总结

    来源 :http://blog.sina.com.cn/s/blog_7298f36f01011dxv.html header的用法 header()函数的作用是:发送一个原始 HTTP 标头[Htt ...

  9. fiddler抓包HTTPS请求

    fiddler抓包HTTPS请求 标签: fiddlerhttps抓包 2016-03-29 21:24 23293人阅读 评论(2) 收藏 举报  分类: 不登高山不知天之高也(1)  版权声明:本 ...

  10. a标签不用点击模拟跳转url。

    因为请求到数据前要判断用户是否是登录状态, 所以就想页面数据请求成功,就跳转到登录页面, 就用了location.href = url. 结果因为同源策略不能访问, 没想到a标签竟然可以直接跳转这个U ...