그래서 1000 행 6 열의 데이터 프레임이 있습니다. 세 개의 열은 범주 형 변수이고 2는 연속 형입니다. 마지막 열은 1과 0의 값으로 예측하려고하는 것입니다.Keras의 범주 형 변수에 대한 포함 문제
keras를 사용하여 범주 형 변수에 대한 포함, 모든 연속 변수에 대한 조밀 한 계층을 결합하여 모델을 데이터에 적합 시키려고합니다. .
내가 한 첫번째 일은 레이블이 범주 형 변수를 인코딩 한 것입니다.
은 그 때 나는 모델을 만들기 위해 다음과 같이 범주 변수를 통해 루프와 목록에 추가 다음과 같다 : -
models_concat = []
for k in df[categorical_columns]:
s = Sequential()
s.add(Embedding(len(df[k].unique()), 5, input_length = 1, embeddings_regularizer = l2(1e-2)))
s.add(Flatten())
models_concat.append(s)
그리고 연속 변수
: -for i in df[cont_vars]:
s = Sequential()
s.add(Dense(1, input_dim = 1))
models_concat.append(s)
그럼 난 시도 다음과 같이 이들을 연결하고 네트워크를 구축했습니다. -
model_emb = Sequential()
model_emb.add(Merge(models_concat, mode='concat'))
model_emb.add(Dropout(0.02))
model_emb.add(Dense(units=100, kernel_initializer= trunc_normal))
model_emb.add(Dropout(0.25))
model_emb.add(BatchNormalization())
model_emb.add(Activation('relu'))
model_emb.add(Dense(units=100, kernel_initializer = trunc_normal))
model_emb.add(Dropout(0.2))
model_emb.add(BatchNormalization())
model_emb.add(Activation('relu'))
model_emb.add(Dense(units=50, kernel_initializer = trunc_normal))
model_emb.add(Dropout(0.1))
model_emb.add(BatchNormalization())
model_emb.add(Activation('relu'))
model_emb.add(Dense(units=1, kernel_initializer = trunc_normal))
model_emb.add(Activation('sigmoid'))
model_emb.compile(optimizer='adagrad',loss='binary_crossentropy',metrics=['accuracy'])
하지만 모델은 다음과 같습니다 : -
model_emb.fit(train_x,train_y,epochs = 20,validation_split = 0.3,batch_size = 64)
내가받을 다음과 같은 오류 : -
ValueError: The model expects 5 input arrays, but only received one array. Found: array with shape (1000, 5).
일어나고 어떻게이 문제를 해결할 수 있는지에 관해서는 어떤 생각.
P.S은 -> 나는이 방법은 물건을 할 수있는 올바른 방법입니다 확실하지 않다, 나는이 논문에서 다음과 같이 범주에 사용 묻어 실험을 시도했다 : -
https://arxiv.org/pdf/1604.06737.pdf
감사합니다.
여러 개의 입력 레이어를 만드는 for 루프가 있습니까? – DJK
내 대답이 도움이 되었습니까? –