Я запустил дерево решений и хочу пометить каждую ячейку по ее прогнозу. Я вытащил уникальные предсказания из объекта предсказания, как показано ниже.
test_df3_dummies['dt_predictions'].unique()
array([0.00617504, 0.00834542, 0.02429166, 0.01016155, 0.00258616,
0.44985403, 0.05977463, 0.08333904])
Поэтому я сделал следующее, чтобы составить столбец корзин на основе прогнозов:
condition = [(test_df3_dummies['dt_predictions'] == 0.00617504)
,(test_df3_dummies['dt_predictions'] == 0.00834542)
,(test_df3_dummies['dt_predictions'] == 0.02429166)
,(test_df3_dummies['dt_predictions'] == 0.01016155)
,(test_df3_dummies['dt_predictions'] == 0.00258616)
,(test_df3_dummies['dt_predictions'] == 0.44985403)
,(test_df3_dummies['dt_predictions'] == 0.05977463)
,(test_df3_dummies['dt_predictions'] == 0.08333904)]
replace = [1,2,3,4,5,6,7,8]
test_df3_dummies['dt_bins'] = np.select(condition, replace, default = 0)
Но это не набирает стоимость. Панды обрезают последние две цифры, поэтому я попытался это сделать, и это также не удалось. Есть ли хитрость с float64
типами переменных и np.select
?
2 ответа
Используйте groupby.ngroup
:
#test_df3_dummies=test_df3_dummies.sort_values('dt_predictions') #if is neccesary
test_df3_dummies['dt_bins']=test_df3_dummies.groupby('dt_predictions').ngroup + 1
Это factorize
:
test_df3_dummies = test_df3_dummies.sort_values('dt_predictions')
enum, codes = test_df3_dummies['dt_predictions'].factorize()
test_df3_dummies['dt_bins'] = enum
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.