Machine learning 这是不切实际的结果

Machine learning 这是不切实际的结果,machine-learning,keras,Machine Learning,Keras,我试着用keras做一个信用卡欺诈预测。 为此,我有一个creditcard.csv文件,其中有28万多个不同的案例,都被标记为欺诈或有效 我的问题是,我的代码实际上是编译的,但是在第一个epoche中,我的准确度已经是0.9979,从acc上的第二个epoche开始:0.9982 这对我来说似乎不太现实,但我不知道我的错误 以下是我的代码的缩写版本: 将熊猫作为pd导入 将numpy作为np导入 从keras导入模型 从keras导入图层 combinedData=pd.read\u csv(

我试着用keras做一个信用卡欺诈预测。 为此,我有一个creditcard.csv文件,其中有28万多个不同的案例,都被标记为欺诈或有效

我的问题是,我的代码实际上是编译的,但是在第一个epoche中,我的准确度已经是0.9979,从acc上的第二个epoche开始:0.9982

这对我来说似乎不太现实,但我不知道我的错误

以下是我的代码的缩写版本:

将熊猫作为pd导入
将numpy作为np导入
从keras导入模型
从keras导入图层
combinedData=pd.read\u csv('creditcard.csv'))
列车数据=组合数据[:227845]
testData=combinedData[227845:]
trainDataFactors=trainData.copy()
del trainDataFactors['Class']
trainDataLabels=pd.DataFrame(trainData,列=['Class'])
testDataFactors=testData.copy()
del testDataFactors['Class']
testDataLabels=pd.DataFrame(testData,列=['Class']))
model=models.Sequential()
添加(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=“稀疏\分类\交叉熵”,
指标=[“准确度”]
)
历史=model.fit(
trainDataFactors、trainDataLabels、,
纪元=20,
批次大小=512,
验证数据=(testDataFactors、testDataLabels)
)

谢谢你的帮助

您的测试数据是否平衡


因为如果不是,例如,它是真实数据的收集,我猜对任何输入回答“有效”的退化模型很容易获得>99%的acc。尝试报告F1分数,这是(无平衡)检测任务的默认选择。

您的测试数据平衡吗


因为如果不是,例如,它是真实数据的收集,我猜对任何输入回答“有效”的退化模型很容易获得>99%的acc。尝试报告F1分数,这是(无平衡)检测任务的默认选择。

Ah不知道这会是一个问题。在280000笔有效交易中,只有大约500笔欺诈。仅仅为了培训而删除一堆有效的事务有意义吗?删除听起来像是浪费。我建议每个时代都有一个平衡的训练数据,但总是选择一个不同的/随机的有效事务集。您可能还想在之后调整输出层中的偏差。啊,不知道这会是一个问题。在280000笔有效交易中,只有大约500笔欺诈。仅仅为了培训而删除一堆有效的事务有意义吗?删除听起来像是浪费。我建议每个时代都有一个平衡的训练数据,但总是选择一个不同的/随机的有效事务集。之后,您可能还需要调整输出层中的偏移。