理论基础:信息论
1. 熵(entropy)H(S)用来测量一个数据集S的不确定程度。
H(S)=−∑x∈Xp(x)log2p(x)
-
S
-待计算熵的数据集,在ID3算法的每次迭代中会改变
- X -S中类别的集合
-
H(S)=0
,集合
S
被完全分到一个类中。
在ID3中,对每一个属性熵,熵最小的属性在本次迭代中用来划分数据集。
2. 信息增益(information Gain)
信息增益
- H(S):集合S的熵
- T:数据集S被属性A划分后产生的子集 的集合
- p(t) :属于子集t的元素个数占集合S的比例
- H(t) :子集t的熵
- 在一次迭代中信息增益最大的属性用来划分数据集
学习内容
2. 常用的获取列表的方法:
f=[exmaple[0] for exmaple in myDat],返回一个list
myDat=[ [0,1,2] , [1,1,2] , [1,3,2] ]
f=[0,1,1]
3. matplotlib.pyplot.subplot(*args,**kwargs)
subplot(nrows,ncols,plot_number):把一个图分成nrow*ncols个子图,在plot_number中画图
如果这三个参数都小于10,可以写成subplot(211)
4. matplotlib.pyplot.annotate(*args,**kwargs)
创建注释:
5. 函数特殊属性:__dict__
__dict__用来存储一个对象的属性的字典或映射
经常会看到在一个函数中出现另一个函数的属性,如:在plottree中会出先plottree.yoff=…..,在其他函数中也会出现plottree.xoff=….
这样就可以添加plottree函数的属性,也可以利用__dict__来添加属性plottree.\_\_dict\_\_['mul']=mul ##其中mul可以是一个函数
通过dir(functionname)
可以查看函数的属性
6. pickle模块中dump函数
pickle.dump(obj,file[,protocol])
将对象obj写入打开的文件对象file中,文件对象必须具有写属性。
fw=open(filename,'w')
pickle.dump(inputTree,fw)
fw.close
#####从文件中载入时:
fr=open(filename)
tree=pickle.load(fr)
7. 列表list中append和extend的区别:
a=[1,2,3]
b=[4,5,6]
a.append(b)
a=[1,2,3,[4,5,6]]
a.extend(b)
a=[1,2,3,4,5,6]