一些关于决策树自己的理解
决策树是根据信息增益自己选择规则,并且递归构建树的过程。
所谓的信息增益可以理解为:原本系统是混乱的,当选择一个属性划分,划分后两个子系统的混乱程度是否减轻了;比如;原来系统正负样本,比例为1:1 ,如果你选择一个属性进行划分后,两个子系统的正负样本比例变成了 8:2 和3:7 ,那么这次 的划分就是有意义的,而根据信息增益,更大的信息增益,表示更好的划分属性,从而大大减小系统的混乱程度也就是熵。
【注】熵本来是物理学的概念,便是一个区域内,事物的混乱程度,越混乱熵越大;也就是所,世界上所有物质都是在熵增的过程 中,比如桌子会越来越来乱,地上会越来越脏,但是也可以通过消耗能量的方式,降低一个区域的熵,比如消耗生物能收拾下桌子,通过消耗热能把碎铁融成铁块。通过选择属性降低数据集的混乱程度。
本次使用的数据集是【西瓜数据集2.0】
编号,色泽,根蒂,敲声,纹理,脐部,触感,好瓜
1,青绿,蜷缩,浊响,清晰,凹陷,硬滑,是
2,乌黑,蜷缩,沉闷,清晰,凹陷,硬滑,是
3,乌黑,蜷缩,浊响,清晰,凹陷,硬滑,是
4,青绿,蜷缩,沉闷,清晰,凹陷,硬滑,是
5,浅白,蜷缩,浊响,清晰,凹陷,硬滑,是
6,青绿,稍蜷,浊响,清晰,稍凹,软粘,是
7,乌黑,稍蜷,浊响,稍糊,稍凹,软粘,是
8,乌黑,稍蜷,浊响,清晰,稍凹,硬滑,是
9,乌黑,稍蜷,沉闷,稍糊,稍凹,硬滑,否
10,青绿,硬挺,清脆,清晰,平坦,软粘,否
11,浅白,硬挺,清脆,模糊,平坦,硬滑,否
12,浅白,蜷缩,浊响,模糊,平坦,软粘,否
13,青绿,稍蜷,浊响,稍糊,凹陷,硬滑,否
14,浅白,稍蜷,沉闷,稍糊,凹陷,硬滑,否
15,乌黑,稍蜷,浊响,清晰,稍凹,软粘,否
16,浅白,蜷缩,浊响,模糊,平坦,硬滑,否
17,青绿,蜷缩,沉闷,稍糊,稍凹,硬滑,否
源码分析下:
首先导入读取csv,并把提取列名,供以后使用:
df=pd.read_csv("./ml2.0.csv")
# 属性集合
attr=df.columns.values.tolist()[1:]
data_org=np.array(df[attr[0:]])
static_attr=df.columns.values.tolist()[1:]#这里的属性 不改变,仅仅作为索引
获得各个列名下的详细分类:
attr_dict={
}#用于记录每一个属性的取值
for x in attr[:-1]:
temp=np.array(df[x])
attr_dict[x]=set(temp)
attr_dict 格式如下:
{
'色泽': {
'乌黑', '浅白', '青绿'},
'根蒂': {
'蜷缩', '硬挺', '稍蜷'},
'敲声': {
'浊响', '清脆', '沉闷'},
'纹理': {
'清晰', '稍糊', '模糊'},
'脐部': {
'平坦', '稍凹', '凹陷'},
'触感': {
'硬滑', '软粘'}
}
判断一个数据集中,是否全部为正样本或者全部为负样本
def lable_is_same(

&spm=1001.2101.3001.5002&articleId=108901566&d=1&t=3&u=e00f207888a74165947653d6e28a5bc7)

被折叠的 条评论
为什么被折叠?



