一、获取数据集
水果中苹果和杨桃外部特征比较鲜明,例如下面两张苹果、杨桃图片,苹果颜色为红色、形状大致为椭圆形、表面光滑没有棱角、带叶子,杨桃则是黄色、五角星形、带有棱角、没叶子。
利用上述特征统计一些苹果和杨桃数据:
- 颜色: 1-红色 0-黄色
- 形状: 1-椭圆形 0-五角星形
- 棱角: 1-有棱角 0-无棱角
- 带叶: 1-带叶子 0-不带叶子
1、提取数据
利用CSV库将指定特征分类,将除去第一行的数据提取出来,作为本次实验的数据集
其中第一行就是决策树的每一个节点,存到lables中;再将特征对应每一种情况存到了labels中。
# 获取数据集
def createDataSet(filename):
# 读取文件
data = open(filename, 'rt', encoding='gbk')
reader = csv.reader(data)
# 获取标签列
handlers = next(reader)
lables = handlers[:-1]
# 数据列表
dataSet = []
for row in reader:
# 读取除第一行的数据
dataSet.append(row[:])
# 特征对应的所有可能的情况
labels_full = {
}
for i in range(len(lables)):
labelList = [example[i] for example in dataSet]
uniqueLabel = set(labelList)
labels_full[lables[i]] = uniqueLabel
return dataSet, lables, labels_full
2、划分数据
dataSet输入的数据,axis是labels中对应坐标,value是对应属性下的属性值。
# 划分数据集
def splitDataSet(dataSet, axis, value):
retDataSet = []
for featVec in dataSet:
# 给定特征值等于想要的特征值
if