Python 实现基于信息熵的 ID3 算法决策树模型

版本说明

Python version: 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:21:07) [MSC v.1900 32 bit (Intel)]
NumPy version:1.17.4
pandas version:0.25.3
scikit-learn version:0.19.0
graphviz version:0.13.2
scipy version:1.3.3
matplotlib version:3.1.2
IPython version:7.10.1

 

1、读取数据

datafile =  r"...\sales_data.xls"
data = pd.read_excel(datafile, header=0, index_col=0)
data.head(10)

 

 2、对特征值进行数字编码,提取特征值和类标号

dt = data.copy()
dt[(dt == '') | (dt == '')] = 1
dt[(dt == '') | (dt == '')] = -1
X = dt.iloc[:, :-1].values.astype(int)
y = dt.iloc[:, -1].values
dt.heaad()  # 查看编码效果

pd.crosstab('', y)    # 查看类比统计

 

3、训练模型

from sklearn.tree import DecisionTreeClassifier as DTC
dtc = DTC(criterion='entropy')    # 基于信息熵,建立决策树模型
dtc.fit(X, y)

 

4、输出决策树图

from sklearn.tree import export_graphviz
import graphviz

dot_data = export_graphviz(dtc, feature_names=dt.columns[:-1], class_names=['低','高'],
                         filled=True, rounded=True, out_file=f)
graph = graphviz.Source(dot_data)
graph

。。。

posted @ 2019-12-05 13:51  赏尔  阅读(1002)  评论(0编辑  收藏  举报