Keras不切实际的结果

时间:2018-05-06 15:21:47

标签: machine-learning keras

我尝试用keras进行信用欺诈预测。 为此,我有一个creditcard.csv文件,有超过28万个不同的案例,都被标记为欺诈或有效。

我的问题是,我的代码实际上是编译的,但是在第一个时代,我的准确度已经是0.9979,并且来自第二个时代: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)
                    )

我感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

您的测试数据是否平衡?

因为如果不是,例如它是真实数据的集合,我猜测一个退化模型回复"有效"任何输入都可以轻松获得> 99%acc。尝试报告F1分数,这是(未破坏的)检测任务的默认选择。