1 信息熵
熵,热力学中表征物质状态的参量之一,用符号S表示,其物理意义是体系混乱程度的度量。
信息是个很抽象的概念。人们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本五十万字的中文书到底有多少信息量。
直到1948年,香农提出了“信息熵”的概念,才解决了对信息的量化度量问题。信息熵这个词是C.E.香农从热力学中借用过来的。热力学中的热熵是表示分子状态混乱程度的物理量。香农用信息熵的概念来描述信源的不确定度。
信息熵的单位:比特bit
例子:猜世界杯冠军,假如一无所知,猜多少次?
2 关于节点的选择,算法(ID3)
3 案例实现
import pandas
from sklearn.feature_extraction import DictVectorizer
from sklearn.preprocessing import LabelBinarizer
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
# import csv
# data = csv.reader('buy_computer.xlsx')
data = pandas.read_excel('buy_computer.xlsx')
x = data.loc[:,['age','income','student','credit_rating']]
y = data[['Class:buys_computer']]
print('#########特征集#######')
print(x)
print('###########目标集######')
print(y)
x_dict = x.to_dict(orient='records')
dv = DictVectorizer()
X = dv.fit_transform(x_dict).toarray()
print(dv.get_feature_names())
print(X)
Y = LabelBinarizer().fit_transform(y)
print(Y)
#导入自带的决策树模型
dtc = DecisionTreeClassifier(random_state=0)
#带入数据进行训练
dtc.fit(X,Y)
# 生成模型,进行预测
# y_predict = dtc.predict([[0. 0. 1. 0. 1. 1. 0. 0. 1. 0.]])
#展示出决策树
dot_data = tree.export_graphviz(feature_names=dv.get_feature_names(),decision_tree=dtc,out_file=None,rounded=True,filled=True,special_characters=True)
print(dot_data)
import pydotplus
gra = pydotplus.graph_from_dot_data(dot_data)
print(gra)
# gra.write_pdf('file.pdf')
4 优缺点
决策树的优点: 直观,便于理解,小规模数据集有效
决策树的缺点: 处理连续变量不好 类别较多时,错误增加的比较快 可规模性一般
5 算法选择
C4.5: Quinlan Classification and Regression Trees
(CART): (L. Breiman, J. Friedman, R. Olshen, C. Stone)
共同点:都是贪心算法,自上而下(Top-down approach)
区别:属性选择度量方法不同: C4.5 (gain ratio), CART(gini index), ID3 (Information Gain)