Python信用卡欺诈检测 [TensorFlow]

news2025/1/17 0:25:12

Python信用卡欺诈检测 [TensorFlow]

提示:前言
Python ·信用卡欺诈检测


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • Python信用卡欺诈检测 [TensorFlow]
  • 前言
  • 一、导入包
  • 二、加载数据
  • 三、加载数据
  • 四、 定义模型架构和适当的损失函数和指标
  • 五、使用 validation_split = 0.26 训练模型
  • 六、获取特征重要性
  • 七、对 X_test 的预测


前言

提示:大概内容:

觉得有用请不要忘记点赞👆 😃
重要的是,信用卡公司能够识别欺诈性信用卡交易,这样客户就不会为他们没有购买的商品付费。
关于数据集
该数据集包含 2013 年 9 月欧洲持卡人使用信用卡进行的交易。

该数据集显示了两天内发生的交易,其中 284,807 笔交易中有 492 笔欺诈。

数据集高度不平衡,正类(欺诈)占所有交易的 0.172%。

它仅包含作为 PCA 转换结果的数字输入变量。

特征 V1、V2、… V28 是通过 PCA 获得的主成分

唯一没有用 PCA 转换的特征是时间和数量。

特征时间包含每个事务与数据集中第一个事务之间经过的秒数。

特征金额为交易金额,该特征可用于依赖实例的成本敏感学习。

要素类是响应变量,在欺诈情况下取值 1,否则取 0。


提示:以下是本篇文章正文内容,下面案例可供参考

一、导入包

import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense,Dropout, BatchNormalization
from keras import regularizers
import numpy as np 
import pandas as pd 
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import RobustScaler

二、加载数据

阅读此链接上可用的原始数据集(作为数据框)

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

original_df = pd.read_csv('/kaggle/input/creditcardfraud/creditcard.csv')
original_df.info()

在这里插入图片描述
为比赛提供的数据集在 train_df 和 test_df 数据框中导入

train_df = pd.read_csv('/kaggle/input/playground-series-s3e4/train.csv')
train_df = pd.concat([train_df,original_df])
train_df = train_df.sample(frac=1)
train_df = train_df.reset_index(drop=True)
y_train = train_df['Class']
train_df.head()

在这里插入图片描述

test_df = pd.read_csv('/kaggle/input/playground-series-s3e4/test.csv')
test_df_id = test_df['id']
test_df.head()

在这里插入图片描述

train_df.columns

在这里插入图片描述

train_df.describe()

在这里插入图片描述

三、加载数据

存储用于缩放各个值的数字列

train_to_scale = train_df[['Time', 'V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9',
       'V10', 'V11', 'V12', 'V13', 'V14', 'V15', 'V16', 'V17', 'V18', 'V19',
       'V20', 'V21', 'V22', 'V23', 'V24', 'V25', 'V26', 'V27', 'V28', 'Amount']]

test_to_scale = test_df[['Time', 'V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9',
       'V10', 'V11', 'V12', 'V13', 'V14', 'V15', 'V16', 'V17', 'V18', 'V19',
       'V20', 'V21', 'V22', 'V23', 'V24', 'V25', 'V26', 'V27', 'V28', 'Amount']]
scaler = RobustScaler()

scaled_train = pd.DataFrame(scaler.fit_transform(train_to_scale),columns = train_to_scale.columns)
scaled_test = pd.DataFrame(scaler.transform(test_to_scale),columns = test_to_scale.columns)
X_train = scaled_train
X_test = scaled_test

四、 定义模型架构和适当的损失函数和指标

model = Sequential()

