陆贞传奇,曲阜师范大学,小栗旬-雷竞技投注_雷竞技网站_雷竞技newbee官方主赞助商

频道:国际新闻 日期: 浏览:235

特征预处理是数据发掘中最重要的过程。在这篇文章中,我将向你介绍特征预处理的概念,它的重要性,不同的机器学习模型下的数值特征的不同特征预处理技能。

模型的质量在很大程度上取决于输入模型的数据。当从数据发掘过程中搜集数据时,会丢掉一些数据(咱们将其称为丢掉值)。此外,它很简略遭到噪音的影响。这都导致低质量数据的成果,正如你或许现已听说过的,模型的好坏取决于它所练习的数据。

这便是特征预处理的由来,特征预处理将原始数据转换为机器学习模型可用的数据。

不同类型的机器学习模型

首要,让咱们看看机器学习模型的不同类别。这儿,咱们将模型分为两种类型:

  1. 根据树的模型:根据树的模型是一种监督学习模型,能够在捕捉杂乱非线性联系的一起供给高精度和稳定性。根据树的决策树模型有随机森林模型和梯度增强决策树模型。
  2. 非树模型:一切其他监督学习模型都归于非树模型的领域。线性模型、K近邻模型和神经网络是根据非树模型的一些比如福五鼠之蒙古侵略。

不同的数据类型或特征

一个妈妈挺动数据集能够包含各种数据类型或特征。以下是一些最常见的安堂奈奈数据类型:

  1. 数值特征
  2. 分类特征和次序特征
  3. 日期和时刻
  4. 文本
  5. 图画

不同的数据类型和不同的机器学习模型需求不同类型的特征预处理。一些预处理办法关于一切数据类型都是通用的。

数值数据的特征预处理

数值数据有丈量或计数的含义。数值数据的比如包含雇员的薪酬、年纪和具有的房子数量。数值数据能够进一步分为两种类型:离散陆贞传奇,曲阜师范大学,小栗旬-雷竞技投注_雷竞技网站_雷竞技newbee官方主赞助商型和接连型。在上面的比如中,一个职工的薪酬是接连的数据,一个人的年纪和具有的房子数量是离散的数据。

让咱们研究一下来自Kaggle的SF salary数据会集旧金山市的职工薪酬数据。

在这个数据会集,特征BasePay, OvertimePa陆贞传奇,曲阜师范大学,小栗旬-雷竞技投注_雷竞技网站_雷竞技newbee官方主赞助商y, OtherPay, TotalPay, TotalPayBenefits和Year是数值特征。

让咱们挑选一个特征并对其进行探索性数据剖析。

这儿是TotalPay特征的直方图。

从上图中咱们能够看出,数据的散布是巨大的。值的规模从0到50,000左右。

假如咱们运用p宋孝真anda中的describe()函数看数据散布,咱们得到:

count 148654.000000
mean 74768.321972
std 50517.005274
min -618.130000
25% 36168.995000
50% 71426.610000
75% 10马未都老婆贾雄伟相片5839.135000
max 567595.430000
Name: TotalPay, dtype: float64

为了有效地使先岛诸岛用该特征,咱们需求运用以下试剑古谱任何一种办法对该特征进行预处理。

1. 特征缩放(归一化)

特征缩放是一种对数据的自变量或特征规模进行归一化的办法。它一般韩雨芹孙宁被称为标准化。与根据树的模型比较,特征缩放对非树模型的影响更大。因而,假如你想运用非根据树的模型取得杰出的成果,你应该考虑规范化你的数值特征。

有不同的办法来归一化特征。以下是一些常见的比如:

  • Rescaling (Min-Max归一化):这是一种最简略的归一化,将特征从头划分为[0,1]规模。

下面是运用sklearn库中的MinMaxScaler函数在python中履行Min-Max归一化的代码片段。

from sklear陆贞传奇,曲阜师范大学,小栗旬-雷竞技投注_雷竞技网站_雷竞技newbee官方主赞助商n.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
TotalPayReshaped = df.TotalPay.as_matrix().reshape(-1, 1)
df.TotalPay = schyzmaler.fit_transform(TotalPayReshaped)
df.hist(figsize=(15,6), column=[‘TotalPay’])

