以下是将bins_intervals
的值映射回原数据的示例代码:
import pandas as pd
import numpy as np
# 假设原数据
data = pd.DataFrame({
'feature_to_bin': [10, 20, 30, 40, 50, 60, 70, 80, 90]
})
# 假设决策树得到的分箱区间
bins_intervals = [(0, 30), (30, 60), (60, 90)]
# 创建一个新的列用于存储分箱结果
data['binned_feature'] = None
# 遍历原数据中的每个值,确定其所属的分箱并映射回区间描述
for index, row in data.iterrows():
value = row['feature_to_bin']
for bin_index, interval in enumerate(bins_intervals):
if interval[0] <= value < interval[1]:
# data.at[index, 'binned_feature'] = f'Bin {bin_index + 1}'
data.at[index, 'binned_feature'] = f'{interval[0]}-{interval[1]}'
break
else:
# 如果没有匹配到任何分箱,可以进行特殊处理,比如标记为其他类别
data.at[index, 'binned_feature'] = 'Other'
print(data)
在这个例子中,我们将原数据中的每个值与分箱区间进行比较,确定其所属的分箱,并将分箱结果映射回对应的区间描述,存储在新的列中。如果一个值不匹配任何分箱,可以根据需要进行特殊处理。