加入收藏 | 设为首页 | 会员中心 | 我要投稿 52站长网 (https://www.52zhanzhang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

Python分析信用卡反欺诈!骗我程序员,不存在的

发布时间:2019-10-16 02:21:15 所属栏目:教程 来源:一枚程序媛呀
导读:前言: 本文研究的是大数据量(284807条数据)下模型选择的问题,也参考了一些文献,但大多不够清晰,因此吐血整理本文,希望对大家有帮助; 本文试着从数据分析师的角度,设想拿到数据该如何寻找规律、选哪种模型来构建反欺诈模型?的角度来分析,以业务导向
副标题[/!--empirenews.page--]

前言:

本文研究的是大数据量(284807条数据)下模型选择的问题,也参考了一些文献,但大多不够清晰,因此吐血整理本文,希望对大家有帮助;

本文试着从数据分析师的角度,设想“拿到数据该如何寻找规律、选哪种模型来构建反欺诈模型?”的角度来分析,以业务导向为主,不深究算法原理;

下一篇文章会说明数据结构极度不平衡的情况下,该如何修正数据集、如何调整参数。

数据来源及项目概况

数据是从kaggle上看到的项目,具体链接如下:

https://www.kaggle.com/mlg-ulb/creditcardfraud

获取本例数据的,可在上述项目详情链接中下载数据。

数据集包含欧洲持卡人于2013年9月通过信用卡进行的交易。该数据集提供两天内发生的交易,其中在284,807笔交易中有492起欺诈行为。

数据集非常不平衡,负面类别(欺诈)占所有交易的0.172%。

它只包含数值输入变量,这是PCA变换的结果。不幸的是,由于保密问题,我们无法提供有关数据的原始特征和更多背景信息。特征V1,V2,... V28是用PCA获得的主要组件,唯一没有用PCA转换的特征是'Time'和'Amount'。

  • “时间”包含每个事务与数据集中第一个事务之间经过的秒数。
  • '金额'是交易金额,该特征可以用于依赖于例子的成本敏感性学习。
  • “Class”是响应变量,在欺诈的情况下其值为1,否则为0。

2、准备并初步查看数据集

  1. # 导入包 
  2. import numpy as np 
  3. import pandas as pd 
  4. import matplotlib.pyplot as plt 
  5. import matplotlib.gridspec as gridspec 
  6. import seaborn as sns; plt.style.use('ggplot') 
  7. import sklearn 
  8. from sklearn.preprocessing import StandardScaler 
  9. from sklearn.model_selection import train_test_split 
  10. from sklearn.utils import shuffle 
  11. from sklearn.metrics import confusion_matrix 
  12. from sklearn.manifold import TSNE 
  13. pass 
  14. # 倒入并查看数据 
  15. crecreditcard_data=pd.read_csv('./creditcard.csv') 
  16. crecreditcard_data.shape,crecreditcard_data.info() 
  17. <class 'pandas.core.frame.DataFrame'> 
  18. RangeIndex: 284807 entries, 0 to 284806 
  19. Data columns (total 31 columns): 
  20. Time 284807 non-null float64 
  21. V1 284807 non-null float64 
  22. V2 284807 non-null float64 
  23. V3 284807 non-null float64 
  24. V4 284807 non-null float64 
  25. V5 284807 non-null float64 
  26. V6 284807 non-null float64 
  27. V7 284807 non-null float64 
  28. V8 284807 non-null float64 
  29. V9 284807 non-null float64 
  30. V10 284807 non-null float64 
  31. V11 284807 non-null float64 
  32. V12 284807 non-null float64 
  33. V13 284807 non-null float64 
  34. V14 284807 non-null float64 
  35. V15 284807 non-null float64 
  36. V16 284807 non-null float64 
  37. V17 284807 non-null float64 
  38. V18 284807 non-null float64 
  39. V19 284807 non-null float64 
  40. V20 284807 non-null float64 
  41. V21 284807 non-null float64 
  42. V22 284807 non-null float64 
  43. V23 284807 non-null float64 
  44. V24 284807 non-null float64 
  45. V25 284807 non-null float64 
  46. V26 284807 non-null float64 
  47. V27 284807 non-null float64 
  48. V28 284807 non-null float64 
  49. Amount 284807 non-null float64 
  50. Class 284807 non-null int64 
  51. dtypes: float64(30), int64(1) 
  52. memory usage: 67.4 MB 
  53. ((284807, 31), None) 
  54. crecreditcard_data.describe() 
  55. pass 
  56. crecreditcard_data.head() 
  57. pass 
  58. # 看看欺诈与非欺诈的比例如何 
  59. count_classes=pd.value_counts(crecreditcard_data['Class'],sort=True).sort_index() 
  60. # 统计下具体数据 
  61. count_classes.value_counts() 
  62. # 也可以用count_classes[0],count_classes[1]看分别数据 
  63. 284315 1 
  64. 492 1 
  65. Name: Class, dtype: int64 
  66. count_classes.plot(kind='bar') 
  67. plt.show() 
Python分析信用卡反欺诈!骗我程序员,不存在的

0代表正常,1代表欺诈,二者数量严重失衡,极度不平衡,根本不在一个数量级上;

(编辑:52站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读