40丨数据挖掘实战(2):信用卡诈骗分析
该思维导图由 AI 生成,仅供参考
构建逻辑回归分类器
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何使用逻辑回归算法进行信用卡欺诈分析。通过实战项目展示了对信用卡欺诈数据集的分析流程,包括数据加载、数据探索和可视化、数据预处理、模型构建和评估。文章强调了在处理数据不平衡情况下,采用F1值作为模型评估指标的重要性。通过对混淆矩阵的可视化和精确率-召回率曲线的绘制,读者能够直观地了解模型的性能评估结果。此外,文章还提到了精确率、召回率和F1值在评估不平衡数据集分类模型时的重要性,以及在实际项目中的应用场景。总体而言,本文通过实例详细介绍了逻辑回归算法在信用卡欺诈分析中的应用,对读者进行了技术指导和实践操作。文章内容涵盖了数据处理、模型构建和评估等方面,适合对数据分析和机器学习感兴趣的读者阅读学习。
《数据分析实战 45 讲》,新⼈⾸单¥59
全部留言(35)
- 最新
- 精选
- 西湖晨曦继续上面的问题。就是,我就是银行信用卡部的工作人员。假设我通过fit()方法得到了信用卡诈骗分析的逻辑回归。假设特征是:性别、收入、是否有房子、是否有车子、是否有助学贷款、是否有公积金这几个特征。我通过fit()方法得到了这个有这些特征的逻辑回归曲线。我如何找到每一个特征前面的系数呢?-----说得直白点,我作为银行信用控制部门工作人员,希望知道上面的特征,哪一个是最重要的,哪一个次重要?哪一个不重要?这样我才能对我的信控工作作出调整。比如我假如知道了是否有助学贷款这个特征不重要,那么我就可以在未来工作中,在银行客户是否允许开信用卡的条件中,取消这个是否有助学贷款的条件,从而给银行信用卡开卡工作带来业务效益。
作者回复: 很好的问题,你可以进行分类之后,查看下分类器中特征向量的重要程度,然后进行可视化的呈现,比如我们的分类器是clf,使用matplotlib进行可视化,具体代码如下: # 显示特征向量的重要程度 coeffs = clf.feature_importances_ df_co = pd.DataFrame(coeffs, columns=["importance_"]) # 下标设置为Feature Name df_co.index = train_features.columns df_co.sort_values("importance_", ascending=True, inplace=True) df_co.importance_.plot(kind="barh") plt.title("Feature Importance") plt.show()
2019-09-14721 - 泷泱汰X = np.array(data.as_matrix()) 这个方法现在在pandas里面移除了,改成X = np.array(data.values)
作者回复: 感谢泷泱汰同学的分享!as_matrix()确实已经废弃。可以通过data.values或者data.to_numpy()得到DataFrame的数组。
2020-07-0910 - 白夜试了下SVM 精确率: 0.843 召回率: 0.717 F1值: 0.775 可以通过人的行为(反动言论,购物情况,日常行为)分析预测人群的标签,比如反社会人格,小众爱好者 也可以,反过来通过人的标签(爱喝酒程度,注意力集中度,运动量等)分析人的行为(车祸,罕见疾病的发生)
作者回复: Good Job
2019-03-156 - 王彬成1、使用LinearSVC输出的结果: 精确率:0.846 召回率:0.733 F1值:0.786 2、结果代码,把 # 逻辑回归分类 clf=LogisticRegression() clf.fit(train_x,train_y) predict_y=clf.predict(test_x) 更换为: #线性SVM分类 from sklearn import svm model=svm.LinearSVC() model.fit(train_x,train_y) predict_y=model.predict(test_x)
作者回复: Good Job
2019-03-156 - 一语中的用SVM的LinearSVC算法进行分类 精确率:0.846 召回率:0.733 F1 值:0.786 如果F1值越大,代表的模型的结果越好,那么SVM应该是优于逻辑回归,但是,从计算时间上来看,用逻辑回归算法比用SVM要节约50多秒(在我本地环境,其他条件不变的情况下)
作者回复: Good Job
2019-03-194 - 西湖晨曦对本期的信用卡诈骗分析中,涉及逻辑回归(LogisticRegression)有几点问题,我在网上找了大量资料都找不到答案。特地求助~ 1. 逻辑回归数学公式中,求出的值,是介于(0,1)之间。LogisticRegreesion的predict()方法,会设定一个阈值,比如是0.5,把大于0.5的逻辑回归值,设为1,相反小于0.5的,设置为0。那么我的问题是,为什么要设置0.5?是固定的吗?如果我希望把阈值(threshold)提高到0.6,如何设置?---我看了无数遍API,就是找不到如何设置这个阈值。 2. 如何看逻辑回归的各个参数。假设我通过fit()这个方法对训练集进行训练,得到了逻辑回归的各个target的值,即我已经得到了这个逻辑回归的各个参数了。假设有10个特征。我如何知道每一个特征前面的变量呢?
作者回复: 0.5是个阈值,一般做二分类的时候,大于0.5可以认为是1,小于0.5认为是0,=0.5的时候 可以是0或者1,概率都是一样的
2019-09-1442 - 陈锦榕***********The evaluation of split test data.************* Accuracy-Test data: 0.9601 ************************************************************************************************************************ Kappa: 0.07924493469331251 ************************************************************************************************************************ Confusion matrix,↓real laebl, →predict label” 0 1 0 9583 397 1 2 18 ************************************************************************************************************************ precision recall f1-score support 0 1.00 0.96 0.98 9980 1 0.04 0.90 0.08 20 accuracy 0.96 10000 macro avg 0.52 0.93 0.53 10000 weighted avg 1.00 0.96 0.98 10000
作者回复: Good Job 认真做练习的同学
2019-07-302 - third0、所有的小概率事件都属于不平衡数集,比如得某种病,出现车祸或者意外 1、LinearSVC结果: 精确率:0.845 召回率:0.732 F1值:0.778 2、结果代码,把 # 逻辑回归分类 clf=LogisticRegression() clf.fit(train_x,train_y) predict_y=clf.predict(test_x) 更换为: #线性SVM分类 from sklearn import svm model=svm.LinearSVC() model.fit(train_x,train_y) predict_y=model.predict(test_x)
作者回复: Good Job
2019-03-212 - 王彬成逻辑回归混淆矩阵对应的TP、FP、TN、FN的位置,以输出的混淆矩阵图为例, 1)首先这四个概念的定义 1. TP:预测为正,判断正确; 2. FP:预测为正,判断错误; 3. TN:预测为负,判断正确; 4. FN:预测为负,判断错误。 2)回归原图 1、predicted=1,True=1,代表预测为正,判断正确,所以TP=37 2、predicted=1,true=0,代表预测为正,判断错误,所以FP=7 3、predicted=0,true=1,代表预测为负,判断错误,所以FN=23
作者回复: 总结的不错
2019-03-152 - 拾光F1值表示什么呢,没搞明白,模型判断出一笔交易有可能涉嫌欺诈,准确率只有84.1%,不是也很低吗?
作者回复: 可以把f1当成对Precision和Recall进行整体评价
2020-12-231