我尝试对keras进行信用卡欺诈预测。
为此,我有一个creditcard.csv文件,其中包含超过280 000个不同的案例,这些案例都被标记为欺诈或有效。
我的问题是,我的代码实际上确实可以编译,但是在第一个epoche中,我的精度已经是0.9979,而从第二个epoche到acc:0.9982。
这对我来说似乎不是很现实,但是我不知道我的错误。
这是我的代码的简化版:
import pandas as pd
import numpy as np
from keras import models
from keras import layers
combinedData = pd.read_csv('creditcard.csv')
trainData = combinedData[:227845]
testData = combinedData[227845:]
trainDataFactors = trainData.copy()
del trainDataFactors['Class']
trainDataLabels = pd.DataFrame(trainData, columns=['Class'])
testDataFactors = testData.copy()
del testDataFactors['Class']
testDataLabels = pd.DataFrame(testData, columns=['Class'])
model = models.Sequential()
model.add(layers.Dense(30, activation="relu", input_shape = (30, )))
model.add(layers.Dense(60, activation ="relu"))
model.add(layers.Dense(30, activation="sigmoid"))
model.compile(
optimizer = "rmsprop",
loss = "sparse_categorical_crossentropy",
metrics = ["accuracy"]
)
history = model.fit(
trainDataFactors, trainDataLabels,
epochs = 20,
batch_size = 512,
validation_data=(testDataFactors, testDataLabels)
)
感谢您的帮助!
最佳答案
您的测试数据是否平衡?
因为如果不是这样它是真实数据的集合,我猜想对任何输入都回复“有效”的简并模型可以轻松获得> 99%的acc。尝试报告F1分数,这是(无平衡)检测任务的默认选择。
关于machine-learning - Keras的结果不切实际,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50201359/