Python信用卡欺诈检测 [TensorFlow]
创始人
2024-05-16 15:29:47
0

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()

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

以上就是今天要讲的内容

相关内容

热门资讯

最绚丽的安卓系统,最绚丽版本全... 哇,你知道吗?在安卓的世界里,有一款系统,它就像是一颗璀璨的明珠,闪耀着最绚丽的色彩。它就是——最绚...
小米系统安卓通知权限,深度解析... 亲爱的手机控们,你是否曾为手机通知栏里乱糟糟的信息而烦恼?又或者,你是否好奇过,为什么有些应用总是能...
安卓7.0系统能玩吗,体验全新... 你有没有想过,你的安卓手机升级到7.0系统后,那些曾经陪伴你度过无数时光的游戏,还能不能继续畅玩呢?...
平板安卓系统哪家好,安卓平板系... 你有没有想过,在这个科技飞速发展的时代,拥有一台性能出色的平板电脑是多么重要的事情呢?想象无论是追剧...
安卓好的点歌系统,打造个性化音... 你有没有想过,在安卓手机上,点歌系统竟然也能如此精彩?没错,就是那个我们每天都会用到,却又常常忽略的...
熊猫安卓系统直播软件,解锁互动... 你知道吗?最近有个超级酷炫的直播软件在熊猫迷们中间火得一塌糊涂!它就是熊猫安卓系统直播软件。别看它名...
安卓点播系统开发,Androi... 你有没有想过,手机里那些让你爱不释手的视频,其实背后有着一套复杂的安卓点播系统在默默支撑呢?今天,就...
安卓6.0系统加权限,深度解析... 你有没有发现,自从手机升级到安卓6.0系统后,权限管理变得超级严格呢?这可真是让人又爱又恨啊!今天,...
哪些电视带安卓系统,多款热门智... 你有没有想过,家里的电视竟然也能装上安卓系统?听起来是不是有点不可思议?没错,现在市面上就有不少电视...
苹果怎么运用安卓系统,揭秘如何... 你知道吗?最近有个大新闻在科技圈里炸开了锅,那就是苹果竟然开始运用安卓系统了!是不是觉得有点不可思议...
安卓系统能转什么系统好,探索最... 你有没有想过,你的安卓手机是不是也能换换口味,体验一下其他系统的魅力呢?没错,今天就来聊聊这个话题:...
龙之狂热安卓系统,释放龙族狂热 亲爱的手机控们,你是否曾为拥有一款独特的安卓系统而疯狂?今天,就让我带你走进一个充满奇幻色彩的龙之狂...
vivo手机安卓系统怎么升级系... 亲爱的手机控们,你是不是也和我一样,对手机的新功能充满期待呢?尤其是vivo手机的用户,是不是也在想...
鸿蒙2.0退回安卓系统,一场系... 你知道吗?最近科技圈里可是炸开了锅,因为华为的鸿蒙2.0操作系统竟然要退回安卓系统了!这可不是一个简...
安卓系统怎么复制卡,安卓系统卡... 你有没有遇到过这种情况:手机里的照片、视频或者重要文件,突然想备份到电脑上,却发现安卓系统的卡复制功...
app兼容低安卓系统,打造全民... 你有没有发现,现在手机APP更新换代的速度简直就像坐上了火箭!不过,你知道吗?有些APP可是特别贴心...
中间安卓系统叫什么,中间安卓系... 你有没有想过,安卓系统里竟然还有一个中间的版本?没错,就是那个让很多手机用户既熟悉又陌生的版本。今天...
安卓怎么用os系统,利用And... 你有没有想过,你的安卓手机其实可以变身成一个功能强大的操作系统呢?没错,就是那个我们平时在电脑上使用...
pe系统安卓能做么,探索安卓平... 亲爱的读者,你是否曾好奇过,那款在安卓设备上大受欢迎的PE系统,它究竟能做什么呢?今天,就让我带你一...
安卓 打印机系统,安卓打印机系... 你有没有想过,家里的安卓手机和打印机之间竟然能建立起如此紧密的联系?没错,就是那个安卓打印机系统!今...