ID3算法的python实现

本文介绍了如何在MNIST数据集上使用Python实现ID3决策树算法。数据集包含28×28像素的二值化图像,共有784个特征和10个类别。采用了预剪枝策略进行模型简化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据集

  • 数据集:MNIST数据,图片大小是28×28的,10个类别,使用数据的原始特征,所有每个样本有28×28=784个特征。
  • 图片中的每个元素值都经过二值化
  • 剪枝使用的是预剪枝。

代码

import cv2
import time
import logging
import numpy as np
import pandas as pd
from collections import Counter
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score


# 二值化
def binaryzation(img):
    for i in range(len(img)):
        img_1 = img[i]  # 图片二值化
        cv_img = img_1.astype(np.uint8)  # 将图片的0-255取值变为0-1
        cv2.threshold(cv_img, 50, 1, cv2.THRESH_BINARY_INV, cv_img)
        img[i] = cv_img

# 树节点类
class Tree(object):
    def __init__(self, node_type, Class=None, feature=None):
        self.node_type = node_type
        self.Child = {
   
   }
        self.Class = Class
        self.feature = feature

    def add_tree(self, val, tree):
        self.Child[val] = tree

    def predict(self, features):
        if self.node_type == 'leaf':
            return self.<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值