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

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?

0
Jordan 20 Дек 2019 в 19:03

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
1
ansev 20 Дек 2019 в 16:18

Это 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
1
Quang Hoang 20 Дек 2019 в 16:12