前言
这次参加了kaggle上的一个信用卡诈骗预测项目,比赛之中有些细节希望可以记录下来分享,同时以防时间长忘记。
比赛地址:https://www.kaggle.com/c/ieee-fraud-detection
数据处理
简要说明一下这次比赛给的数据特征:
1.四百个匿名特征
2.部分特征有大规模缺失值
3.训练和预测数据中缺失值分布有较大差异
4.疑似时间增量的特征(以证实)
5.给出了两类匿名数据,一种是关于卡账户的信息,一类是卡的交易信息。
// An highlighted block
#读取数据
train_id=pd.read_csv('data1/train_identity.csv')
test_id=pd.read_csv('data1/test_identity.csv')
train_data=pd.read_csv('data1/train_transaction.csv')
test_data=pd.read_csv('data1/test_transaction.csv')
#将两类数据拼接起来,同时清除内存
train = train_data.merge(train_id, how='left', on='TransactionID')
test = test_data.merge(test_id, how='left',on='TransactionID')
del train_id; gc.collect()
del test_id; gc.collect()
del train_data; gc.collect()
del test_data; gc.collect()
train.describe()
train.isnull().sum()
train与test缺失值比较:
training_missing = train.isna().sum(axis=0) / train.shape[0]
test_missing = test.isna().sum(axis=0) / test.shape[0]
change = (training_missing / test_missing).sort_values(ascending=False)
change = change[change<1e6] # remove the divide by zero errors
train_more=change[change>4].reset_index()
train_more.columns=['train_more_id','rate']
test_more=change[change<0.4].reset_index()
test_more.columns=['test_more_id','rate']
train_more_id=train_more['train_more_id'].values
train[train_more_id].head()
得到的是训