3、创建特性(Creating Features)

使用Pandas转换特性以适合您的模型。

1、简介

一旦你确定了一组有潜力的特性,就可以开始开发它们了。在这节课中,你将学习如何在Pandas中进行一些常见的转换。如果你对Pandas不熟练, 请参考《从零开始的Pandas之旅_AI算法蒋同学的博客-CSDN博客》进行学习。

我们将在本课中使用四个数据集,它们具有各种特性类型:美国交通事故1985年的汽车混凝土配方,和客户终身价值。下面的隐藏单元格加载它们。

In [1]:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

plt.style.use("seaborn-whitegrid")
plt.rc("figure", autolayout=True)
plt.rc(
    "axes",
    labelweight="bold",
    labelsize="large",
    titleweight="bold",
    titlesize=14,
    titlepad=10,
)

accidents = pd.read_csv("../input/fe-course-data/accidents.csv")
autos = pd.read_csv("../input/fe-course-data/autos.csv")
concrete = pd.read_csv("../input/fe-course-data/concrete.csv")
customer = pd.read_csv("../input/fe-course-data/customer.csv")

发现新特性的提示

  • 理解特性。如果有的话,参考你的数据集的数据文档
  • 研究问题领域以获取领域知识。例如,如果你的问题是预测房价,那么可以研究一下房地产。维基百科可以作为一个很好的起点,但是书籍和期刊文章通常会有最好的信息。
  • 学习以前的工作。过去Kaggle比赛的解决方案写作是一个很好的资源。
  • 使用数据可视化。可视化可以揭示特性分布的病态或者可以简化的复杂关系。在进行特性工程过程中,一定要可视化你的数据集。

2、数学变换

数值特性之间的关系通常通过数学公式来表达,这些公式你在领域研究中经常会遇到。在Pandas中,你可以将算术运算应用到列上,就像它们是普通的数字一样。

汽车数据集中有描述汽车引擎的特性。研究得出了创建潜在有用新特性的各种公式。例如,"冲程比"是一个衡量引擎效率与性能的指标:

In [2]:

autos["stroke_ratio"] = autos.stroke / autos.bore

autos[["stroke", "bore", "stroke_ratio"]].head()

Out[2]:

stroke bore stroke_ratio
0 2.68 3.47 0.772334
1 2.68 3.47 0.772334
2 3.47 2.68 1.294776
3 3.40 3.19 1.065831
4 3.40 3.19 1.065831

组合越复杂,模型学习起来就越困难,比如这个引擎的"排量"公式,它是衡量引擎功率的指标:

In [3]:

autos["displacement"] = (
    np.pi * ((0.5 * autos.bore) ** 2) * autos.stroke * autos.num_of_cylinders
)

数据可视化可以建议转换,通常是通过幂或对数对特性进行"重塑"。例如,美国事故中的WindSpeed分布是高度偏斜的。在这种情况下,对数对其进行标准化是有效的:

In [4]:

# 如果特性有0.0值,使用np.log1p (log(1+x))而不是np.log
accidents["LogWindSpeed"] = accidents.WindSpeed.apply(np.log1p)

# 绘制比较图
fig, axs = plt.subplots(1, 2, figsize=(8, 4))
sns.kdeplot(accidents.WindSpeed, shade=True, ax=axs[0])
sns.kdeplot(accidents.LogWindSpeed, shade=True, ax=axs[1]);
/opt/conda/lib/python3.7/site-packages
  • 24
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法蒋同学

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值