金融数据分析赛题2:保险反欺诈预测 您所在的位置:网站首页 保险反欺诈预测分析 金融数据分析赛题2:保险反欺诈预测

金融数据分析赛题2:保险反欺诈预测

2023-06-15 01:54| 来源: 网络整理| 查看: 265

1.赛题介绍

保险风控为背景,保险是重要的金融体系,对社会发展,民生保障起到重要作用。保险欺诈近些年层出不穷,在某些险种上保险欺诈的金额已经占到了理赔金额的20%甚至更多。对保险欺诈的识别成为保险行业中的关键应用场景。

2.数据描述性统计

1.导入数据

import pandas as pd # 数据加载 train = pd.read_csv('./train.csv') train

test = pd.read_csv('./test.csv') test

 

# 合并train, test data = pd.concat([train, test], axis=0) data

data.index = range(len(data)) data

 

## 数据探索 data.isnull().sum()

# 唯一值个数 for col in data.columns: print(col, data[col].nunique())

cat_columns = data.select_dtypes(include='O').columns cat_columns

 

column_name = [] unique_value = [] for col in cat_columns: #print(col, data[col].nunique()) column_name.append(col) unique_value.append(data[col].nunique()) df = pd.DataFrame() df['col_name'] = column_name df['value'] = unique_value df = df.sort_values('value', ascending=False) df

 

data[cat_columns]

# 单独看某个字段 data['property_damage'].value_counts() data['property_damage'] = data['property_damage'].map({'NO': 0, 'YES': 1, '?': 2}) data['property_damage'].value_counts()

 

data['police_report_available'].value_counts() data['police_report_available'] = data['police_report_available'].map({'NO': 0, 'YES': 1, '?': 2}) data['police_report_available'].value_counts()

 

# policy_bind_date, incident_date data['policy_bind_date'] = pd.to_datetime(data['policy_bind_date']) data['incident_date'] = pd.to_datetime(data['incident_date']) # 查看最大日期,最小日期 data['policy_bind_date'].min() # 1990-01-08 data['policy_bind_date'].max() # 2015-02-22 data['incident_date'].min() # 2015-01-01 data['incident_date'].max() # 2015-03-01

 

base_date = data['policy_bind_date'].min() # 转换为date_diff data['policy_bind_date_diff'] = (data['policy_bind_date'] - base_date).dt.days

data['incident_date_diff'] = (data['incident_date'] - base_date).dt.days data['incident_date_policy_bind_date_diff'] = data['incident_date_diff'] - data['policy_bind_date_diff'] data[['policy_bind_date', 'incident_date', 'policy_bind_date_diff', 'incident_date_diff', 'incident_date_policy_bind_date_diff']]

# 去掉原始日期字段 policy_bind_date incident_date data.drop(['policy_bind_date', 'incident_date'], axis=1, inplace=True) data

 

#data['policy_id'].value_counts() data.drop(['policy_id'], axis=1, inplace=True) data.columns

## 标签编码 from sklearn.preprocessing import LabelEncoder cat_columns = data.select_dtypes(include='O').columns for col in cat_columns: le = LabelEncoder() data[col] = le.fit_transform(data[col]) data[cat_columns]

 

# 数据集切分 train = data[data['fraud'].notnull()] test = data[data['fraud'].isnull()]

 

import lightgbm as lgb model_lgb = lgb.LGBMClassifier( num_leaves=2**5-1, reg_alpha=0.25, reg_lambda=0.25, objective='binary', max_depth=-1, learning_rate=0.005, min_child_samples=3, random_state=2022, n_estimators=2000, subsample=1, colsample_bytree=1, ) # 模型训练 model_lgb.fit(train.drop(['fraud'], axis=1), train['fraud']) # AUC评测: 以proba进行提交,结果会更好 y_pred = model_lgb.predict_proba(test.drop(['fraud'], axis=1)) y_pred

# 25.8% train['fraud'].mean()

 

 

y_pred[:, 1]

 

 

result = pd.read_csv('./submission.csv') result['fraud'] = y_pred[:, 1] result.to_csv('./zzz.csv', index=False)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有