Как насчет начала с xgboost
или random forest
? - Так добрая "старая" ОД? Преимущество будет в том, что вы сможете визуализировать дерево решений модели после обучения.
Если вы используете NN в тензорном потоке (или даже проще: керасы с тензорным бэкэндом), вы можете go с MLP (мульти слой перцептрона), поскольку ответы на вопросы имеют фиксированную позицию на входе. Вам не нужно много слоев.
Важно, чтобы вы нормализовали свои входные данные по столбцам, чтобы входные числа были не намного больше / меньше, чем + 1 / -1, соответственно. Вступительные книги часто пропускают этот пункт, хотя и важный.
Поскольку ваша целевая маркировка - «принять» или «отклонить», двоичный классификатор сделает это (также в подходе машинного обучения). (Вы используете 0 и 1 в качестве меток).
Для NN вам не требуется такая классификация, как много слоев или нейронов. Попробуйте сначала самую маленькую сеть. скажем, 10 нейронов в первом слое, затем 7 нейронов в следующем слое (возможно, даже меньше), а затем 1 выходной нейрон для двоичного решения.
С Keras это будет:
from keras.models import Sequential
from keras.layers import Dense
def create_mlp(n_input = 500): # number of columns of input data 500 here
model = Sequential()
model.add(Dense(10, input_dim=n_input, kernel_initializer='normal', activation='relu')) # init = kernel_initializer
model.add(Dense(7, kernel_initializer='normal', activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['acc'])
return model
model = create_mlp(500) # this will generate the correct NN compiled.
Ваш фрейм данных (или Numpy входной массив должен иметь в качестве строк выборки, столбцы для каждого ответа для столбца вопроса 1. Ответы, которые вы должны кодировать в числовой форме c. Числа должны быть маленькими - лучше всего от -1 до 1. NN не любят большие числа, поэтому может помочь нормализация по столбцам.)
Вот и все. Я изучил все это в прошлом году. Удачи в учебе. Это будет куча веселья!