# Add layers to the model
model.add(Dense(8116, input_dim=30, activation='selu')) #input layer with 64 neurons
model.add(Dropout(0.5))
model.add(Dense(2048,activation= 'relu'))
model.add(Dropout(0.5))
model.add(Dense(1024,activation= 'selu'))
model.add(Dropout(0.5))
model.add(Dense(256,activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(128,activation = 'selu'))
model.add(Dense(8,activation= 'relu'))
model.add(Dense(1, activation='sigmoid')) #output layer with 1 neuron 
model.compile(loss=['binary_crossentropy'], optimizer= tf.keras.optimizers.Adam(4e-5),metrics = [tf.keras.metrics.AUC(num_thresholds=700000,curve='ROC')])
model.summary()

在这里插入图片描述

五、使用 validation_split = 0.26 训练模型

model.fit(X_train,y_train,validation_split = 0.26,batch_size = 1024,epochs = 15)#,callbacks=[callbacks])

在这里插入图片描述

六、获取特征重要性

# Get the weights of the first layer
weights = model.layers[0].get_weights()[0]

# Get the absolute values of the weights
importances = np.abs(weights)

# Normalize the importances
importances = importances / importances.sum(axis=0)

# Print the importances of each feature
for i, importance in enumerate(importances):
    print("Feature", i, "Importance", np.median(importance))

七、对 X_test 的预测

y_pred = model.predict(X_test)
print(y_pred)

以要求的格式转换 DataFrame 以提交给比赛

y_pred = pd.DataFrame(y_pred)
y_pred.columns = ['Class']
submissions_df = pd.DataFrame(pd.concat([test_df_id,y_pred],axis = 1))
submissions_df = submissions_df.reset_index(drop = True)

submissions_df.to_csv('submission.csv', index=False)
submissions_df.head()

提示:这里对文章进行总结:

以上就是今天要讲的内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/178308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebAssembly编译之(1)-asm.js及WebAssembly原理介绍

WebAssembly介绍及产生历程 1、什么是WebAssembly、为什么WASM? 我们知道Web的应用几乎涵盖了大半个互联网应用;越多越多的Web应用层出不穷,而然Web最致命的劣势就是其在浏览其的运行效率特忙,尤其是web游戏的体验不佳。 而Web…

ubuntu安装Espeak实现tts文字转语音

目录参考一、介绍二、安装安装包安装查看安装版本和espeak-data路径直接尝试安装中文包三、生产wav文件四、代码引入参考 ubuntu完美安装espeak支持中文和粤语 不再报错:Full dictionary is not installed for ‘zh’ 一、介绍 **用途:**可识别多语言的朗读软件 …

JavaEE day4 初识CSS

HTML如果说是前端网页中的骨架 那么CSS就是用来对骨架进行排版美化的、 CSS全称为 Cascading Style Sheets 层叠样式表 预备知识: html中的所有元素都有两个通用的属性:id和class id:唯一标识符,一个html组成元素中&#xff…

Day07 C++STL入门基础知识四——vector容器(上) 基本概念-构造函数-赋值操作-容量大小【全面深度剖析+例题代码展示】

Leave no stone unturned. 竭尽全力 文章目录1. 基本概念1.1 功能1.2 与普通数组相同点与不同点1.3 动态扩展2. 构造函数2.1 功能描述2.2 函数原型2.3 代码展示3. 赋值操作3.1 函数原型3.2 代码展示4. 容量及大小4.1 函数原型4.2 代码展示4.2.1 empty()4.2.1.1 代码展示4.2.1.2…

恶意代码分析实战 1 静态分析基础技术

1.1 Lab 1-1 对Lab01-01.exe和Lab01-01.dll进行分析 问题 将文件上传至http://www.VirusTotal.com进行分析并查看报告。文件匹配到了已有的反病毒软件特征吗? 首先查看Lab-01-01.exe。 然后查看Lab01-01.dll。 这两个文件应该都是恶意文件。 这些文件是什么时候编译的?…

20230125英语学习

Office Buzzwords You’re Using That Annoy All Your Co-workers 说话之道:避开办公室行话的“雷区” Joining a new office means having to learn how to communicate with your team.But in order to do that well, it sometimes means having to learn your …

索引优化示例

目录 1.单表优化 2.两表优化 3.三表优化 4.总结 1.单表优化 创建索引前 (1)先按照where条件创建索引 按照查询条件中的三个项目创建索引,并且索引中的项目存在顺序,分别是1,2和3。 (2)创建索引 type 变成了 range,这是可以忍受的。但是 extra 里使用…

恶意代码分析实战 4 识别汇编中的C代码结构

4.1 Lab06-01.exe 由main函数调用的唯一子过程中发现的主要代码结构是什么? 使用Strings进行查看,需要注意最后的这两个字符串,一个是“没有网”,另一个是“联网成功”。 IDA 中查看图结构。 明显是if-else结构。 位于0x4010…

进程间通信/管道/消息队列/共享内存/信号量

本文重点目标: ⭐进程间通信介绍⭐ ⭐管道⭐ ⭐消息队列⭐ ⭐共享内存⭐ ⭐信号量⭐ 1.进程间通信介绍 什么是通信? 通信指的是数据传输、资源共享、通知事件和进程控制。 ①数据传输:一个进程需要将它的数据发送给另一个进程 ②资源共享&a…

【GIS】高分辨率遥感影像智能解译

1 绪论 随着航空科技工业的不断成熟与发展,我国遥感卫星研制能力不断攀升,发射数量逐年提高,在轨运行的遥感卫星为社会生产及居民日常生活提供了巨大的支持与便利。我国目前同时在轨运行的遥感卫星数量已超过60颗,每天获取并传回…

LeetCode[990]等式方程式的可满足性

难度:中等题目:给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i]的长度为 4,并采用两种不同的形式之一:"ab"或 "a!b"。在这里,a 和 b 是小写字母&#…