对TotalPay特征进行Min-Max归一化后运用de简至人人通scribe()检查的成果如下。咱们能够看到TotalPay的最小值是0,最大值是1。

count 148654.000000
mean 0.132673
std 0.0陆贞传奇,曲阜师范大学,小栗旬-雷竞技投注_雷竞技网站_雷竞技newbee官方主赞助商88905
min 0.000000
25% 0.064742
50% 0.126792
75% 0.187354
max 1.陆贞传奇,曲阜师范大学,小栗旬-雷竞技投注_雷竞技网站_雷竞技newbee官方主赞助商000000
Name: TotalPay, dtype: float64
  • Standardization (Z-score归一化):在这种归一化中,对一个特征进行缩放,使其均值为零,方差为1。

让咱们对原始的艺电易玩TotalPay特征履行Z-score归一化。下面是运用sklearn库中的StandardScaler函数在python中履行此类归一化的代码片段。

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
TotalPayReshaped = df.TotalPay.as_matrix().reshape(-1, 1)
df.TotalPay = scaler.fit_transform(TotalPayReshaped)
df.hist(figsize=(15,6), column=[‘TotalPay’])

对TotalPay特征进行Z-score归一化后的成果如下。咱们能够看到,TotalPay的均值接近于0,标准差为1。

count 1.486540e+05
mea搅舌n -2.707706e-15
std 1.000003e+00
min -1.492304e+00
25% -7陆贞传奇,曲阜师范大学,小栗旬-雷竞技投注_雷竞技网站_雷竞技newbee官方主赞助商.640884e-01
50% -6.615046e-02
75% 6.150586e-01
max 9.755700e+00
Name: TotalPay, dtype: float64

2. 离群值删去

在统计学中,离群点是一个与其他观测值间隔较远的观测点。 --维基百科

有时,经过从数据中删去离群值,能够明显进步机器学习模型的功能。关于非根据树的模型也是如此。另一方面,根据树的模型对离群值具有较强的鲁棒性。

下面的代码片段将从TotalPay特征中删去1%的数据。

x = df.TotalPay
UPPERBOUND, LOWERBOUND = np.percentile(x, [1,9黄婷婷应援会9])
y = np.clip(x, UPPERBOUND, LOWERBOUND)
pd.DataFrame(y).hist()

去除离群值后运用describe()检查TotalPay特征的成果如下。

count 148654.000000
mean 74502.923277
std 49644.336571
min 286.971000
25% 36168.995000
5后宫懿妃传0% 71426.610000
75% 105王加行839.135000
max 207015.797400
Name: TotalPay, 陆贞传奇,曲阜师范大学,小栗旬-雷竞技投注_雷竞技网站_雷竞技newbee官方主赞助商dtype: float64

3. 排序改换

根据非树的模型能够从秩改换中获益。假如你没有时刻手动处理离群值,这是一种十分便利的技能。当变量是标称变量时,排序改换特别有用,在标称变量中,不同值之间的次序比值更重要。

能够运用scipy库中的rankdata办法将特征值转换为对应排序后的索引。

4. 对数改换

当你期望下降数据的可变性时,对数改换是另一种常用的技能。对数改换的另一个盛行用法是当数据散布高度歪斜时。

下面是用Python履行对数改换的代码片段。

df['LogTotalPay'] = np.log(1+df.TotalPay)

对TotalPay特征履行对数改换后运用describe()的成果如下。值的规模从最小值-618.130和最大值567595.43更改为最小值0.00和最大值13.25。经过对这个特征履行对数改换,咱们现已v家黑化曲减少了数据中的方差,即原始特征的标准差约为50,500,而对数改换特征的标准差为1.41。

count 148653.000000
mean 10.739295
std 1.413888
min 0.000000
25% 10.495993
50% 11.176446
75% 杨梦樱11.569692
max 13.249166
Name: LogTotalPay, dtype: float64

在本文中,我谈论了为什么特征预处理被认为是数据发掘过程中的一个重要过程。我列出了数据会集不同类型的特征,并扼要谈论了根据树和非基h黄于树的模型。然后,经过代码示例和直方图图,具体论述了数值特征常用的特征预孙乐欣前妻处理技能,包含归一化、离群点去除和对数改换等。

你最常用什么预处理技能来处理数值特征?为什么?请在下面的谈论中留下你的主意。