分类中对连续数据的类划分:
在 C4.5 算法中采用二分法对连续值进行处理。
Markdown Code
对于连续的属性 XX 假设共出现了 n 个不同的取值,将这些取值从小到大排序{x1,x2,x3,…,xn}{x1,x2,x3,…,xn},其中找一点作为划分点 t ,则将数据划分为两类,大于 t 的为一类,小于 t 的为另一类。而 t 的取值通常为相邻两点的平均数
t=xi+xi+12t=xi+xi+12。
则在 n 个连续值之中,可以作为划分点的 t 有 n-1 个。通过遍历可以像离散型一样来考察这些划分点。
Gain(D,X)=Ent(D)−||D
def get_splitpoint(data, base_ent, feature):"""参数:data -- 数据集base_ent -- 根节点的信息熵feature -- 需要划分的连续特征返回:final_t -- 连续值最优划分点"""continues_value = data[feature].sort_values().astype(np.float64) continues_value = [i for i in continues_value] t_set = []t_ent = {}for i in range(len(continues_value)-1): temp_t = (continues_value[i]+continues_value[i+1])/2t_set.append(temp_t)for each_t in t_set: temp1_data = data[data[feature].astype(np.float64) > each_t] temp2_data = data[data[feature].astype(np.float64)