【Python学习003】高效数据结构-列表

【Python学习003】高效数据结构-列表 我们的公众号是【朝阳三只大明白】,满满全是干货,分享近期的学习知识以及个人总结(包括读研和IT),希望大家一起努力,一起加油!求关注!&#xf…

浏览器使用本地硬盘上的JS文档

网页通过<script>标记可以引入在线的js文档&#xff0c;只有把网页保存在本地硬盘才能使用相对路径引入本地js文档&#xff0c;普通浏览器难以实现在线页面上引入本地js文档。怎么解决这个问题呢&#xff1f;首先准备好需要引入的JS文档&#xff0c;可以是成熟的JS库&…

【docker概念和实践 4】(3)本地镜像提交到阿里云

一、说明 本篇讲述如何将自己制作的容器转化成镜像&#xff0c;再将镜像推送到远端阿里云上。 二、制造一个本地容器 2.1 从远端仓库拉取ubuntu镜像 使用镜像拉取语句&#xff1a; docker pull ubuntu:20.04 docker run -it ubuntu&#xff1a;20.04 bash 通过以上两句&…

LeetCode[200]岛屿数量

难度&#xff1a;中等题目&#xff1a;给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外&am…

5-4中央处理器-控制器的功能和工作原理

文章目录一.控制器的结构和功能二.硬布线控制器1.硬布线控制单元图2.微操作命令分析3.CPU的控制方式&#xff08;1&#xff09;同步控制方式&#xff08;2&#xff09;异步控制方式&#xff08;3&#xff09;联合控制方式4.硬布线控制单元的设计步骤&#xff08;1&#xff09;分…

qsort函数用法 + 模拟实现qsort函数

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前是C语言学习者 ✈️专栏&#xff1a;【C/C】算法 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞…

论文笔记目录(ver2.0)

1 时间序列 1.1 时间序列预测 论文名称来源主要内容论文笔记&#xff1a;DCRNN &#xff08;Diffusion Convolutional Recurrent Neural Network: Data-Driven Traffic Forecasting&#xff09;_UQI-LIUWJ的博客-CSDN博客iclr 2017使用双向扩散卷积GRU&#xff0c;建模空间和…

目标跟踪心得篇五:MOT数据集标注、TrackEval的使用、DarkLabel不能自动跟踪解决方案及如何在MMTracking上输出跟踪评测

跟踪方向的标注成本非常很大的 ,那么我们如何尽可能一次性弄好呢? 所选标注工具:DarkLabel DarkLabel是一个轻量的视频标注软件,尤其做MOT任务非常友好,其标注可以通过脚本转化为标准的目标检测数据集格式、ReID数据集格式和MOT数据集格式。 使用之前: darklabel.yml:保…

传参的理解

前言 当我们调用函数的时候&#xff0c;参数是怎么传递给被调用方的&#xff0c;有想过这个问题吗&#xff1f;传递不同大小的参数对调用方式有影响吗&#xff1f;本文将带你探究这些问题&#xff0c;阅读本文需要对函数栈帧有一定的理解&#xff0c;并了解基本的汇编指令。 …