多变量特征衍生

1.多项式特征衍生

import pandas as pd
pd.set_option('display.max_columns',None)#显示所有列
data=pd.read_csv(r"C:\Users\15187\Desktop\games1.csv")
input=data[["gameDuration","firstBlood"]]#这里要嵌套两个列表

下图是使用的数据结构
在这里插入图片描述

1.1使用sklearn中PolynomialFeatures方法进行特征衍生

from sklearn.preprocessing import PolynomialFeatures
poly=PolynomialFeatures(degree=2,include_bias=False)
result=poly.fit_transform(input)
input_ploly_df = pd.DataFrame(result, columns=poly.get_feature_names())
print(input_ploly_df)

PolynomialFeatures主要关注两个参数
interaction_only:默认为False,如果选择True,表示只创建交叉项
include_bias,默认为True,即考虑计算特征的0次方,除了需要人工捕捉截距,否则建议修改为False。因为全是1的列没有包含任何有效信息。
运行结果:在这里插入图片描述

2.交叉特征衍生(两个离散变量常用情景)

下面给出普通代码(包含两个过程:1.生成交叉特征衍生新变量。2.对新变量进行one——hot编码)

import pandas as pd
pd.set_option('display.max_columns',None)#显示所有列
data=pd.read_csv(r"C:\Users\15187\Desktop\games1.csv")
#print(data)
colums=["firstBaron","firstDragon","firstRiftHerald"]
input=data[colums]
#首先定义特征衍生名称
new_colname=[]#存储新生成变量名
new_values=[]#存储重新生成的交叉特征值(1&0,1&1)
for col_index,col_name in enumerate(colums):
    for col_sub_index in range(col_index+1,len(colums)):
        newname=col_name+"&"+colums[col_sub_index]
        new_colname.append(newname)
        new_values_df=pd.Series(input[col_name].astype("str")+"&"+input[colums[col_sub_index]].astype("str"),name=newname)
        new_values.append(new_values_df)
new_features=pd.concat(new_values,axis=1)#生成数据框形式的新变量
new_features.columns=new_colname#将数据框列名进行替代
new_df=pd.DataFrame()#存储one——hot编码最终结果
#one——hot编码过程
for name in new_colname:
    new_df1=pd.get_dummies(new_features[name], prefix=name)
    new_df=pd.concat([new_df,new_df1],axis=1)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值