设为首页 - 加入收藏 常州站长网 (http://www.52changzhou.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 2019 平台 select 为啥
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

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

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

前言:

本文研究的是大数据量(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. ?
  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代表欺诈,二者数量严重失衡,极度不平衡,根本不在一个数量级上;

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章