import numpy as np
import pandas as pd
import math
import collections
def import_data():
data = pd.read_csv('watermelon.txt')
data.head(10)
data=np.array(data).tolist()
labels = ['色泽', '根蒂', '敲击', '纹理', '脐部', '触感']
labels_full = {}
for i in range(len(labels)):
labelList = [example[i] for example in data]
uniqueLabel = set(labelList)
labels_full[labels[i]] = uniqueLabel
return data,labels,labels_full
data,labels,labels_full=import_data()
def calcShannonEnt(dataSet):
"""
计算给定数据集的信息熵(香农熵)
:param dataSet:
:return:
"""
numEntries = len(dataSet)
labelCounts = collections.defaultdict(int)
for featVec in dataSet:
currentLabel = featVec[-1]
labelCounts[currentLabel] += 1
shannonEnt = 0.0
for key in labelCounts:
prob = float(labelCounts[key]) / numEntries
shannonEnt -= prob * math.log2(prob)
return shannonEnt
print(calcShannonEnt(data)) # 输出为:0.9975025463691153
def splitDataSet(dataSet, axis, value):
"""
按照给定的特征值,将数据集划分
:param dataSet: 数据集
:param axis: 给定特征值的坐标
:param value: 给定特征值满足的条件,只有给定特征值等于这个value的时候才会返回
:return:
"""
retDataSet = []
for featVec in dataSet:
if featVec[axis] == value:
reducedFeatVec = featVec[:axis]
reducedFeatVec.ex
机器学习决策树代码实现
最新推荐文章于 2024-08-10 00:28:48 发布
本文详细介绍了如何使用Python实现决策树算法,从理论到代码,深入浅出地讲解了决策树的学习过程,包括数据预处理、模型训练、预测及模型评估等关键步骤,适合机器学习初学者和开发者参考。
摘要由CSDN通过智能技术生成