【机器学习课程】第三章特征工程 1.特征构造1.2 多变量特征构造(特征衍生)

1.2 多变量特征构造(特征衍生)

1.2.1双变量四则运算方法构造特征

1.在业务场景中,有关联的数据列通过简单的运算,将计算结果存储为新的特征列。

2.发现有用的、高贡献的特征,对核心特征重点进行衍生尝试。

import pandas as pd

data=[[1,1],[2,77],[3,60]]
data = pd.DataFrame(data)
data.columns=['x1','x2']

data['x1+x2'] = data['x1']+data['x2']
data['x1-x2'] = data['x1']-data['x2']
data['x2-x1'] = data['x2']-data['x1']
data['x1*x2'] = data['x1']*data['x2']
data['x1/x2'] = data['x1']/data['x2']
data['x2/x1'] = data['x2']/data['x1']
print(data)

'''Out:
   x1  x2  x1+x2  x1-x2  x2-x1  x1*x2     x1/x2  x2/x1
0   1   1      2      0      0      1  1.000000    1.0
1   2  77     79    -75     75    154  0.025974   38.5
2   3  60     63    -57     57    180  0.050000   20.0
'''

1.2.2双变量高阶多项式

将两个变量的值进行幂运算(取0次幂、1次幂、2次幂、3次幂,),并完成组合得到新的特征。

通过调用PolynomialFeatures评估器函数生成多项式计算结果
PolynomialFeatures(degree,interaction_only=False,includeb_bias=True)

*degree: 阶数(幂次)

*interaction_only:默认为False ,仅考虑两项交叉的到的新特征

*includeb_bias: 默认为True,考率计算特征的0次方

from sklearn.preprocessing import PolynomialFeatures

data=[[1,2],[3,4],[5,6]]
data = pd.DataFrame(data)
colname=['x1','x2']
data.columns=colname
degree =2 #最大阶数
col_name_list=[] #新生成特征名称

#两层循环生成新变量名称
for d in range(2,degree+1): 
    for i in range(d+1):
        col_name_str=colname[0]+'^'+str(d-i) +'*'+colname[1]+'^'+str(i)
        
        col_name_list.append(col_name_str)
print(col_name_list)
'''Out:
['x1^2*x2^0', 'x1^1*x2^1', 'x1^0*x2^2']
'''

# 生成高阶多项式计算结果
res=  PolynomialFeatures(degree=degree,include_bias=False,interaction_only=True).fit_transform(data)
df = pd.DataFrame(res)
df.columns=col_name_list

# 原始数据和生成特征合并
data = pd.concat([data,df],axis=1)  # 横向合并
print(data)
'''Out:
   x1  x2  x1^2*x2^0  x1^1*x2^1  x1^0*x2^2
0   1   2        1.0        2.0        2.0
1   3   4        3.0        4.0       12.0
2   5   6        5.0        6.0       30.0
'''

1.2.3双变量交叉组合生成新特征

将不同离散变量的不同取值两两组合,创建出新特征。

这里需要注意如果某特征的取值内容过多,会导致生成的特征过于稀疏。

下列例子,使用诊断时病人的状态特征为例,每个特征的取值内容仅有两个,三个特征,两两成组生成3个新特征。
在这里插入图片描述

# 创建空列表用于存储衍生后的特征名称和特征
colNames_new_l = []
features_new_l = []

data=[['yes','no','yes'],['no','yes','yes'],['yes','yes','yes']]
data = pd.DataFrame(data)
col_names=['咳嗽','发烧','流涕']
data.columns=col_names
print(data)

# enumerate过程
for col_index, col_name in enumerate(col_names):
    print(col_index, col_name)
    
# 衍生特征列名称
for col_index, col_name in enumerate(col_names):
    for col_sub_index in range(col_index+1, len(col_names)):
        newNames = col_name + '&' + col_names[col_sub_index]
        print(newNames)
        
# 创建衍生特征列名称及特征本身
for col_index, col_name in enumerate(col_names):
    for col_sub_index in range(col_index+1, len(col_names)):
        
        newNames = col_name + '&' + col_names[col_sub_index]
        colNames_new_l.append(newNames)
        
        newDF = pd.Series(data[col_name].astype('str') 
                          + '&'
                          + data[col_names[col_sub_index]].astype('str'), 
                          name=col_name)
        features_new_l.append(newDF)

features_new = pd.concat(features_new_l, axis=1)
features_new.columns = colNames_new_l
features_new
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
特工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。它包括特征抽取、特征预处理和特征降维等内容。特征工程对于机器学习的效果具有直接影响。 在Python中进行机器学习特征工程,可以使用多个库和工具来完成。下面是一些常用的Python库和工具: 1. Scikit-learn:Scikit-learn是一个功能丰富的机器学习库,提供了许多特征工程的方法,包括特征抽取、特征预处理和特征降维等。你可以使用Scikit-learn来进行特征选择、标准化、缺失值处理等操作。 2. Pandas:Pandas是一个用于数据分析和处理的库,提供了丰富的数据操作功能。你可以使用Pandas来加载和清洗数据,进行数据预处理和特征选择。 3. Numpy:Numpy是Python中一个强大的数值计算库,提供了高效的数组操作功能。你可以使用Numpy来进行数值特征的处理,如归一化、标准化和缩放等。 4. Featuretools:Featuretools是一个用于自动特征工程的库,它可以根据数据的结构和关系自动生成特征。你可以使用Featuretools来创建新的特征,通过组合和聚合现有特征。 5. Feature-Engine:Feature-Engine是一个专注于特征工程的库,提供了多个特征处理方法。你可以使用Feature-Engine来处理缺失值、离群值、编码分类变量等。 在进行机器学习特征工程时,你需要根据具体的问题和数据集选择适合的方法和工具。通过合理的特征工程处理,可以提高机器学习模型的性能和准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值