精华内容
下载资源
问答
  • 西瓜数据

    2019-05-22 14:55:22
    西瓜数据集3.0 及西瓜数据集4.0 ,方便以后学习与使用。
  • 2021年Q1西瓜数据公众号生态趋势调查报告-西瓜数据-202105.pdf
  • 西瓜数据集3.0-数据集

    2021-03-04 21:37:37
    西瓜数据集3.0 包括(3.0和3.0a) watermelon_3.csv watermelon_3a.csv
  • 包括了西瓜数据集2.0、西瓜数据集3.0、西瓜数据集4.0以及缺失的3.0数据。文件格式为csv,使用pandas.read_csv即可轻松读取。
  • 西瓜数据集3.0.xlsx

    2021-06-17 19:17:25
    《机器学习》(西瓜书)上的西瓜数据集3.0
  • 30条西瓜数据集,机器学习样例数据。
  • 朴素贝叶斯相关西瓜数据集,用于自然语言处理>01.朴素贝叶斯介绍 中的案例数据,该数据集仅作参考使用
  • 机器学习西瓜数据集.zip
  • 西瓜书西瓜数据集 xigua.csv
  • 该数据集为西瓜数据集4.0,可做多种聚类使用,在我的博客《机器学习之K-means算法(小白入门级别)》的代码中使用。
  • 《机器学习》第五章所介绍了BP网络,这个西瓜数据集是我为了方便进行BP网络测试而制作的。 测试过程:https://blog.csdn.net/weixin_40973138/article/details/118073949?spm=1001.2014.3001.5501
  • 西瓜书的西瓜数据集,用于决策树算法
  • 语言:中文 (简体) 短视频热门视频、商品及账号数据分析平台 用于西瓜数据(微博)网站登录,使用豪华版功能。帮助用户分析微博数据人群画像,人群数据,年龄等。
  • 关于C4.5的MATLAB实现,包含数据集在内,可以实现西瓜数据集的分类,比较简陋,大家拿来做个参考吧~
  • 西瓜数据集介绍以及获取。

    万次阅读 多人点赞 2018-03-14 21:35:35
    西瓜数据集介绍。 这里介绍一下《机器学习》中的西瓜数据。数据集也不少,放在别的文章中介绍就会略占篇幅,还是单独的介绍一下并且给出数据样本。 在西瓜书中,主要使用到的数据样本共有2.0、3.0、4.0这三个版本...

    西瓜数据集介绍。

    这里介绍一下《机器学习》中的西瓜数据。数据集也不少,放在别的文章中介绍就会略占篇幅,还是单独的介绍一下并且给出数据样本。

    在西瓜书中,主要使用到的数据样本共有2.0、3.0、4.0这三个版本,但是还有一些用到的数据集。


    西瓜数据集2.0

    在西瓜数据集2.0中的特征主要有以下几种:色泽、根蒂、敲声、纹理、脐部、触感。这几个数值都是离散数值,每个特征共有三个离散值。

    来自西瓜书中的西瓜数据集2.0:

    编号 色泽 根蒂 敲声 纹理 脐部 触感 好瓜
    1 青绿 蜷缩 浊响 清晰 凹陷 硬滑
    2 乌黑 蜷缩 沉闷 清晰 凹陷 硬滑
    3 乌黑 蜷缩 浊响 清晰 凹陷 硬滑
    4 青绿 蜷缩 沉闷 清晰 凹陷 硬滑
    5 浅白 蜷缩 浊响 清晰 凹陷 硬滑
    6 青绿 稍蜷 浊响 清晰 稍凹 软粘
    7 乌黑 稍蜷 浊响 稍糊 稍凹 软粘
    8 乌黑 稍蜷 浊响 清晰 稍凹 硬滑
    9 乌黑 稍蜷 沉闷 稍糊 稍凹 硬滑
    10 青绿 硬挺 清脆 清晰 平坦 软粘
    11 浅白 硬挺 清脆 模糊 平坦 硬滑
    12 浅白 蜷缩 浊响 模糊 平坦 软粘
    13 青绿 稍蜷 浊响 稍糊 凹陷 硬滑
    14 浅白 稍蜷 沉闷 稍糊 凹陷 硬滑
    15 乌黑 稍蜷 浊响 清晰 稍凹 软粘
    16 浅白 蜷缩 浊响 模糊 平坦 硬滑
    17 青绿 蜷缩 沉闷 稍糊 稍凹 硬滑

    看的也是眼花缭乱,这里共有8个好瓜和9个坏瓜样本。

    以下代码可以获取带上面你的样本数据和对应的标签,以及某个特征值的所有可能性。

    def createDataSet():
        """
        创建测试的数据集
        :return:
        """
        dataSet = [
            # 1
            ['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '好瓜'],
            # 2
            ['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '好瓜'],
            # 3
            ['乌黑', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '好瓜'],
            # 4
            ['青绿', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '好瓜'],
            # 5
            ['浅白', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '好瓜'],
            # 6
            ['青绿', '稍蜷', '浊响', '清晰', '稍凹', '软粘', '好瓜'],
            # 7
            ['乌黑', '稍蜷', '浊响', '稍糊', '稍凹', '软粘', '好瓜'],
            # 8
            ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '硬滑', '好瓜'],
    
            # ----------------------------------------------------
            # 9
            ['乌黑', '稍蜷', '沉闷', '稍糊', '稍凹', '硬滑', '坏瓜'],
            # 10
            ['青绿', '硬挺', '清脆', '清晰', '平坦', '软粘', '坏瓜'],
            # 11
            ['浅白', '硬挺', '清脆', '模糊', '平坦', '硬滑', '坏瓜'],
            # 12
            ['浅白', '蜷缩', '浊响', '模糊', '平坦', '软粘', '坏瓜'],
            # 13
            ['青绿', '稍蜷', '浊响', '稍糊', '凹陷', '硬滑', '坏瓜'],
            # 14
            ['浅白', '稍蜷', '沉闷', '稍糊', '凹陷', '硬滑', '坏瓜'],
            # 15
            ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘', '坏瓜'],
            # 16
            ['浅白', '蜷缩', '浊响', '模糊', '平坦', '硬滑', '坏瓜'],
            # 17
            ['青绿', '蜷缩', '沉闷', '稍糊', '稍凹', '硬滑', '坏瓜']
        ]
    
        # 特征值列表
        labels = ['色泽', '根蒂', '敲击', '纹理', '脐部', '触感']
    
        # 特征对应的所有可能的情况
        labels_full = {}
    
        for i in range(len(labels)):
            labelList = [example[i] for example in dataSet]
            uniqueLabel = set(labelList)
            labels_full[labels[i]] = uniqueLabel
    
        return dataSet, labels, labels_full

    西瓜数据集3.0

    相较于上面的2.0数据集,3.0又增添了两个特征值:密度和含糖率。这两个特征值都是连续数值。这里不再列出表格,直接给出获取样本数据的代码。

    def createDataSet():
        """
        创建测试的数据集,里面的数值中具有连续值
        :return:
        """
        dataSet = [
            # 1
            ['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.697, 0.460, '好瓜'],
            # 2
            ['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', 0.774, 0.376, '好瓜'],
            # 3
            ['乌黑', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.634, 0.264, '好瓜'],
            # 4
            ['青绿', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', 0.608, 0.318, '好瓜'],
            # 5
            ['浅白', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.556, 0.215, '好瓜'],
            # 6
            ['青绿', '稍蜷', '浊响', '清晰', '稍凹', '软粘', 0.403, 0.237, '好瓜'],
            # 7
            ['乌黑', '稍蜷', '浊响', '稍糊', '稍凹', '软粘', 0.481, 0.149, '好瓜'],
            # 8
            ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '硬滑', 0.437, 0.211, '好瓜'],
    
            # ----------------------------------------------------
            # 9
            ['乌黑', '稍蜷', '沉闷', '稍糊', '稍凹', '硬滑', 0.666, 0.091, '坏瓜'],
            # 10
            ['青绿', '硬挺', '清脆', '清晰', '平坦', '软粘', 0.243, 0.267, '坏瓜'],
            # 11
            ['浅白', '硬挺', '清脆', '模糊', '平坦', '硬滑', 0.245, 0.057, '坏瓜'],
            # 12
            ['浅白', '蜷缩', '浊响', '模糊', '平坦', '软粘', 0.343, 0.099, '坏瓜'],
            # 13
            ['青绿', '稍蜷', '浊响', '稍糊', '凹陷', '硬滑', 0.639, 0.161, '坏瓜'],
            # 14
            ['浅白', '稍蜷', '沉闷', '稍糊', '凹陷', '硬滑', 0.657, 0.198, '坏瓜'],
            # 15
            ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘', 0.360, 0.370, '坏瓜'],
            # 16
            ['浅白', '蜷缩', '浊响', '模糊', '平坦', '硬滑', 0.593, 0.042, '坏瓜'],
            # 17
            ['青绿', '蜷缩', '沉闷', '稍糊', '稍凹', '硬滑', 0.719, 0.103, '坏瓜']
        ]
    
        # 特征值列表
        labels = ['色泽', '根蒂', '敲击', '纹理', '脐部', '触感', '密度', '含糖率']
    
        # 特征对应的所有可能的情况
        labels_full = {}
    
        for i in range(len(labels)):
            labelList = [example[i] for example in dataSet]
            uniqueLabel = set(labelList)
            labels_full[labels[i]] = uniqueLabel
    
        return dataSet, labels, labels_full

    西瓜数据集4.0

    西瓜数据集只包含了密度和含糖率,并没有给出分类标签,在聚类中出现了4.0数据集。

    def createDataSet():
        """
        创建测试的数据集,里面的数值中具有连续值
        :return:
        """
        dataSet = [
            # 1
            [0.697, 0.460],
            # 2
            [0.774, 0.376],
            # 3
            [0.634, 0.264],
            # 4
            [0.608, 0.318],
            # 5
            [0.556, 0.215],
            # 6
            [0.403, 0.237],
            # 7
            [0.481, 0.149],
            # 8
            [0.437, 0.211],
            # 9
            [0.666, 0.091],
            # 10
            [0.243, 0.267],
            # 11
            [0.245, 0.057],
            # 12
            [0.343, 0.099],
            # 13
            [0.639, 0.161],
            # 14
            [0.657, 0.198],
            # 15
            [0.360, 0.370],
            # 16
            [0.593, 0.042],
            # 17
            [0.719, 0.103]
            # 18
            [0.359, 0.188]
            # 19
            [0.339, 0.241]
            # 20
            [0.282, 0.257]
            # 21
            [0.748, 0.232]
            # 22
            [0.714, 0.346]
            # 23
            [0.483, 0.312]
            # 24
            [0.478, 0.437]
            # 25
            [0.525, 0.369]
            # 26
            [0.751, 0.489]
            # 27
            [0.532, 0.472]
            # 28
            [0.473, 0.376]
            # 29
            [0.725, 0.445]
            # 30
            [0.446, 0.459]
        ]
    
        # 特征值列表
    
        labels = ['密度', '含糖率']
    
        # 特征对应的所有可能的情况
        labels_full = {}
    
        for i in range(len(labels)):
            labelList = [example[i] for example in dataSet]
            uniqueLabel = set(labelList)
            labels_full[labels[i]] = uniqueLabel
    
        return dataSet, labels, labels_full

    具有缺失数据的3.0数据集

    在决策树部分介绍如何处理缺失值的时候用到了该数据集。

    def createDataSet():
        """
        创建测试的数据集
        :return:
        """
        dataSet = [
            # 1
            ['-', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '好瓜'],
            # 2
            ['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', '-', '好瓜'],
            # 3
            ['乌黑', '蜷缩', '-', '清晰', '凹陷', '硬滑', '好瓜'],
            # 4
            ['青绿', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '好瓜'],
            # 5
            ['-', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '好瓜'],
            # 6
            ['青绿', '稍蜷', '浊响', '清晰', '-', '软粘', '好瓜'],
            # 7
            ['乌黑', '稍蜷', '浊响', '稍糊', '稍凹', '软粘', '好瓜'],
            # 8
            ['乌黑', '稍蜷', '浊响', '-', '稍凹', '硬滑', '好瓜'],
    
            # ----------------------------------------------------
            # 9
            ['乌黑', '-', '沉闷', '稍糊', '稍凹', '硬滑', '坏瓜'],
            # 10
            ['青绿', '硬挺', '清脆', '-', '平坦', '软粘', '坏瓜'],
            # 11
            ['浅白', '硬挺', '清脆', '模糊', '平坦', '-', '坏瓜'],
            # 12
            ['浅白', '蜷缩', '-', '模糊', '平坦', '软粘', '坏瓜'],
            # 13
            ['-', '稍蜷', '浊响', '稍糊', '凹陷', '硬滑', '坏瓜'],
            # 14
            ['浅白', '稍蜷', '沉闷', '稍糊', '凹陷', '硬滑', '坏瓜'],
            # 15
            ['乌黑', '稍蜷', '浊响', '清晰', '-', '软粘', '坏瓜'],
            # 16
            ['浅白', '蜷缩', '浊响', '模糊', '平坦', '硬滑', '坏瓜'],
            # 17
            ['青绿', '-', '沉闷', '稍糊', '稍凹', '硬滑', '坏瓜']
        ]
    
        # 特征值列表
        labels = ['色泽', '根蒂', '敲击', '纹理', '脐部', '触感']
    
        # 各个样本的权重
        Wx = []
        for i in range(len(dataSet)):
            Wx.append(1)
    
        # 特征对应的所有可能的情况
        labels_full = {}
    
        for i in range(len(labels)):
            labelList = [example[i] for example in dataSet if example[i] != '-']
            uniqueLabel = set(labelList)
            labels_full[labels[i]] = uniqueLabel
    
        return dataSet, labels, labels_full, Wx
    
    展开全文
  • 《西瓜书 周志华》中所提到的西瓜数据
  • 周志华《机器学习》一书中大量例题习题用到了“西瓜数据集3.0”和“西瓜数据集3.0a”,两个数据集的区别是“西瓜数据集3.0”有离散属性而“西瓜数据集3.0a”都是连续属性。生成这两个数据集的代码如下,运行代码即可...

    周志华《机器学习》一书中大量例题习题用到了“西瓜数据集3.0”和“西瓜数据集3.0a”,两个数据集的区别是“西瓜数据集3.0”有离散属性而“西瓜数据集3.0a”都是连续属性。生成这两个数据集的代码如下,运行代码即可生成python数据文件watermelon_3.0.npzwatermelon_3.0a.npz

    write_dataset_watermelon3.py

    # -*- coding: utf-8 -*-
    """
    Created on Mon Aug 27 21:24:11 2018
    
    Write 'Machine Learning, Zhihua Zhou' P84 watermelon_3.0 dataset to
    'watermelon_3.0.npy'
    
    @author: weiyx15
    """
    
    ''' 
    [x]
    色泽:乌黑-0, 青绿-1, 浅白-2
    根蒂:蜷缩-0, 稍蜷-1, 硬挺-2
    敲声:浊响-0, 沉闷-1, 清脆-2
    纹理:清晰-0, 稍糊-1, 模糊-2
    脐部:凹陷-0, 稍凹-1, 平坦-2
    触感:硬滑-0, 软粘-1
    密度:<数值>
    含糖率:<数值>
    [y]
    好瓜:是-0, 否-1
    '''
    
    import numpy as np
    
    xn_discrete = 6
    xn_continuous = 2
    yn = 2
    x_discrete =  [3, 3, 3, 3, 3, 2]
    x = np.array([[1, 0, 0, 0, 0, 0, .697, .46], 
                  [0, 0, 1, 0, 0, 0, .774, .376], 
                  [0, 0, 0, 0, 0, 0, .634, .264], 
                  [1, 0, 1, 0, 0, 0, .608, .318], 
                  [2, 0, 0, 0, 0, 0, .556, .215], 
                  [1, 1, 0, 0, 1, 1, .403, .237], 
                  [0, 1, 0, 1, 1, 1, .481, .149], 
                  [0, 1, 0, 0, 1, 0, .437, .211], 
                  [0, 1, 1, 1, 1, 0, .666, .091], 
                  [1, 2, 2, 0, 2, 1, .243, .267], 
                  [2, 2, 2, 2, 2, 0, .245, .057], 
                  [2, 0, 0, 2, 2, 1, .343, .099], 
                  [1, 1, 0, 1, 0, 0, .639, .161], 
                  [2, 1, 1, 1, 0, 0, .657, .198], 
                  [0, 1, 0, 0, 1, 1, .36, .37], 
                  [2, 0, 0, 2, 2, 0, .593, .042], 
                  [1, 0, 1, 1, 1, 0, .719, .103]])
    y = np.array([1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0])
    np.savez('watermelon_3.0.npz', xn_discrete, xn_continuous, yn, x_discrete, x, y)

    write_dataset_watermelon3a.py

    # -*- coding: utf-8 -*-
    """
    Created on Mon Aug 20 20:19:18 2018
    
    Write 'Machine Learning, Zhihua Zhou' P89 watermelon_3.0a dataset to
    'watermelon_3.0a.npy'
    
    @author: weiyx15
    """
    
    import numpy as np
    
    x = np.array([[.697, .46], [.774, .376], [.634, .264], [.608, .318], 
                  [.556, .215], [.403, .237], [.481, .149], [.437, .211], 
                  [.666, .091], [.243, .267], [.245, .057], [.343, .099], 
                  [.639, .161], [.657, .198], [.36, .37], [.593, .042], 
                  [.719, .103]])
    y = np.array([1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0])
    np.savez('watermelon_3.0a.npz', x, y)

     

    展开全文
  • 西瓜数据】2019年公众号生态趋势调查报告.pdf
  • 2020年公众号生态趋势调查报告-西瓜数据-202007精品报告2020.pdf
  • 2020年公众号广告趋势调查报告-西瓜数据-202007精品报告2020.pdf
  • 编程实现多变量线性回归,给出在西瓜数据集(见表1)上的结果(即 模型参数)。 在判断西瓜成熟度这个问题上,请解释密度跟含糖量哪个指标更重要 要求:提交代码(Python),请包含相关语句注释,以及执行结果截图。 ...

    由西瓜的密度、含糖量推断西瓜的成熟度(0代表生,1代表熟)。

    1. 编程实现多变量线性回归,给出在西瓜数据集(见表1)上的结果(即 模型参数)。
    2. 在判断西瓜成熟度这个问题上,请解释密度跟含糖量哪个指标更重要
      要求:提交代码(Python),请包含相关语句注释,以及执行结果截图。
      在这里插入图片描述
    3. 编程实现多变量回归,给出在西瓜数据集(表1)上的结果(模型参数)。
      假如我们想通过色泽、根蒂和敲击声来判断一下西瓜的成熟度。学习任务变为多变量回归。将不同的指标量化得到上述数据集,过程如下图
      在这里插入图片描述
      因此可以对此数值化后的数据集进行线性回归:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    因此直接根据公式计算的代码如下:

    在这里插入图片描述

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    xlname=r"C:\Users\34780\Desktop\大二下\机器学习\作业\实验一\西瓜数据
    集.xlsx"
    data=pd.read_excel(xlname,sheet_name="Sheet1")
    data=np.array(data)
    data_y=data[:,3]
    data_x=np.hstack((data[:,1:3],np.ones((data.shape[0],1))))
    w=np.matmul(np.matmul(np.linalg.pinv(np.matmul(np.transpose(data_x),dat
    a_x)),np.transpose(data_x),data_y)  #核心公式的代码表示
    x=data[:,1]   #特征一
    y=data[:,2]   #特征二
    z=data[:,3]   #成熟度
    zz=w[0]*x+w[1]*y+w[2] #拟合的线性模型
    fig = plt.figure()
    ax = Axes3D(fig)
    
    ax.scatter(x, y, z,'blue')
    ax.scatter(x,y,zz,'red')
    ax.set_zlabel('Z',fontdict={'size': 15, 'color': 'red'})
    ax.set_ylabel('Y',fontdict={'size': 15, 'color': 'red'})
    ax.set_xlabel('X',fontdict={'size': 15, 'color': 'red'}) 
    plt.show()
    

    在这里插入图片描述

    当然,如果直接调用sklearn库的库函数,代码如下

    from sklearn.linear_model import LinearRegression as lr
    reg=lr().fit(data_x,data_y)
    score=reg.score(data_x,data_y)
    

    得到的结果如下,
    在这里插入图片描述其得分score=0.5709708011721539

    1. 在判断西瓜成熟度这个问题上,请解释密度跟含糖量哪个指标更重要
      由计算结果可知,西瓜密度,含糖量的权重分别为0.656,0.66即含糖量的权重是大于密度的,因此在西瓜成熟度这个问题上,含糖量更重要。

    在这里插入图片描述

    展开全文
  • ID3 决策树(基于西瓜数据集2.0)

    千次阅读 2020-03-30 23:21:16
    ID3 决策树(基于西瓜数据集2.0)

    西瓜数据集2.0

    编号,色泽,根蒂,敲声,纹理,脐部,触感,好瓜
    1,   青绿,蜷缩,浊响,清晰,凹陷,硬滑,是
    2,   乌黑,蜷缩,沉闷,清晰,凹陷,硬滑,是
    3,   乌黑,蜷缩,浊响,清晰,凹陷,硬滑,是
    4,   青绿,蜷缩,沉闷,清晰,凹陷,硬滑,是
    5,   浅白,蜷缩,浊响,清晰,凹陷,硬滑,是
    6,   青绿,稍蜷,浊响,清晰,稍凹,软粘,是
    7,   乌黑,稍蜷,浊响,稍糊,稍凹,软粘,是
    8,   乌黑,稍蜷,浊响,清晰,稍凹,硬滑,是
    9,   乌黑,稍蜷,沉闷,稍糊,稍凹,硬滑,否
    10,  青绿,硬挺,清脆,清晰,平坦,软粘,否
    11,  浅白,硬挺,清脆,模糊,平坦,硬滑,否
    12,  浅白,蜷缩,浊响,模糊,平坦,软粘,否
    13,  青绿,稍蜷,浊响,稍糊,凹陷,硬滑,否
    14,  浅白,稍蜷,沉闷,稍糊,凹陷,硬滑,否
    15,  乌黑,稍蜷,浊响,清晰,稍凹,软粘,否
    16,  浅白,蜷缩,浊响,模糊,平坦,硬滑,否
    17,  青绿,蜷缩,沉闷,稍糊,稍凹,硬滑,否
    

    求信息熵

        import math
    
        def ent(*ps: float) -> float:
            sum = 0.0
            for p in ps:
                if p == 0.0:
                    sum += 0
                else:
                    sum += -1 * p * math.log(p, 2)
            return sum
    

    第一次划分

    # 初始时的信息熵    
    p1 = 8 / 17
    p2 = 9 / 17
    Ent = ent(p1, p2) = 0.9975025463691153
    
    # 色泽青绿的信息熵
    p1 = 3 / 6
    p2 = 3 / 6
    Ent1_1 = ent(p1, p2) = 1.0
    # 色泽乌黑的信息熵
    p1 = 4 / 6
    p2 = 2 / 6
    Ent1_2 = ent(p1, p2) = 0.9182958340544896
    # 色泽浅白的信息熵
    p1 = 1 / 5
    p2 = 4 / 5
    Ent1_3 = ent(p1, p2) = 0.7219280948873623
    # 色泽的信息熵
    Ent1 = 6 / 17 * Ent1_1 + 6 / 17 * Ent1_2 + 5 / 17 * Ent1_3 = 0.88937738110375
    
    # 根蒂蜷缩的信息熵
    p1 = 5 / 8
    p2 = 3 / 8
    Ent2_1 = ent(p1, p2) = 0.9544340029249649
    # 根蒂稍蜷的信息熵
    p1 = 3 / 7
    p2 = 4 / 7
    Ent2_2 = ent(p1, p2) = 0.9852281360342516
    # 根蒂硬挺的信息熵
    p1 = 0.0
    p2 = 2 / 2
    Ent2_3 = -(p2 * math.log(p2, 2)) = 0.0
    # 根蒂的信息熵
    Ent2 = 8 / 17 * Ent2_1 + 7 / 17 * Ent2_2 + 2 / 17 * Ent2_3 = 0.8548275868023224
    
    # 敲声浊响的信息熵
    p1 = 6 / 10
    p2 = 4 / 10
    Ent3_1 = ent(p1, p2) = 0.9709505944546686
    # 敲声沉闷的信息熵
    p1 = 2 / 5
    p2 = 3 / 5
    Ent3_2 = ent(p1, p2) = 0.9709505944546686
    # 敲声清脆的信息熵
    p1 = 0.0
    p2 = 2 / 2
    Ent3_3 = -(p2 * math.log(p2, 2)) = 0.0
    # 敲声的信息熵
    Ent3 = 10 / 17 * Ent3_1 + 5 / 17 * Ent3_2 + 2 / 17 * Ent3_3 = 0.8567211127541194
    
    # 纹理清晰的信息熵
    p1 = 7 / 9
    p2 =  2 / 9
    Ent4_1 = ent(p1, p2) = 0.7642045065086203
    # 纹理稍糊的信息熵
    p1 = 1 / 5
    p2 = 4 / 5
    Ent4_2 = ent(p1, p2) = 0.7219280948873623
    # 纹理模糊的信息熵
    p1 = 0.0
    p2 = 3 / 3
    Ent4_3 = -(p2 * math.log(p2, 2)) = 0.0
    # 纹理的信息熵
    Ent4 = 9 / 17 * Ent4_1 + 5 / 17 * Ent4_2 + 3 / 17 * Ent4_3 = 0.6169106490008467
    
    # 脐部凹陷的信息熵
    p1 = 5 / 7
    p2 = 2 / 7
    Ent5_1 = ent(p1, p2) = 0.863120568566631
    # 脐部稍凹的信息熵
    p1 = 3 / 6
    p2 = 3 / 6
    Ent5_2 = ent(p1, p2) = 1.0
    # 脐部平坦的信息熵
    p1 = 0.0
    p2 = 4 / 4
    Ent5_3 = -(p2 * math.log(p2, 2)) = 0.0
    # 脐部的信息熵
    Ent5 = 7 / 17 * Ent5_1 + 6 / 17 * Ent5_2 + 4 / 17 * Ent5_3 = 0.7083437635274363
    
    # 触感硬滑的信息熵
    p1 = 6 / 12
    p2 = 6 / 12
    Ent6_1 = ent(p1, p2) = 1.0
    # 触感软粘的信息熵
    p1 = 2 / 5
    p2 = 3 / 5
    Ent6_2 = ent(p1, p2) = 0.9709505944546686
    # 触感的信息熵
    Ent6 = 12 / 17 * Ent6_1 + 5 / 17 * Ent6_2 = 0.9914560571925497
    

    纹理的信息增益(0.9975025463691153 - 0.6169106490008467 = 0.3805918973682686)最大,所以 纹理 被选为划分属性
    在这里插入图片描述

    第二次划分

    模糊分支 都是坏瓜,划分完毕,下面 以 稍糊分支 为例

    # 初始时的信息熵    
    p1 = 1 / 5
    p2 = 4 / 5
    Ent = ent(p1, p2) = 0.7219280948873623
    
    # 色泽青绿的信息熵
    p1 = 0.0
    p2 = 2 / 2
    Ent1_1 = 0.0
    # 色泽乌黑的信息熵
    p1 = 1 / 2
    p2 = 1 / 2
    Ent1_2 = ent(p1, p2) = 1.0
    # 色泽浅白的信息熵
    p1 = 0.0
    p2 = 1 / 1
    Ent1_3 = 0.0
    # 色泽的信息熵
    Ent1 = 2 / 5 * Ent1_1 + 2 / 5 * Ent1_2 + 1 / 5 * Ent1_3 = 0.4
    
    # 根蒂蜷缩的信息熵
    p1 = 0.0
    p2 = 1 / 1
    Ent2_1 = 0
    # 根蒂稍蜷的信息熵
    p1 = 1 / 4
    p2 = 3 / 4
    Ent2_2 = ent(p1, p2) = 0.8112781244591328
    # 根蒂硬挺的信息熵
    p1 = 0.0
    p2 = 0.0
    Ent2_3 = 0.0
    # 根蒂的信息熵
    Ent2 = 1 / 5 * Ent2_1 + 4 / 5 * Ent2_2 + 0 * Ent2_3 = 0.64902249956730624
    
    # 敲声浊响的信息熵
    p1 = 1 / 2
    p2 = 1 / 2
    Ent3_1 = ent(p1, p2) = 1.0
    # 敲声沉闷的信息熵
    p1 = 0.0
    p2 = 3 / 3
    Ent3_2 = 0
    # 敲声清脆的信息熵
    p1 = 0.0
    p2 = 0.0
    Ent3_3 = 0.0
    # 敲声的信息熵
    Ent3 = 2 / 5* Ent3_1 + 3 / 5 * Ent3_2 + 0.0 * Ent3_3 = 0.4
    
    # 脐部凹陷的信息熵
    p1 = 0.0
    p2 = 2 / 2
    Ent5_1 = 0.0
    # 脐部稍凹的信息熵
    p1 = 1 / 3
    p2 = 2 / 3
    Ent5_2 = ent(p1, p2) = 0.9182958340544896
    # 脐部平坦的信息熵
    p1 = 0.0
    p2 = 0.0
    Ent5_3 = 0.0
    # 脐部的信息熵
    Ent5 = 2 / 5 * Ent5_1 + 3 / 5 * Ent5_2 + 0 * Ent5_3 = 0.5509775004326938
    
    # 触感硬滑的信息熵
    p1 = 0.0
    p2 = 4 / 4
    Ent6_1 = 0.0
    # 触感软粘的信息熵
    p1 = 1 / 1
    p2 = 0.0
    Ent6_2 = 0.0
    # 触感的信息熵
    Ent6 = 4 / 5* Ent6_1 + 1 / 5* Ent6_2 = 0.0
    

    触感的信息增益(0.7219280948873623 - 0.0 = 0.7219280948873623)最大,所以 触感 被选为划分属性

    最终结果

    剩下的划分,具体操作 和 上述两次划分 是 一样的,不再赘述。
    在这里插入图片描述

    展开全文
  • 2019年公众号生态趋势调查报告-西瓜数据-2019.8-34页.pdf
  • 因为本人在学习这块内容之后,发现网络上大部分现有代码的不简洁以及运行报错,再者想要的表达方法的不同,所以自己动手结合网络上已有的...# Content: 基于西瓜数据集的KNN算法实现 # Blog: https://zhu-rui.blog.csdn
  • 西瓜数据集 3.0α 的"密度"为输入"含糖率"为输出,训练一个 SVR。 本博客为基于sklearn的西瓜数据集的SVR回归实现。由于代码量较少故放于一个程序中展示。 1. 程序实现 #!/usr/bin/env python # -*- coding: utf-...
  • Python实现生成西瓜数据集的Excel文件

    千次阅读 2020-02-24 13:11:27
    为了获得《机器学习》(周志华)中的完整西瓜数据集,这里通过Python使用xlwt模块自动生成数据集的Excel文件。 实现代码如下: import xlwt def createDataSet(): dataSet = [ # 1 ['1', '青绿', '蜷缩', '浊响'...
  • 西瓜数据集 3.0α 上分别用线性核和高斯核训练一个 SVM,并比较其支持向量的差别。 数据集下载地址: https://amazecourses.obs.cn-north-4.myhuaweicloud.com/datasets/watermelon_3a.csv 任选数据集中的一种分布...
  • 西瓜数据集2.0 西瓜数据集3.0 编号,色泽,根蒂,敲声,纹理,脐部,触感,密度,含糖率,好瓜 1,青绿,蜷缩,浊响,清晰,凹陷,硬滑,0.697,0.46,是 2,乌黑,蜷缩,沉闷,清晰,凹陷,硬滑,0.774,0.376,是 3,乌黑,蜷缩,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,360
精华内容 8,544
关键字:

西瓜数据