3、创建特性(Creating Features)

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

文章目录

  • 1、简介
  • 2、数学变换
  • 3、计数
  • 4、构建和分解特征
  • 5、分组转换

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]);
/

你可能感兴趣的:(数据特征工程,Feature,Engineering,特征工程,数据分析,机器学习,python)