故事背景:原始数据为小我交易记录,然则推敲数据本身的隐私性,已经对原始数据进行了类似PCA的处理,如今已经把特点数据提取好了,接下来的目标就是若何建立模型使得检测的效不雅达到最好,这里我们固然不须要对数据做特点提取的操作,然则面对的挑衅照样蛮大年夜的。
- import pandas as pd
- import matplotlib.pyplot as plt
- import numpy as np
- from sklearn.cross_validation import train_test_split
- from sklearn.linear_model import LogisticRegression
- from sklearn.cross_validation import KFold, cross_val_score
- from sklearn.metrics import confusion_matrix,recall_score,classification_report
数据分析与建模可不是体力活,时光就是金钱我的同伙(魔兽玩家都懂的!)如不雅你用Python来把玩数据,那么这些就是你的核兵器啦。简单介绍一下这几位同伙!
- Numpy-科学计算库 重要用来做矩阵运算,什么?你不知道哪里会用到矩阵,那么如许想吧,咱们的数据就是行(样本)和列(特点)构成的,那么数据本身不就是一个矩阵嘛。
- Pandas-数据分析处理库 很多小伙伴都在说用python处理数据很轻易,那么轻易在哪呢?其实有了pandas很复杂的操作我们也可以一行代码去解决掉落!
- Matplotlib-可视化库 无论是分析照样建模,光靠好记性可不可,很有须要把结不雅和过程可视化的┞饭示出来。
- Scikit-Learn-机械进修库 异常实用的机械进修算法库,这琅绫擎包含了根本你认为你能用上所有机械进修算法啦。但还远不止如斯,还有很多预处理和评估的模块等你来发掘的!
- data = http://ai.51cto.com/art/201704/pd.read_csv("creditcard.csv") data.head()
起首我们用pandas将数据读进来并显示最开端的5行,看见木有!用pandas攫取数据就是这么简单!这里的数据为了推敲用户隐私等,已经经由过程PCA处理过了,如今大年夜家只须要把数据当成是处理好的特点就好啦!
接下来我们核心的目标就是去检测在数据样本中哪些是具有讹诈行动的!
- count_classes = pd.value_counts(data['Class'], sort = True).sort_index()
- count_classes.plot(kind = 'bar')
- plt.title("Fraud class histogram")
- plt.xlabel("Class")
- plt.ylabel("Frequency"
切切不要焦急却竽暌姑机械进修算法建模做这个分类问题。起首我们来不雅察一下数据的分布情况,在数据样本中有明白的label列指定了class为0代表正常情况,class为1代表产生了讹诈行动的样本。大年夜上图中可以看出来。。。等等,你不是说有两种情况吗,为啥图上只有class为0的样本啊?再细心看看,纳尼。。。class为1的并不是木有,而是太少了,少到根本看不出来了,那么此时我们面对一个新的挑衅,样本极端不均衡,接下来我们起重要解决这个问题,这个很常见也是很头疼的问题。
这里我们提出两种解决筹划 也是数据分析中最常用的两种办法,下采样和过采样!
先挑个软柿子捏,下采样比较简单实现,咱们就先搞定第一种筹划!下采样的意思就是说,不是两类数据不均衡吗,那我让你们同样少(也就是1有若干个 0就消减成若干个),如许不就均衡了吗。
很简单的实现办法,在属于0的数据中,进行随机的选择,就选跟class为1的那类样本一样多就好了,那么如今我们已经获得了两组都是异常少的数据,接下来就可以建模啦!不过在建立任何一个机械进修模型之前不要忘了一个惯例的操作,就是要把数据集切分成练习集和测试集,如许会使得后续验证的结不雅更为靠谱。
不合C参数对应的最终模型效不雅:
- C parameter: 0.01
推荐阅读
人工智能火了相当长一阵子,很多本钱、创颐魅者、大年夜小公司似乎都在追逐这可贵的风口,特别是李开复师长教师在多个公共场所宣传人工智能概念之后,到处可见的都是关于人工智能的报道和>>>详细阅读
本文标题:Python机器学习实战:信用卡欺诈检测
地址:http://www.17bianji.com/lsqh/34721.html
1/2 1