我正在尝试使用keras来拟合我的模型(神经网络),但我得到了ValueError错误。
导入keras
from keras.models import Sequential
from keras.layers import Dense
classificador_rede_neural = Sequential()
# # Camadas Ocultas e de Saída
# camadas ocultas = (entradas + saídas)/2 #estimando o numero de neurônios em camada oculta
#
# temos:len(train.columns) - 1 atributos previsores
#
# 1 classe
#len(train.columns)
camadas_ocultas = round(len(train.columns)/2)
print(camadas_ocultas)
classificador_rede_neural.add(Dense(units=camadas_ocultas, activation='relu',input_dim =len(train.columns) ))#primeira camada
classificador_rede_neural.add(Dense(units=camadas_ocultas, activation='relu' ))#segunda camada
classificador_rede_neural.add(Dense(units=1, activation='sigmoid' ))#camada de saída. a saída é binária, logo units=1
classificador_rede_neural.compile(优化= '亚当',损耗= 'binary_crossentropy',度量= [ '准确性'])
classificador_rede_neural.fit(X_train2,y_train2,batch_size=10,epochs =100)
我收到错误:
ValueError: Please provide as model inputs either a single array or a list of arrays. You passed: x= sload dload spkts dpkts swin dwin smean dmean \
0 1.803636e+08 0.000000 2 0 0 0 248 0
1 8.810000e+08 0.000000 2 0 0 0 881 0
2 8.544000e+08 0.000000 2 0 0 0 534 0
3 6.000000e+08 0.000000 2 0 0 0 450 0
4 8.504000e+08 0.000000 2 0 0 0 1063 0
5 1.045333e+09 0.000000 2 0 0 0 392 0
6 1.306667e+09 0.000000 2 0 0 0 980 0
7 1.977143e+08 0.000000 2 0 0 0 692 0
[82332 rows x 22 columns]
我怎么能适合这个模特?我的数据出了什么问题?
完整代码> https://pastebin.com/jE7erEJs
答案 0 :(得分:8)
我认为问题在于您将整个pandas数据集与列标题和索引列一起传递给模型。为了训练您的数据模型,首先使用X_train2.values
和y_train2.values
将其转换为numpy数组,因为Keras模型接受numpy数组而不是pandas数据集
类似问题
Pandas DataFrame and Keras
关于Keras'顺序模型的文档
https://keras.io/models/sequential/
编辑以回复评论
不要单独转换每个列,这是没有意义的。假设您有一个名为df
的列的常规数据集labels
,您需要做的是
labels = df["labels"].copy()
df.drop(["labels"], axis=1, inplace=True)
model.fit(x=df.values, y=labels.values)
答案 1 :(得分:1)
请在下面找到适合目标变量值的解决方案
model.fit(x=X_train,y=y_train.values,epochs=2, validation_data=
(X_test,y_test.values), verbose=1)