У меня есть логистическая регрессия, которая предсказывает, какие клиенты собираются откачать. Кажется, я нигде не могу найти код, который извлекает учетные записи, которые, как прогнозировалось, оттока. Имя учетной записи является строковым объектом, поэтому я не включаю его в логистическую модель, но мне нужно отобразить предсказанные строки оттока обратно в исходную таблицу
Вот так выглядят мои данные, однако я не могу воспроизвести эту проблему в меньшем размере образца:
import random
random_data = [['ABC', 'yes'],['AAA','yes'],
['BBB','no'],['XTZ','no'],['ADB','no']]
df = pd.DataFrame(random_data,columns=['Account','Target'])
df['height'] = random.sample(xrange(10), len(df))
df['weight'] = random.sample(xrange(10), len(df))
X_train_pd = df.drop(['Account','Target'], axis=1)
y_train_pd = df['Target']
logreg = LogisticRegression()
logreg.fit(X_train_pd, y_train_pd)
y_pred_train = logreg.predict(X_train_pd)
Вот что я пробовал. Его Hacky and the Bug показан ниже
«Извлечение имен счетов, прогнозируемых для оттока»
y_pred_prob_df = pd.DataFrame(logreg.predict_proba(X_test))
data = np.array([y_test_pd, y_pred_test ])
data_y = pd.DataFrame({'y_test':data[0],'y_pred_test':data[1]} )
ID = test[['Account Name', 'Status']]
Accounts=pd.concat([ID, data_y, y_pred_prob_df], axis=1)
Вот ошибка: когда я сопоставляю фактическую y, предсказанную y, вероятности, исходный набор данных (ID), я получаю дополнительные несколько строк.
Если я уберу ID, это устранит ошибку.
print ID.shape #(250, 2)
print data_y.shape #(250, 2)
print y_pred_prob_df.shape #(250, 2)
print Accounts.shape, "(267, 6) <-- BUG "
s=pd.concat([data_y, y_pred_prob_df], axis=1)
print s.shape, "(250, 4) <-- Resolves BUG: ID is the issue"
Хакки не работает ... Мы хотим извлечь ТОЛЬКО учетные записи, для которых прогнозируется отток
Результат, который я ищу, - это один фрейм данных со всеми моими функциями, целью, прогнозируемой текучестью и вероятностью прогнозирования. В частности, прогнозируется ли изменение имени учетной записи «ABC»? вероятно из этого прогноза? и все поля, которые вошли в модель
Похоже, я не могу использовать loc, чтобы найти только те аккаунты, для которых прогнозируется отток