机器学习第二课_数据预处理

数值型特征分箱(数据离散化)

2.1 无监督分箱法

等距分箱

import pandas as pd

df = pd.DataFrame([[22,1],[13,1],[33,1],[52,0],[16,0],[42,1],[53,1],[39,1],[26,0],[66,0]],columns=['age','Y'])

df['age_bin_2'] = pd.cut(df['age'],3)  #新增一列存储等距划分的分箱特征

display(df)

等频分箱

import pandas as pd

df = pd.DataFrame([[22,1],[13,1],[33,1],[52,0],[16,0],[42,1],[53,1],[39,1],[26,0],[66,0]],columns=['age','Y'])

df['age_bin_1'] = pd.qcut(df['age'],3) #新增一列存储等频划分的分箱特征

display(df)

聚类分箱

基于k均值聚类的分箱:k均值聚类法将观测值聚为k类,但在聚类过程中需要保证分箱的有序性:第一个分箱中所有观测值都要小于第二个分箱中的观测值,第二个分箱中所有观测值都要小于第三个分箱中的观测值,等等。

from sklearn.cluster import KMeans

kmodel=KMeans(n_clusters=k)  #k为聚成几类

kmodel.fit(data.reshape(len(data),1))) #训练模型

c=pd.DataFrame(kmodel.cluster_centers_) #求聚类中心

c=c.sort_values(by=’列索引') #排序

w=pd.rolling_mean(c,2).iloc[1:] #用滑动窗口求均值的方法求相邻两项求中点,作为边界点

w=[0] +list(w[0] + [ data.max() ]  #把首末边界点加上

d3= pd.cut(data,w,labels=range(k)) #cut函数


2.2 二值化

对定量特征二值化(对列向量处理)

from sklearn.preprocessing import Binarizer

#二值化,阈值设置为3,返回值为二值化后的数据 ;>3显示为1,否则为0

print(iris.data)

Binarizer(threshold=3).fit_transform(iris.data)

对定性特征哑编码(对列向量处理)

from sklearn.preprocessing import OneHotEncoder

#哑编码,对IRIS数据集的目标值,返回值为哑编码后的数据

print(OneHotEncoder().fit_transform(iris.target.reshape((-1,1))))

2.3 无监督分箱法

总结:11种降维方法(未写)

特征选择方法(待补充)

选择特征的角度很多:变量的预测能力,变量之间的相关性,变量的简单性(容易生成和使用),变量的强壮性(不容易被绕过),变量在业务上的可解释性(被挑战时可以解释的通)等等。但是,其中最主要和最直接的衡量标准是变量的预测能力。

预测能力衡量:IV值,信息增益,基尼系数等;

1、特征选择:特征发散,如果一个特征不发散,方差为0,说明样本在这个特征上基本没有差异,这个特征对于样本区分基本没用

2、特征选择:考虑特征与目标的相关性,优先选择与目标相关性高的特征!

3、根据方差选择特征:计算各个特征的方差,选择方差大于阈值的特征

4、单变量特征选择:计算每个特征与y的相关性;对于回归问题或分类问题可以采用卡方检验的方式对特征进行检测

5、皮尔逊相关系数(适用于回归问题即y连续),简单实用

6、基于模型的特征融合方法:主成分分析,聚类,支持向量机,随机森林都可以作为筛选特征的方法

你可能感兴趣的:(机器学习第二课_数据预处理)