机器学习笔记7-监督学习

规一化数字特征

除了对于高度倾斜的特征施加转换,对数值特征施加一些形式的缩放一般会是一个好的习惯。在数据上面施加一个缩放并不会改变数据分布的形式(好比上面说的'capital-gain' or 'capital-loss');可是,规一化保证了每个特征在使用监督学习器的时候可以被平等的对待。注意一旦使用了缩放,观察数据的原始形式再也不具备它原本的意义了,就像下面的例子展现的。html

运行下面的代码单元来规一化每个数字特征。咱们将使用sklearn.preprocessing.MinMaxScaler来完成这个任务。python

from sklearn.preprocessing import MinMaxScaler

# 初始化一个 scaler,并将它施加到特征上
scaler = MinMaxScaler()
numerical = ['age', 'education-num', 'capital-gain', 'capital-loss', 'hours-per-week']
features_raw[numerical] = scaler.fit_transform(data[numerical])

# 显示一个通过缩放的样例记录
display(features_raw.head(n = 1))
age workclass education_level education-num marital-status occupation relationship race sex capital-gain capital-loss hours-per-week native-country
0 0.30137 State-gov Bachelors 0.8 Never-married Adm-clerical Not-in-family White Male 0.02174 0.0 0.397959 United-States

练习:数据预处理

从上面的数据探索中的表中,咱们能够看到有几个属性的每一条记录都是非数字的。一般状况下,学习算法指望输入是数字的,这要求非数字的特征(称为类别变量)被转换。转换类别变量的一种流行的方法是使用独热编码方案。独热编码为每个非数字特征的每个可能的类别建立一个“虚拟”变量。例如,假设someFeature有三个可能的取值AB或者C,。咱们将把这个特征编码成someFeature_AsomeFeature_BsomeFeature_C.算法

特征X   特征X_A 特征X_B 特征X_C
B   0 1 0
C ----> 独热编码 ----> 0 0 1
A   1 0 0

此外,对于非数字的特征,咱们须要将非数字的标签'income'转换成数值以保证学习算法可以正常工做。由于这个标签只有两种可能的类别("<=50K"和">50K"),咱们没必要要使用独热编码,能够直接将他们编码分别成两个类01,在下面的代码单元中你将实现如下功能:api

  • 使用pandas.get_dummies()'features_raw'数据来施加一个独热编码。
  • 将目标标签'income_raw'转换成数字项。
    • 将"<=50K"转换成0;将">50K"转换成1
相关文章
相关标签/搜索