自定义特征选择转换器

自定义特征选择转换器

#保存响应变量
class CustomCorrelationChooser(TransformerMixin,BaseEstimator):
    def __init__(self,response,cols_keep=[],threshold=None):
        #保存响应变量
        self.response=response
        #初始化一个变量,存放要保留的特征名
        self.cols_keep=cols_keep
        #保存阈值
        self.threshold=threshold
    def transform(self,X):
        #转换会选择合适的列
        return X[self.cols_keep]
    def fit(self,X,*_):
        #新创建的DataFrame,存放特征和响应
        df=pd.concat([X,self.response],axis=1)
        #保存高于阈值的列的名称
        self.cols_keep=df.columns[df.corr()[df.columns[-1]].abs()>self.threshold]
        #只保留X的列,删掉响应变量
        self.cols_keep=[c for c in self.cols_keep if c in X.columns]
                                  
        return self
ccc=CustomCorrelationChooser(threshold=.2,response=df["target"])
ccc.fit(df.iloc[:,:-1])

在这里插入图片描述

ccc.cols_keep

在这里插入图片描述

ccc.transform(df.iloc[:,:-1]).head()

在这里插入图片描述
组装流水线

from copy import deepcopy
#使用响应变量初始化特征选择器
# import Pipeline
ccc=CustomCorrelationChooser(response=df["target"])
#创建流水线,包括选择器
# ccc_pipe=Pipeline([("Correlation_select",ccc),('classifier',d_tree)])
tree_pipe_params={'classifier_max_depth':[None,1,3,5,7,9,11,13,15,17,19,21]}
#复制决策树参数
ccc_pipe_params=deepcopy(tree_pipe_params)
ccc_pipe_params.update({"Correlation_select":[0,.1,.2,.3]})
ccc_pipe_params

{‘Correlation_select’: [0, 0.1, 0.2, 0.3],
‘classifier_max_depth’: [None, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21]}

get_best_model_and_accuracy(forest,ccc_pipe_params,df.iloc[:,:-1],df.iloc[:,-1])
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值