风险大脑-支付风险识别天池大赛(二)数据存储及检查


         本次想把过程写的详细些,所以本节和上一节讲了如何充分利用大数据平台处理数据,如何利用最有效的工具进行数据存储、处理、分析。另外这次准备用Inceptor(分布式SQL引擎,可以理解为Hive数仓)、Sophon、R语言来完成。

        在下一节,我会将建模过程思路和大家分享。

        本节详细步骤如下。


一、上传数据文件至HDFS目录。

    训练数据和AB榜测试数据。

hadoop fs -mkdir /tmp/jbw/ant/atec_anti_fraud_train
hadoop fs -mkdir /tmp/jbw/ant/atec_anti_fraud_test_a
hadoop fs -mkdir /tmp/jbw/ant/atec_anti_fraud_test_b

hadoop fs -put /mnt/disk1/ant/atec_anti_fraud_train_convert.csv  /tmp/jbw/ant/atec_anti_fraud_train
hadoop fs -put /mnt/disk1/ant/atec_anti_fraud_test_a_convert.csv  /tmp/jbw/ant/atec_anti_fraud_test_a
hadoop fs -put /mnt/disk1/ant/atec_anti_fraud_test_b_convert.csv  /tmp/jbw/ant/atec_anti_fraud_test_b



二、创建外表、导入数据

DROP TABLE IF EXISTS bowen_payment_risk.atec_anti_fraud_train_ex;
CREATE EXTERNAL TABLE bowen_payment_risk.atec_anti_fraud_train_ex(
id STRING,
label STRING,
pay_date STRING,
f1 DOUBLE,
f2 DOUBLE,
f3 DOUBLE,
...
f297 DOUBLE
)
ROW FORMAT DELIMITED fields terminated by ','
LOCATION '/tmp/jbw/ant/atec_anti_fraud_train';

上一篇博客有完整SQL:天池大赛风险大脑-支付风险识别(一)数据预处理


三、检测数据

数据质量:

-- 检查数据质量,即label的取值(经过验证,发现label取值只会为0,1,-1,分别是无风险,有风险,无标签)
SELECT
    COUNT(*)
FROM
    atec_anti_fraud_train_mini_ex
WHERE
     label != 0 AND label != 1 AND label != -1;


筛选出有标签的数据,并去掉表头:

-- 有标签的数据
DROP TABLE IF EXISTS atec_anti_fraud_train_label;
CREATE TABLE atec_anti_fraud_train_label AS
SELECT
    *
FROM
    atec_anti_fraud_train_mini_ex
WHERE
     id != "id" AND label != -1;


查看带标签数据中有风险与无风险的数据情况:

-- 共990006条有标签的数据,有风险的共12122条数据,无风险的有97884条数据。
SELECT
    count(*)
FROM
    atec_anti_fraud_train_label
WHERE 
	label = 1;
        比例还行,所以在数据预处理中不用对原始数据进行采样了,直接干。


重复ID检测:

-- 判断训练数据集是否有重复id
-- 若有则需要将id送入模型训练,若无则不需要
DROP TABLE IF EXISTS distincted_count_atec_anti_fraud_train_label;
CREATE TABLE distincted_count_atec_anti_fraud_train_label AS
SELECT
	DISTINCT id
FROM
	-- atec_anti_fraud_test_a
	-- atec_anti_fraud_test_b
	atec_anti_fraud_train_label;

-- b榜测试数据表
DROP TABLE IF EXISTS atec_anti_fraud_test_b;
CREATE TABLE atec_anti_fraud_test_b AS
SELECT
    *
FROM
    atec_anti_fraud_test_b_ex
WHERE
     id != "id";

-- 判断b榜测试集中是否有重复id
DROP TABLE IF EXISTS distincted_count_atec_anti_fraud_test_b;
CREATE TABLE distincted_count_atec_anti_fraud_test_b AS
SELECT
	DISTINCT id
FROM
	-- atec_anti_fraud_test_a
	atec_anti_fraud_test_b;
	-- atec_anti_fraud_train_label;

-- 结果为990006,说明无重复的id,放心搞
SELECT count(*) FROM distincted_count_atec_anti_fraud_train_label;

-- 结果为500539,说明b榜测试数据无重复的id,也可放心搞
SELECT * FROM atec_anti_fraud_test_b WHERE id != "id" LIMIT 10;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值