Как передать функции модели Keras? - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь получить практический опыт работы с ML и узнаю, как обучить модель, способную предсказать пол по имени.

Я векторизовал имена (использовал три разных способа сделать это)и передать их в качестве входных данных для модели, но сколько бы я ни играл с ней, я могу только добиться того, чтобы модель была настолько точной (около 70% макс.).

На данный момент, с 32K именами в моем корпусе,Я в значительной степени истощил свои источники дополнительных имен (и, в конце концов, если я буду продолжать гоняться за дополнительными именами, мой словарь в какой-то момент станет достаточно большим, чтобы в любом случае не нуждаться в ИИ).

Поэтому я подумал, чтоЯ мог бы «помочь» моей сети, дав ей подсказки об именах, чтобы помочь ей повысить уровень точности.

Если я правильно понимаю функции, я мог бы использовать их, чтобы помочь модели повысить точность, придав ей дополнительные характеристики, которыепомогите предсказать класс с более высокой точностью.

Например, эти:

<QuerySet [{'gender': 'Female', 'ends_with_a': 8089}, {'gender': 'Male', 'ends_with_a': 677}]>,
<QuerySet [{'gender': 'Female', 'ends_with_na': 1710}, {'gender': 'Male', 'ends_with_na': 93}]>

Имена, заканчивающиеся на a, более вероятныпринадлежать женщинам.И так далее.Я не мог найти инструменты, которые автоматически синтезируют функции из слов, поэтому я думаю, что мне придется вычислить и извлечь их сам, как этот пункт.

Что я не понимаю, это , как передать эти функции вмодель без модели запрашивает эти функции, когда я прошу ее предсказать класс для меня.

После того, как я подготовил свои данные, это рамка панд:

        gender  gender_count    name    vectorized   indexised  nlp_vectorized
20908   1       5               jasmely [0, ..]      [9, ...]   [0.44732133, 0.5620067 ...]

Я использую векторизованные входы в модель для обучения:

X = names_frame["vectorized"].values
X = np.array([np.array(l) for l in X])
Y = names_frame["gender"].values
model = Sequential()
model.add(Dense(16, input_dim=26, activation='sigmoid'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X, Y, epochs=40, batch_size=500, validation_split=.2, callbacks=[PlotLossesKeras()], verbose=False)

Я могу добавить функции к своему dataframe с данными, но как мне передать его в модель?

...