Попытка вернуть прогнозы в соответствующую строку в фрейме данных - PullRequest
1 голос
/ 25 июня 2019

Я делаю прогнозы из своей модели в форме нудистского ndarray.Все они правильны с сигмовидной продукцией.Теперь я бы хотел подключить каждое значение массива numpy обратно в кадр данных к соответствующей строке, а также иметь условное высказывание, если> .5 then == 1 else <.5 == 0 </p>

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

employers = data_churn
# employers = np.array([employers])
predictions = model_churn.predict(employers)
predictions

employerPredictions = real_churn
employerPredictions = employerPredictions.rename(index=str, columns={"main_reason": "churned"})
employerPredictions.drop(['biztype_knowledge','biztype_field','biztype_creative','PercentEmpChg','PercentChgRevenue','PercentChgPay','amountOfResignations','nb_months_active'], axis=1, inplace=True)
if predictions.any() > .5:
    employerPredictions['predictedChurn'] = 1
    employerPredictions['ConfidenceWillChurn %'] = round((predictions[0][0] * 100), 2)
else:
    employerPredictions['predictedChurn'] = 0
    employerPredictions['ConfidenceWillNotChurn %'] = round(((1 - predictions[0][0]) * 100), 2)


employerPredictions

Пока что метод any просто возвращает первое предсказание и устанавливает его для всех вкадр данных

1 Ответ

1 голос
/ 25 июня 2019

Как округлить прогнозы до 1 и 0:

employerPredictions['predictedChurn'] = np.round(predictions).astype(np.int8)

#Or you just downcast it to int
employerPredictions['predictedChurn'] = predictions.astype(np.int8)

#Or use np.where
employerPredictions['predictedChurn'] = np.where(predictions>=0.5,1,0)

Что касается ConfidenceWillChurn% или ConfidenceWillNotChurn%, я бы попробовал вот так, но я не уверен, что это то, что вы спрашиваете.

employerPredictions['ConfidenceWillChurn %'] = np.where(predictions>=0.5,predictions*100,np.nan)

employerPredictions['ConfidenceWillNotChurn %'] = np.where(predictions<0.5,(1-predictions)*100,np.nan)

Я поставил np.nan, но вы можете выбрать другое значение, если условие не выполняется.Я использовал where-метод из numpy .У Панд тоже есть метод where, но он делает что-то другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...