-
大小: 1.17MB文件类型: .zip金币: 1下载: 0 次发布日期: 2023-08-28
- 语言: Python
- 标签: 决策树 ID3 Car-Evaluati 人工智能 car_database
资源简介
用python编写的决策树ID3算法,运用了Car-Evaluation的例子。BUG较少,综合了网上的优秀代码,并进一步形成自己的代码。代码基本有注释,风格良好,能够很快看懂。内含有比较规范的报告文档,包含所有流程图,说明图,以及文档风格绝对不错,无需更改,建议下载!
该算法所测试的数据集如下(已经打包在内,并已经生成xls格式,方便直接使用):
已知:UCI标准数据集Car-Evaluation,定义了汽车性价比的4 个类别;
求:用ID3算法建立Car-Evaluation的属性描述决策树
Car-Evaluation训练数据集文件:
1. car_databases.pdf
2. car_evalution-databases.pdf
代码片段和文件信息
import pandas as pd
import numpy as np
import time
import treePlotter as ctp
#import matplotlib.pyplot as plt
#print不省略输出
#np.set_printoptions(threshold=np.inf)
def getData():
f = pd.read_csv(‘D:\docunments\code\DM\ML\ID3\data set\car_evalution-databases.csv‘encoding = “utf-8“)
# 获取属性值
feature = np.array(f.keys())
feature = np.array(feature[1:feature.size])
# 数据转换成数组
S = np.array(f)
S = np.array(S[: 1:S.shape[1]])
return Sfeature
#统计某一列的特征各个取值概率
def probability(x):
x_values = np.unique(np.array(x)) #统计某列特征取值类型
values_count = np.zeros(x_values.shape[0]).reshape(1x_values.shape[0])
for i in range(0 x_values.shape[0]):
q = np.matrix(x[np.where(x[:0] == x_values[i])[0]])
values_count[:i] = q.shape[0]
p = values_count/values_count.sum()
return p
#计算Entropy
#S为矩阵类型
#返回entropy
def Entropy(S):
p = probability(S[:S.shape[1]-1])
log_p = np.log(p)
entropy = -np.dot(pnp.transpose(log_p))[0][0]
return entropy
#计算EntropyA
#S为数组类型
#返回最小的信息熵的特征的索引值
#返回最小的信息熵值
def getMinEntropyA(S):
entropy = np.zeros(S.shape[1]-1)
for i in range(0 S.shape[1]-1): #当前所有非目标特征
values = np.unique(np.array(S[:i]))
values_entropy = np.zeros(values.shape[0]).reshape(1values.shape[0])
for j in range(0values.shape[0]):
q = np.matrix(S[np.where(S[:i] == values[j])[0]]) #抽取该特征取某值的样本数据
values_entropy[:j] = Entropy(q)
proportion = probability(np.matrix(S[: i]).transpose())
entropy[i] = np.dot(proportion values_entropy.transpose())[0][0]
minEntropyA = entropy.min()
position_minEntropA = entropy.transpose().argmin()
return position_minEntropA minEntropyA
#计算Gain
#S为数组类型
#返回最大信息增益的特征的索引值
def getMaxGain(S):
entropyS = Entropy(np.matrix(S))
position_minEntropyA entropyA = getMinEntropyA(S)
if(entropyS - entropyA > 0):
return position_minEntropyA
#ID3算法
#返回ID3决策树
def ID3(Sfeatures):
if(Entropy(np.matrix(S)) == 0):
return S[0][S.shape[1] - 1]
#统计目标特征的当前取值作为叶节点的值
elif features.size == 1:
type_values = np.unique(S[: S.shape[1]-1])
max = 0
max_value = S[0][S.shape[1] - 1]
for value in type_values:
S_temp = np.array(S[np.where(S[: S.shape[1]-1] == value)[0]])
if max < S_temp.shape[0]:
max = S_temp.shape[0]
max_value = value
return max_value
else:
best_feature_index = getMaxGain(S)
best_feature = features[best_feature_index]
best_feature_values = np.unique(S[: best_feature_index])
# 划分S,feature
features = del_arrary(features best_feature_index)
Tree_ID3 = {best_feature:{}}
for value in best_feature_values:
S_temp = np.array(S[np.where(S[: best_feature_index] == value)[0]])
#去除best_featur
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2018-06-12 22:54 ID3鍐崇瓥鏍戠畻娉曞疄楠?
文件 6148 2018-06-12 22:54 ID3鍐崇瓥鏍戠畻娉曞疄楠?.DS_Store
目录 0 2018-06-12 22:59 __MACOSX\
文件 0 2018-06-12 22:59 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?
文件 182 2018-06-12 22:54 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?._.DS_Store
文件 38332 2017-10-24 23:51 ID3鍐崇瓥鏍戠畻娉曞疄楠?car_databa
文件 182 2017-10-24 23:51 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?._car_databa
文件 120807 2017-11-02 15:52 ID3鍐崇瓥鏍戠畻娉曞疄楠?car_evalution-databa
文件 182 2017-11-02 15:52 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?._car_evalution-databa
文件 57339 2017-10-24 23:51 ID3鍐崇瓥鏍戠畻娉曞疄楠?car_evalution-databa
文件 182 2017-10-24 23:51 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?._car_evalution-databa
文件 150881 2017-11-02 15:49 ID3鍐崇瓥鏍戠畻娉曞疄楠?car_evalution-databa
文件 182 2017-11-02 15:49 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?._car_evalution-databa
文件 116224 2017-10-25 11:42 ID3鍐崇瓥鏍戠畻娉曞疄楠?ID3鍐崇瓥鏍戠畻娉曞疄楠?ppt
文件 182 2017-10-25 11:42 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?._ID3鍐崇瓥鏍戠畻娉曞疄楠?ppt
目录 0 2017-11-02 14:50 ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\
文件 6148 2017-11-02 01:27 ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\.DS_Store
目录 0 2018-06-12 22:59 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\
文件 182 2017-11-02 01:27 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\._.DS_Store
目录 0 2017-11-02 14:50 ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\
文件 6148 2017-11-02 01:27 ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\.DS_Store
目录 0 2018-06-12 22:59 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\
文件 182 2017-11-02 01:27 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\._.DS_Store
目录 0 2017-11-02 14:50 ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\code\
目录 0 2017-11-03 15:09 ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\code\ID3\
目录 0 2017-11-02 14:50 ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\code\ID3\.idea\
文件 459 2017-10-21 02:14 ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\code\ID3\.idea\ID3.iml
目录 0 2018-06-12 22:59 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\code\
目录 0 2018-06-12 22:59 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\code\ID3\
目录 0 2018-06-12 22:59 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\code\ID3\.idea\
文件 182 2017-10-21 02:14 __MACOSX\ID3鍐崇瓥鏍戠畻娉曞疄楠?ML-master\ID3\code\ID3\.idea\._ID3.iml
............此处省略59个文件信息
- 上一篇:python人脸识别
- 下一篇:基于arcgis的Python工具箱
相关资源
- GBDT单机版Python实现源代码
- python决策树代码
- 决策树剪枝算法的python实现方法详解
- 基于决策树的天气大数据回归例程
- 决策树回归算法
- 使用Python实现决策树
- 决策树分类算法
- 决策树预测获胜NBA球队
- python实现决策树分类算法
- ID3决策树python代码
- 集成k-最近邻(k-NN)、朴素贝叶斯、
- python 决策树代码
- python 决策树算法的实现
- C4.5决策树算法的Python代码和数据样本
- 决策树DecisionTree项目python代码实现
- 机器学习决策树2个经典案例
- Python实现ID3算法
- ID3决策树的Python代码
- ID3算法,详解+Python代码实现
- ID3代码和测试数据集
- 《机器学习实战》中决策树python2.7代
- ID3算法Python实现.zip
- 波士顿房价决策树python编码
- 对泰坦尼克号数据集的简单分析决策
评论
共有 条评论