阿里云天池金融风控训练营【Task3 特征工程】学习笔记

金融风控训练营 Task3 特征工程 学习笔记

本学习笔记为阿里云天池龙珠计划金融风控训练营的学习内容,学习链接为:https://tianchi.aliyun.com/specials/activity/promotion/aicampfr

一、学习知识点概要

二、学习内容

1. 内容介绍
  • 数据预处理
    • 缺失值的填充
    • 时间格式处理
    • 对象类型特征转换到数值
  • 异常值处理
    • 基于3segama原则
    • 基于箱型图
  • 数据分箱
    • 固定宽度分箱
    • 分位数分箱
      • 离散数值型数据分箱
      • 连续数值型数据分箱
    • 卡方分箱(选做作业)
  • 特征交互
    • 特征和特征之间组合
    • 特征和特征之间衍生
    • 其他特征衍生的尝试(选做作业)
  • 特征编码
    • one-hot编码
    • label-encode编码
  • 特征选择
    • 1 Filter
    • 2 Wrapper (RFE)
    • 3 Embedded
2. 代码示例
1. 此次学习所用到的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns  #基于matplotlib的图形可视化
import datetime
from tqdm import tqdm  #进度提示信息
from sklearn.preprocessing import LabelEncoder  
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.preprocessing import MinMaxScaler
import xgboost as xgb
import lightgbm as lgb  #基于直方图的切分点算法
from catboost import CatBoostRegressor #基于对称决策树为基学习器实现
import warnings
from sklearn.model_selection import StratifiedKFold, KFold
from sklearn.metrics import accuracy_score, f1_score, roc_auc_score, log_loss
warnings.filterwarnings('ignore')
2. 特征预处理
  • 缺失值处理

    参考于:

    博客缺失值填充的几种方法

    1. 填充固定值

      df.fillna(0,inplace=True) #填充0
      df.fillna(df.mean(),inplace=True) #填充均值
      df.fillna(df.median(),inplace=True) #填充中位数
      df.fillna(df.mode(),inplace=True) #填充众数
      
    2. 填充上下条的数据

      df.fillna(method='pad',inplace=True) #填充前一条数据的值,但前一条不一定有值
      df.fillna(method='bfill',inplace=True) #填充后一条数据的值,但后一条不一定有值
      
    3. 填充插值得到的数据

      用插值法拟合出缺失的数据,再进行填充

      for f in features: #插值法填充
          df[f] = df[f].interpolate()
      df.dropna(inplace=True)
      
    4. 填充KNN数据

      填充近邻的数据,用knn计算临近的k个数据,再填充均值

      from fancyimpute import KNN
      
      train_data_x = pd.DataFrame(KNN(k=6).fit_transform(train_data_x), columns=features)
      
    5. 填充模型预测的值

      把缺失值作为新的label,建立模型得到预测值,然后进行填充

      选择某个缺失值数量适当的特征采用随机森林RF进行拟合,其他缺失特征采用均值进行填充

  • 时间格式处理

    #转化成时间格式
    for data in [data_train, data_test_a]:
        data['issueDate'] = pd.to_datetime(data['issueDate'],format='%Y-%m-%d')
        startdate = datetime.datetime.strptime('2007-06-01'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值