工程代码_特征工程学习,19 项实践 Tips!代码已开源!
点击上方“AI有道”,选择“星标”公众号
重磅干货,第一时间送达
随着我们在机器学习、数据建模、数据挖掘分析这条发展路上越走越远,其实越会感觉到特征工程的重要性,平时我们在很多地方都会看到一些很好的特征工程技巧,但是都会是一个完整项目去阅读,虽然说这样子也可以学习挖掘思路,但有的时候浓缩的技巧总结也是十分重要!
GitHub上有一个专门针对特征工程技巧的“锦囊”,叫做《Tips-of-Feature-engineering》,作者把网路上、书本上的一些特征工程的项目,抽取其中的挖掘技巧,并把这些小技巧打包成一个又一个的小锦囊,供大家去检索并且学习,还蛮不错的!
项目地址为:
https://github.com/Pysamlam/Tips-of-Feature-engineering
大家可以先看看目前更新到的内容明细:
项目目前更新到19节,一般来说是每天一更新,每一节都会有配套的数据集以及代码,下面我们拿几个“锦囊”来看一下!
Tip8:怎么把几个图表一起在同一张图上显示?
这里是使用泰坦尼克号的数据集,前期我们做EDA的时候需要探查数据的分布,从而发现其中的规律,这一节的技巧就是教我们如何画一些常见的图形,同时显示在同一张图上。
关键代码
import matplotlib.pyplot as plt
# 设置figure_size尺寸plt.rcParams['figure.figsize'] = (8.0, 6.0)
fig = plt.figure()
# 设定图表颜色fig.set(alpha=0.2)
# 第一张小图plt.subplot2grid((2,3),(0,0))data_train['Survived'].value_counts().plot(kind='bar')plt.ylabel(u"人数")plt.title(u"船员获救情况 (1为获救)")
# 第二张小图plt.subplot2grid((2,3),(0,1))data_train['Pclass'].value_counts().plot(kind="bar")plt.ylabel(u"人数")plt.title(u"乘客等级分布")
# 第三张小图plt.subplot2grid((2,3),(0,2))plt.scatter(data_train['Survived'], data_train['Age'])plt.ylabel(u"年龄")plt.grid(b=True, which='major', axis='y')plt.title(u"按年龄看获救分布 (1为获救)")
# 第四张小图,分布图plt.subplot2grid((2,3),(1,0), colspan=2)data_train.Age[data_train.Pclass == 1].plot(kind='kde')data_train.Age[data_train.Pclass == 2].plot(kind='kde')data_train.Age[data_train.Pclass == 3].plot(kind='kde')plt.xlabel(u"年龄")plt.ylabel(u"密度")plt.title(u"各等级的乘客年龄分布")plt.legend((u'头等舱', u'2等舱',u'3等舱'),loc='best')
# 第五张小图plt.subplot2grid((2,3),(1,2))data_train.Embarked.value_counts().plot(kind='bar')plt.title(u"各登船口岸上船人数")plt.ylabel(u"人数")plt.show()
我们从上面的可视化操作结果可以看出,其实可以看出一些规律,比如说生还的几率比死亡的要大,然后获救的人在年龄上区别不大,然后就是有钱人(坐头等舱的)的年龄会偏大等。
Tip15:如何使用sklearn的多项式来衍生更多的变量?
关于这种衍生变量的方式,理论其实大家应该很早也都听说过了,但是如何在Python里实现,也就是今天在这里分享给大家,其实也很简单,就是调用sklearn
的PolynomialFeatures
方法,具体大家可以看看下面的demo。
这里使用一个人体加速度数据集,也就是记录一个人在做不同动作时候,在不同方向上的加速度,分别有3个方向,命名为x、y、z。
关键代码
# 扩展数值特征from sklearn.preprocessing import PolynomialFeatures
x = df[['x','y','z']]y = df['activity']
poly = PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)
x_poly = poly.fit_transform(x)pd.DataFrame(x_poly, columns=poly.get_feature_names()).head()
就这样子简单的去调用,就可以生成了很多的新变量了。
Tip17:如何把分布修正为类正态分布?
今天我们用的是一个新的数据集,也是在kaggle上的一个比赛,大家可以先去下载一下:
下载地址:
https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data
import pandas as pdimport numpy as np# Plotsimport seaborn as snsimport matplotlib.pyplot as plt
# 读取数据集train = pd.read_csv('./data/house-prices-advanced-regression-techniques/train.csv')train.head()
首先这个是一个价格预测的题目,在开始前我们需要看看分布情况,可以调用以下的方法来进行绘制:
sns.set_style("white")sns.set_color_codes(palette='deep')f, ax = plt.subplots(figsize=(8, 7))#Check the new distributionsns.distplot(train['SalePrice'], color="b");ax.xaxis.grid(False)ax.set(ylabel="Frequency")ax.set(xlabel="SalePrice")ax.set(title="SalePrice distribution")sns.despine(trim=True, left=True)plt.show()
我们从结果可以看出,销售价格是右偏,而大多数机器学习模型都不能很好地处理非正态分布数据,所以我们可以应用log(1+x)转换来进行修正。那么具体我们可以怎么用Python代码实现呢?
# log(1+x) 转换train["SalePrice_log"] = np.log1p(train["SalePrice"])
sns.set_style("white")sns.set_color_codes(palette='deep')f, ax = plt.subplots(figsize=(8, 7))
sns.distplot(train['SalePrice_log'] , fit=norm, color="b");
# 得到正态分布的参数(mu, sigma) = norm.fit(train['SalePrice_log'])
plt.legend(['Normal dist. ($\mu=$ {:.2f} and $\sigma=$ {:.2f} )'.format(mu, sigma)], loc='best')ax.xaxis.grid(False)ax.set(ylabel="Frequency")ax.set(xlabel="SalePrice")ax.set(title="SalePrice distribution")sns.despine(trim=True, left=True)
plt.show()
目前这个项目更新到了19节,但是会持续不断更新“锦囊”,欢迎大家来进行star哦!
项目地址为:
https://github.com/Pysamlam/Tips-of-Feature-engineering
推荐阅读
(点击标题可跳转阅读)
干货 | 公众号历史文章精选
我的深度学习入门路线
我的机器学习入门路线图
麻烦给个在看
工程代码_特征工程学习,19 项实践 Tips!代码已开源!相关推荐
- 特征工程学习,19项实践Tips!代码已开源!
随着我们在机器学习.数据建模.数据挖掘分析这条发展路上越走越远,其实越会感觉到特征工程的重要性,平时我们在很多地方都会看到一些很好的特征工程技巧,但是都会是一个完整项目去阅读,虽然说这样子也可以学习挖 ...
- 特征工程学习,19 项实践 Tips!代码已开源!
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 随着我们在机器学习.数据建模.数据挖掘分析这条发展路上越走越远,其实越会感觉到特征工程 ...
- 「推荐系统中的特征工程」1. 特征工程基础知识介绍
作者 | gongyouliu 编辑 | auroral-L 全文共6858字,预计阅读35分钟. 本章目录 一.特征的基本概念 二.特征工程介绍 三.特征工程的基本思路和方法 1. 根据不同数据类型 ...
- word2vec模型评估_特征工程(下)—特征评估
点击上方"大数据与人工智能","星标或置顶公众号" 第一时间获取好内容 作者丨stephenDC 编辑丨Zandy 这是作者的第15篇文章 本文是特征工程系列的 ...
- python plt画半对数坐标_特征工程大传:对数变换
(欢迎各位关注,本专栏会对机器学习的特征工程中一些实用的处理方法进行介绍,该系列篇幅较短,力求阐述其核心并提供相应的实现方法.) 对数变换是一种常用的特征工程方法.一般对于数值大于0的重尾分布数据,我 ...
- 多取值离散型特征工程_特征工程(完)
机器学习入门系列(2)--如何构建一个完整的机器学习项目,第六篇! 这也是特征工程系列最后一篇文章,介绍特征提取.特征选择.特征构建三个工作,通常特征工程被认为分为这三方面的内容,只是我将前面的数据& ...
- 机器学习系列(5)_特征工程02特征提取
文章目录 一.Filter过滤法 1.方差过滤 (1)使用KNN进行考察 (2)使用随机森林(RFC)进行考察 2.相关性过滤 (1)卡方过滤 (2) 用随机森林进行比较特征选择 (3)选取超参数 ( ...
- 机器学习系列(3)_特征工程01数据预处理
参考链接: 1.scikit-learn官网 2.sklearn提供的自带的数据集 3.Kaggle官网 4.数据挖掘--无量纲化 文章目录 一.数据中台 二.sklearn中的数据预处理与特征工程 ...
- 线性稀疏自编码机_特征工程之特征缩放amp;特征编码
机器学习入门系列(2)--如何构建一个完整的机器学习项目,第五篇! 本篇文章会继续介绍特征工程的内容,这次会介绍特征缩放和特征编码,前者主要是归一化和正则化,用于消除量纲关系的影响,后者包括了序号编码 ...
最新文章
- tf.io.gfile.glob 遍历文件
- SpringBoot | 第九章:Mybatis-plus的集成和使用
- 【Android 安全】DEX 加密 ( Application 替换 | 兼容 ContentProvider 操作 | 源码资源 )
- 【Python3】Tensorflow_Fasterrcnn训练自己数据集,Keras_Yolov3_GPU训练自己数据集
- Ubuntu使用notify-send 与 crontab 实现定时提醒
- 搭建集群 RabbitMQ SHELL脚本实战_03
- go的实现接口的一个小demo
- php100 swfupload,swfupload上传图片读取最大只有100*75
- 分布式多副本一致性协议:paxos
- gitlab主备同步_gitlab实现主备切换集群
- SQLite学习笔记(二)--VC调用环境搭建
- 那些想上天的亿万富翁,开启了新的“太空竞赛”
- 异名一文带你读懂Chrome小恐龙跑酷!
- 关于IDEA的一些常用的快捷键整合,赶紧进来KK......
- ListView--QQ联系人样式
- 半钧先生:分享一波超赞的冬至文案,句句暖到心!
- [POI2007]ZAP-Queries 莫比乌斯反演(模板)
- zabbix的自定义监控
- Spring系列 1.Spring概述及IOP
- 浅谈能源管理系统在冶金企业中的应用
热门文章
- Spring Boot快速搭建入门程序
- 【C语言】字符串函数strtok 按照指定字符串分割
- HDU1584 蜘蛛牌 DFS回溯
- 计算机与pmac2型卡串口怎么通信,PMAC多轴运动控制卡学习硬件.doc
- 【Java调试】通过SqlSessionFactory类对象获取mapper文件内的动态SQL在执行时的完整SQL及参数(2种使用方法+测试Demo及结果)
- 儿童手表怎么删除联系人_儿童节来了,送孩子400多元的超值礼物,儿童手表9X评测分享...
- 【虚拟化】docker部署Rabbitmq
- 【算法系列之万字总结常用的查找算法,持续补充更新中】
- 力扣刷题常用数据结构和方法(java版本)
- 《数据库系统实训》实验报告——系统安装与数据库搭建