当前位置: 首页 > ops >正文

sklearn自定义pipeline的数据处理

将自定义的频数编码处理整合到sklearn的pipeline流程里面:

from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.pipeline import make_pipeline, Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import PolynomialFeatures # 多项式
from sklearn.metrics import confusion_matrix, classification_report, roc_auc_score
import lightgbm as lgbimport pandas as pddef load_data(path):data = pd.read_csv(path,usecols=lambda col: col != 'id')data['subscribe'] = data['subscribe'].apply(lambda x: 1 if x == 'yes' else 0,)return data# 自定义转换器1 将类别特征按频次编码
class Freqencode(BaseEstimator, TransformerMixin):def __init__(self, cat_cols=[]):self.cat_cols = cat_cols# 返回对象本身def fit(self, X, y=None):# 计算统计量return self# 转换数据def transform(self, X):# 数据转换逻辑for col in self.cat_cols:freq = X[col].value_counts(normalize=True).to_dict()X[col] = X[col].map(freq)return Xdef pipeline_model(cat_cols):pip_model = Pipeline(steps=[('freq_encode', Freqencode(cat_cols=cat_cols)),('imputer', SimpleImputer(strategy='mean')),('poly', PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)),('model', lgb.LGBMClassifier(verbose=-1)),])return pip_modelif __name__ == '__main__':path = r"C:\Users\12048\Desktop\python_code\data\train.csv"data = load_data(path)# 类别特征cat_cols = list(data.select_dtypes(include=['object']).columns)x, y = data.drop(labels='subscribe', axis=1), data['subscribe']pip_model = pipeline_model(cat_cols)pip_model.fit(x, y)print('训练集表现:')prob = pip_model.predict_proba(x)[:,1]train_pred = [1 if i>0.5 else 0 for i in prob]print('混淆矩阵:\n',confusion_matrix(y, train_pred))print('模型报告:\n',classification_report(y, train_pred))print('auc:',roc_auc_score(y, prob))
http://www.xdnf.cn/news/4965.html

相关文章:

  • c++中new和malloc 分配内存有什么不同
  • VSCode远程无法选择虚拟环境问题
  • 官方SDK停更后的选择:开源维护的Bugly Unity SDK
  • 《深挖Java中的对象生命周期与垃圾回收机制》
  • 麒麟系统安装 Nginx 作为非 Web 程序的完整指南
  • 自定义prometheus exporter实现监控阿里云RDS
  • 【彻底卸载nginx并部署nginx1.22.1+ssl模块等】
  • 供应链管理系统建设方案,技术方案(Word)
  • SpringAI--基于MySQL的持久化对话记忆实现
  • 当当网Top500书籍信息爬取与分析
  • 事务失效的场景
  • 循环卷积(Circular Convolutions)
  • 227. 基本计算器 II
  • Tomcat 日志体系深度解析:从访问日志配置到错误日志分析的全链路指南
  • VUE2课程计划表练习
  • 推送到Gerrit时报错,缺少Change-Id
  • component :is是什么?
  • 多轴钻孔组合机床设计与关键技术研究
  • 【nestjs】一般学习路线
  • 嵌入式学习笔记 - 关于单片机的位数
  • 基于AQS实现Reentrantlcok
  • 【递归、搜索和回溯】递归、搜索和回溯介绍及递归类算法例题
  • LeetCode百题刷002摩尔投票法
  • 镜头内常见的马达类型(私人笔记)
  • Nginx静态资源增加权限验证
  • CurrentHashMap的整体系统介绍及Java内存模型(JVM)介绍
  • 单位代码签名证书是什么?如何申请?
  • 开平机:从原理到实践的全面技术剖析
  • 【C/C++】范围for循环
  • ⭐️⭐️⭐️【课时1:大模型是什么?】学习总结 ⭐️⭐️⭐️ for《大模型Clouder认证:基于百炼平台构建智能体应用》认证