我尝试对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/

10-13 03:25