【发布时间】:2021-12-20 09:15:03
【问题描述】:
我正在尝试创建一个可以预测信用卡交易是否欺诈的模型。我的数据集可用on Kaggle。一切正常,直到我适合我的模型,当我得到这个错误时:
ValueError: Data cardinality is ambiguous:
x sizes: 7433462
y sizes: 284807
Make sure all arrays contain the same number of samples.
有人可以帮我找出问题所在吗?
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Activation, Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.metrics import categorical_crossentropy
from sklearn.utils import shuffle
from sklearn.preprocessing import MinMaxScaler
data = pd.read_csv("creditcard.csv")
trainSamples = data['Class']
labels = ['Time', 'V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V10', 'V12', 'V13', 'V14', 'V15', 'V16', 'V17', 'V18', 'V19', 'V20', 'V21', 'V22', 'V23', 'V24', 'V25', 'V26', 'V27', 'V28', 'Amount']
trainSamples = data[labels]
trainLabels = np.array(trainLabels)
trainSamples = np.array(trainSamples)
trainLabels = shuffle(trainLabels)
trainSamples = shuffle(trainSamples)
scaler = MinMaxScaler(feature_range = (0, 1))
scaledTrainSample = scaler.fit_transform(trainSamples.reshape(-1,1))
model = Sequential([
Dense(units = 16, input_shape = (1, ), activation = 'relu'),
Dense(units = 32, activation = 'relu'),
Dense(units = 2, activation = 'softmax')
])
model.compile(optimizer = Adam(learning_rate = 0.0001), loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])
model.fit(x = scaledTrainSample, y = trainLabels, validation_split = 0.1, batch_size = 10, epochs = 300, verbose = 2)
【问题讨论】:
标签: python tensorflow keras classification