决策树之数据划分

这篇文章利用了信息熵计算的东西,先写一个数据划分的东西,先写一个简单的逻辑划分:

def splitDataSet(dataSet, axis, value):
    retDataSet = []
    for featVec in dataSet:
        if featVec[axis] == value:
            reducedFeatVec = featVec[:axis]
            reducedFeatVec.extend(featVec[axis+1:])
            retDataSet.append(reducedFeatVec)
这是最简单的一个逻辑划分,首先建立一个新的数据集,将划分后的数据添入该数据集,

下面介绍选择最最好的数据集划分方式:

1.建立该列的变化标签

2.计算每种划分的信息熵

对上面步骤进行循环。

下面贴出该步骤的代码:

def chooseBestFeatureToSplit(dataSet):
    numberFeatures = len(dataSet[0])-1
    baseEntropy = calcShannonEnt(dataSet)
    bestInfoGain = 0.0;
    bestFeature = -1;
    for i in range(numberFeatures):
        featList = [example[i] for example in dataSet]
        print(featList)
        uniqueVals = set(featList)
        print(uniqueVals)
        newEntropy =0.0
        for value in uniqueVals:
            subDataSet = splitDataSet(dataSet, i, value)
            prob = len(subDataSet)/float(len(dataSet))
            newEntropy += prob * calcShannonEnt(subDataSet)
        infoGain = baseEntropy - newEntropy
        if(infoGain > bestInfoGain):
            bestInfoGain = infoGain
            bestFeature = i
    return bestFeature
下面给个运行结果截图:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于决策树实现mnist数据集的划分,可以按照以下步骤进行: 1. 准备数据集:从mnist数据集中获取训练集和测试集,并将它们划分为特征和标签。 2. 构建决策树:使用训练集数据来构建决策树。 3. 对测试集进行预测:使用训练好的决策树对测试集进行预测,得到预测结果。 4. 计算准确率:将预测结果与测试集的实际标签进行比较,计算准确率。 具体实现过程如下: 1. 准备数据集: 首先,我们需要从mnist数据集中获取训练集和测试集。可以使用Python中的sklearn库来获取数据集: ```python from sklearn.datasets import fetch_openml mnist = fetch_openml('mnist_784') X, y = mnist.data, mnist.target # 将数据划分为训练集和测试集 X_train, y_train = X[:60000], y[:60000] X_test, y_test = X[60000:], y[60000:] ``` 在获取数据集后,我们需要将它们划分为特征和标签: ```python # 特征为像素点的值 X_train_features, X_test_features = X_train / 255., X_test / 255. # 标签为数字 y_train_labels, y_test_labels = y_train.astype(int), y_test.astype(int) ``` 2. 构建决策树: 接下来,我们可以使用Python中的sklearn库来构建决策树: ```python from sklearn.tree import DecisionTreeClassifier # 创建决策树分类器 tree_clf = DecisionTreeClassifier(max_depth=10) # 使用训练集数据来训练模型 tree_clf.fit(X_train_features, y_train_labels) ``` 在构建决策树后,我们可以使用Graphviz库将其可视化: ```python from sklearn.tree import export_graphviz import graphviz # 将决策树导出为DOT格式 dot_data = export_graphviz( tree_clf, out_file=None, feature_names=[str(i) for i in range(784)], class_names=[str(i) for i in range(10)], rounded=True, filled=True ) # 使用Graphviz库将DOT格式转换为可视化图形 graph = graphviz.Source(dot_data) graph ``` 3. 对测试集进行预测: 使用训练好的决策树对测试集进行预测,得到预测结果: ```python # 对测试集进行预测 y_pred_labels = tree_clf.predict(X_test_features) ``` 4. 计算准确率: 将预测结果与测试集的实际标签进行比较,计算准确率: ```python from sklearn.metrics import accuracy_score # 计算准确率 accuracy_score(y_test_labels, y_pred_labels) ``` 以上就是决策树实现mnist数据划分的具体步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值