信息熵,信息增益

2023-11-03

信息熵,信息增益

概要

信息增益表示得知特征A的信息而使得类Z的信息的不确定性减少的程度。
特征A对数据集D的信息增益 G(D,A),定义为集合的信息熵 H(D) 与特征A给定条件下D的信息条件熵 H(D|A) 之差,即公式为: G ( D , A ) = H ( D ) − H ( D ∣ A ) G(D,A)=H(D)-H(D|A) G(D,A)=H(D)H(DA)

由贷款数据来看我们的公式:

信息熵的计算: H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ log ⁡ 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^{K}\frac{|C_k|}{|D|}\log_{2}\frac{|C_k|}{|D|} H(D)=k=1KDCklog2DCk

条件熵的计算: H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 K ∣ D i k ∣ ∣ D i ∣ log ⁡ 2 ∣ D i k ∣ ∣ D i ∣ H(D|A)=\sum_{i=1}^{n}\frac{|D_i|}{|D|}H(D_i)=-\sum_{i=1}^{n}\frac{|D_i|}{|D|}\sum_{k=1}^{K}\frac{|D_{ik}|}{|D_i|}\log_{2}\frac{|D_{ik}|}{|D_i|} H(DA)=i=1nDDiH(Di)=i=1nDDik=1KDiDiklog2DiDik

注: C k C_k Ck表示属于某个类别的样本数。

实例一

样本D如下(银行贷款数据):

序号 年龄 有工作 有自己的房子 信贷情况 类别
1 青年 一般
2 青年
3 青年
4 青年 一般
5 青年 一般
6 中年 一般
7 中年
8 中年
9 中年 非常好
10 中年 非常好
11 老年 非常好
12 老年
13 老年
14 老年 非常好
15 老年 一般

样本信息熵: H ( D ) = − ( 9 15 log ⁡ 2 9 15 + 6 15 log ⁡ 2 6 15 ) = 0.97095 H(D)=-(\frac{9}{15}\log_{2}\frac{9}{15}+\frac{6}{15}\log_{2}\frac{6}{15})=0.97095 H(D)=(159log2159+156log2156)=0.97095
求样本信息熵时,只看类别这一列。因为其他的列都是特征列,是决定类别的值的因素。

年龄的信息增益: G ( D , 年 龄 ) = H ( D ) − H ( D ∣ 年 龄 ) G(D,年龄)=H(D)-H(D|年龄) G(D,)=H(D)H(D)
将数据代入计算:
G ( D , 年 龄 ) = 0.97095 − ( 5 15 H ( 青 年 ) + 5 15 H ( 中 年 ) + 5 15 H ( 老 年 ) ) G(D,年龄)=0.97095-(\frac{5}{15}H(青年)+\frac{5}{15}H(中年)+\frac{5}{15}H(老年)) G(D,)=0.97095(155H()+155H()+155H())
解析:年龄一共有三类,总数是15,青年有5个,中年有5个,老年有5个

  • 在年龄为青年条件下,类别为“是”的有两个,类别为“否”的有三个
    H ( 青 年 ) = − ( 2 5 log ⁡ 2 2 5 + 3 5 log ⁡ 2 3 5 ) = 0.97095 H(青年)=-(\frac{2}{5}\log_{2}\frac{2}{5}+\frac{3}{5}\log_{2}\frac{3}{5})=0.97095 H()=(52log252+53log253)=0.97095
  • 在年龄为中年条件下,类别为“是”的有三个,类别为“否”的有两个
    H ( 中 年 ) = − ( 3 5 log ⁡ 2 3 5 + 3 5 log ⁡ 2 2 5 ) = 0.97095 H(中年)=-(\frac{3}{5}\log_{2}\frac{3}{5}+\frac{3}{5}\log_{2}\frac{2}{5})=0.97095 H()=(53log253+53log252)=0.97095
  • 在年龄为老年条件下,类别为“是”的有四个,类别为“否”的有一个
    H ( 老 年 ) = − ( 4 5 log ⁡ 2 4 5 + 1 5 log ⁡ 2 1 5 ) = 0.7219281 H(老年)=-(\frac{4}{5}\log_{2}\frac{4}{5}+\frac{1}{5}\log_{2}\frac{1}{5})=0.7219281 H()=(54log254+51log251)=0.7219281

最终结果:G(D,年龄)=0.083

同理:

工作 房子 信贷
G(D,工作)=H(D)-H(D/工作) G ( D , 房 子 ) = H ( D ) − H ( D / 房 子 ) G(D,房子)=H(D)-H(D/房子) G(D,)=H(D)H(D/) G ( D , 信 贷 ) = H ( D ) − H ( D / 信 贷 ) G(D,信贷)=H(D)-H(D/信贷) G(D,)=H(D)H(D/)
G ( D , 工 作 ) = 0.97095 − ( 5 15 H ( 有 工 作 ) + 10 15 H ( 没 工 作 ) ) G(D,工作)=0.97095-(\frac{5}{15}H(有工作)+\frac{10}{15}H(没工作)) G(D,)=0.97095(155H()+1510H()) G ( D , 房 子 ) = 0.97095 − ( 6 15 H ( 有 房 子 ) + 9 15 H ( 没 房 子 ) ) G(D,房子)=0.97095-(\frac{6}{15}H(有房子)+\frac{9}{15}H(没房子)) G(D,)=0.97095(156H()+159H()) G ( D , 信 贷 ) = 0.97095 − ( 5 15 H ( 一 般 ) + 6 15 H ( 好 ) + 4 15 H ( 非 常 好 ) ) G(D,信贷)=0.97095-(\frac{5}{15}H(一般)+\frac{6}{15}H(好)+\frac{4}{15}H(非常好)) G(D,)=0.97095(155H()+156H()+154H())
H ( 有 工 作 ) = − ( 5 5 log ⁡ 2 5 5 + 0 5 log ⁡ 2 0 5 ) = 0 H(有工作)=-(\frac{5}{5}\log_{2}\frac{5}{5}+\frac{0}{5}\log_{2}\frac{0}{5})=0 H()=(55log255+50log250)=0 H ( 有 房 子 ) = − ( 6 6 log ⁡ 2 6 6 + 0 6 log ⁡ 2 0 6 ) = 0 H(有房子)=-(\frac{6}{6}\log_{2}\frac{6}{6}+\frac{0}{6}\log_{2}\frac{0}{6})=0 H()=(66log266+60log260)=0 H ( 一 般 ) = − ( 1 5 log ⁡ 2 1 5 + 4 5 log ⁡ 2 4 5 ) H(一般)=-(\frac{1}{5}\log_{2}\frac{1}{5}+\frac{4}{5}\log_{2}\frac{4}{5}) H()=(51log251+54log254)
H ( 没 工 作 ) = − ( 4 10 log ⁡ 2 4 10 + 6 10 log ⁡ 2 6 10 ) H(没工作)=-(\frac{4}{10}\log_{2}\frac{4}{10}+\frac{6}{10}\log_{2}\frac{6}{10}) H()=(104log2104+106log2106) H ( 没 房 子 ) = − ( 3 9 log ⁡ 2 3 9 + 6 9 log ⁡ 2 6 9 ) H(没房子)=-(\frac{3}{9}\log_{2}\frac{3}{9}+\frac{6}{9}\log_{2}\frac{6}{9}) H()=(93log293+96log296) H ( 好 ) = − ( 4 6 log ⁡ 2 4 6 + 2 6 log ⁡ 2 2 6 ) H(好)=-(\frac{4}{6}\log_{2}\frac{4}{6}+\frac{2}{6}\log_{2}\frac{2}{6}) H()=(64log264+62log262)
H ( 非 常 好 ) = − ( 4 4 log ⁡ 2 4 4 + 0 4 log ⁡ 2 0 4 ) = 0 H(非常好)=-(\frac{4}{4}\log_{2}\frac{4}{4}+\frac{0}{4}\log_{2}\frac{0}{4})=0 H()=(44log244+40log240)=0

信息增益(Information Gain)的计算公式其实就是父节点的信息熵与其下所有子节点总信息熵之差。也就是以下代码的计算思路。

import numpy as np
import pandas as pd

def createDataset():
    # 银行贷款数据
    row_data = {
        '年龄': ['青年','青年','青年','青年','青年','中年','中年','中年','中年','中年','老年','老年','老年','老年','老年'],
        '有工作': ['否', '否',  '是', '是',  '否', '否',  '否',  '是',  '否', '否',  '否',  '否', '是',  '是',  '否',],
        '有房子': ['否', '否',  '否', '是',  '否', '否',  '否',  '是',  '是', '是',  '是',  '是', '否',  '否',  '否',],
        '信贷情况': ['一般','好','好','一般','一般','一般', '好', '好','非常好','非常好','非常好','好','好','非常好','一般'],
        '类型': ['否', '否',  '是', '是',  '否', '否',  '否',  '是',  '是', '是',  '是',  '是', '是',  '是',  '否',]
    }
    dataset = pd.DataFrame(row_data)
    return dataset

"""
函数功能:计算香农熵(信息熵):解决了对信息的量化度量问题
参数说明: dataSet:原始数据集
返回:ent:香农熵 
"""
def calEnt(dataSet):
    n = dataSet.shape[0]                        # 数据集总行数
    iset = dataSet.iloc[:,-1].value_counts()    # 标签的所有类别
    p = iset/n                                  # 每一类标签所占比
    ent = (-p*np.log2(p)).sum()                 # 计算信息熵
    return ent

"""
函数功能:根据信息增益选择出最佳数据集切分的列
参数说明: dataSet:原始数据集
返回:axis:数据集各特征列的信息增益(字典形式,降序排序)
"""
def bestSplit(dataSet):
    baseEnt = calEnt(dataSet)                                 # 原始信息熵
    axis = {}                                                 # 存放对应列的序号,以及它的信息增益
    for i in range(dataSet.shape[1]-1):                       # 对特征的每一列进行循环
        levels= dataSet.iloc[:,i].value_counts().index        # 提取出当前列的所有取值
        ents = 0
        for j in levels:
            childSet = dataSet[dataSet.iloc[:,i]==j]          # 筛选dataframe
            ent = calEnt(childSet)
            ents += (childSet.shape[0]/dataSet.shape[0])*ent  # 计算当前列的信息熵
        # print(f'第{i}列的信息熵为{ents}')
        infoGain = baseEnt - ents                             # 计算当前列的信息增益
        print(f'第{i}列的信息增益为{infoGain}')
        axis["第"+str(i)+"列"] = infoGain
    axis = sorted(axis.items(), key=lambda elem:elem[1], reverse=True)
    return axis

DataSet = createDataset()
h = calEnt(DataSet)
dit = bestSplit(DataSet)

print(f"样本的信息熵为:{h}")
print(f"信息增益字典:{dit}")

'''
第0列的信息增益为0.08300749985576883
第1列的信息增益为0.32365019815155627
第2列的信息增益为0.4199730940219749
第3列的信息增益为0.36298956253708536
样本的信息熵为:0.9709505944546686
信息增益字典:[('第2列', 0.4199730940219749), ('第3列', 0.36298956253708536), ('第1列', 0.32365019815155627), ('第0列', 0.08300749985576883)]
'''

实例二

海洋生物数据

序号 no surfacing flippers fish
1 1 1 yes
2 1 1 yes
3 1 0 no
4 0 1 no
5 0 1 no

这是另一个不说人话的版本,但核心内容都差不多,官方解释都难理解:
假设离散属性a有V个可能的取值 { a 1 , a 2 , . . . , a V } \lbrace a^1,a^2,...,a^V \rbrace {a1,a2,...,aV},若使用a对样本数据集D进行划分,则会产生V个分支节点。其中第v个分支节点包含了D中所有在属性a上取值为 a v a^v av的样本,记为 D v D^v Dv。我们可根据信息熵的计算公式计算出 D v D^v Dv的信息熵,再考虑到不同的分支节点所包含的样本数不同,给分支节点赋予权重 ∣ D v ∣ ∣ D ∣ \frac{|D^v|}{|D|} DDv

所以信息增益的计算公式为: G a n i ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gani(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) Gani(D,a)=Ent(D)v=1VDDvEnt(Dv)

海洋生物数据集中第0列的信息增益: G a n i ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gani(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) Gani(D,a)=Ent(D)v=1VDDvEnt(Dv)

G a i n ( ′ N o S u r f a c i n g ′ ) = E n t ( D ) − [ 3 5 E n t ( D 1 ) + 2 5 E n t ( D 2 ) ] = c a l E n t ( D a t a S e t ) − [ 3 5 ( − 2 3 log ⁡ 2 2 3 − 1 3 log ⁡ 2 1 3 ) + 2 5 ( − 2 2 log ⁡ 2 2 2 ) ] = 0.97 − 0.55 = 0.42 \begin{aligned} Gain('NoSurfacing') &= Ent(D) - [\frac{3}{5}Ent(D_1)+\frac{2}{5}Ent(D_2)] \\ & = calEnt(DataSet) - [ \frac{3}{5} (-\frac{2}{3}\log_{2}\frac{2}{3} - \frac{1}{3}\log_{2}\frac{1}{3} ) + \frac{2}{5} ( -\frac{2}{2}\log_{2}\frac{2}{2}) ] \\ & = 0.97-0.55 \\ & = 0.42 \\ \end{aligned} Gain(NoSurfacing)=Ent(D)[53Ent(D1)+52Ent(D2)]=calEnt(DataSet)[53(32log23231log231)+52(22log222)]=0.970.55=0.42

import numpy as np
import pandas as pd

def createDataset():
    # 海洋生物数据集
    row_data = {
        'no surfacing': [1, 1, 1, 0, 0],
        'flippers': [1, 1, 0, 1, 1],
        'fish': ['yes', 'yes', 'no', 'no', 'no']
    }
    dataset = pd.DataFrame(row_data)
    return dataset

def calEnt(dataSet):
    n = dataSet.shape[0]                        # 数据集总行数
    iset = dataSet.iloc[:,-1].value_counts()    # 标签的所有类别
    p = iset/n                                  # 每一类标签所占比
    ent = (-p*np.log2(p)).sum()                 # 计算信息熵
    return ent

def bestSplit(dataSet):
    baseEnt = calEnt(dataSet)                                 # 原始信息熵
    axis = {}                                                 # 存放对应列的序号,以及它的信息增益
    for i in range(dataSet.shape[1]-1):                       # 对特征的每一列进行循环
        levels= dataSet.iloc[:,i].value_counts().index        # 提取出当前列的所有取值
        ents = 0
        for j in levels:
            childSet = dataSet[dataSet.iloc[:,i]==j]          # 筛选dataframe
            ent = calEnt(childSet)
            ents += (childSet.shape[0]/dataSet.shape[0])*ent  # 计算当前列的信息熵
        # print(f'第{i}列的信息熵为{ents}')
        infoGain = baseEnt - ents                             # 计算当前列的信息增益
        print(f'第{i}列的信息增益为{infoGain}')
        axis["第"+str(i)+"列"] = infoGain
    axis = sorted(axis.items(), key=lambda elem:elem[1], reverse=True)
    return axis

DataSet = createDataset()
h = calEnt(DataSet)
dit = bestSplit(DataSet)

print(f"样本的信息熵为:{h}")
print(f"信息增益字典:{dit}")

'''
第0列的信息增益为0.4199730940219749
第1列的信息增益为0.17095059445466854
样本的信息熵为:0.9709505944546686
信息增益字典:[('第0列', 0.4199730940219749), ('第1列', 0.17095059445466854)]
'''
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

信息熵,信息增益 的相关文章

  • scipy.optimize on pandas dataframe

    我试图搜索它 但结果很差 有人可以向我解释一下如何在 Pandas DataFrame 上执行 optimize minimize 以便最小化 DataFrame 中的类别和结果列之间的错误 考虑这个例子 import pandas as
  • Python 转换矩阵

    我有一个如下所示的列表 2 1 3 1 2 3 1 2 2 2 我想要的是一个转换矩阵 它向我显示如下序列 1 后跟 1 的频率是多少 1 后面跟着 2 的频率是多少 1 后跟 3 的频率是多少 2 后跟 1 的频率是多少 2 后跟 2 的
  • 键入的完整命令行

    我想获得输入时的完整命令行 This join sys argv 在这里不起作用 删除双引号 另外 我不想重新加入已解析和拆分的内容 有任何想法吗 你太迟了 当键入的命令到达 Python 时 您的 shell 已经发挥了它的魔力 例如 引
  • 如何计算数据框中按另一列的列值分组的一列的连续字符串值?

    我有以下数据框 Levels Labels Confidence 0 Hands 0 8 0 Leg 0 7 0 Eye 0 9 1 Ear 0 9 1 Eye 0 8 2 Hands 0 9 2 Eye 0 8 3 Eye 0 8 我想检
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • App Engine NDB:如何访问属性的 verbose_name

    假设我有这个代码 class A ndb Model prop ndb StringProperty verbose name Something m A m prop a string value 当然 现在如果我打印 m prop 它会
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • 为什么 re.findall 在查找字符串中的三元组项时不具体。 Python

    所以我有四行代码 seq ATGGAAGTTGGATGAAAGTGGAGGTAAAGAGAAGACGTTTGA OR 0 re findall r ATG 9 TAA TAG TGA seq 首先让我解释一下我正在尝试做什么 如果这令人困惑
  • ValueError:数据必须为正(boxcox scipy)

    我正在尝试将我的数据集转换为正态分布 0 8 298511e 03 1 3 055319e 01 2 6 938647e 02 3 2 904091e 02 4 7 422441e 02 5 6 074046e 02 6 9 265747e
  • 正在使用 PIL 保存损坏的图像

    我遇到一个问题 操作图像像素导致保存损坏的图像 因此 我使用 PIL 打开图像 然后将其转换为 NumPy 数组 image Image open myimage png np image np asarray image 然后 我转置图像
  • 高级描述熊猫

    有没有像 pandas 那样更高级的功能 通常我会继续这样 r pd DataFrame np random randn 1000 columns A r describe 我会得到一份很好的总结 就像这样 A count 1000 000
  • Python-验证我的文档 xls 中是否存在工作表

    我正在尝试在空闲时间设计一个小程序 加载 xls 文件 然后在要扫描的文档中选择一张纸 步骤1 用户导入 xls文件 导入程序后检查文件是否存在 我能做到的 第 2 步 我要求用户提供要分析的文档表 xls 的名称 这就是它停止的地方 该程
  • 使用 if 语句的网格网格和用户定义函数的真值不明确

    假设我有一个函数f x y 足够光滑 然而 有些值仅在有限的意义上存在 以sin x x的价值x 0只存在于极限 x gt 0 中 在一般情况下 我用一个来处理这个问题if陈述 如果我在情节中使用它meshgrid我收到一条错误消息 Val
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 无法使用 python rasterio、gdal 打开 jp2 (来自哨兵)

    我试图在 python 中将 jp2 栅格产品作为栅格打开 但当我们使用 raterio 和 gdal 包时没有成功 我收到此错误 RasterioIOError b4 jp2 not recognized as a supported f
  • 从 wxPython 事件处理程序中调用函数

    我正在努力寻找一种在 wxPython 事件处理函数中使用函数的方法 假设我有一个按钮 单击该按钮时 它会使用事件处理程序运行一个名为 OnRun 的函数 但是 用户忘记单击 OnRun 按钮之前的 RadionButton 我想弹出一个
  • 如何展平解析树并存储在字符串中以进行进一步的字符串操作 python nltk

    我正在尝试从树结构中获取扁平树 如下所示 我想将整个树放在一个字符串中 就像没有检测到坏树错误一样 S NP SBJ NP DT The JJ high JJ seven day PP IN of NP DT the CD 400 NNS
  • 两种 ODE 求解器之间的差异

    我想知道 两者之间有什么区别ODEINT and solve ivp用于求解微分方程 它们之间有什么优点和缺点 f1 solve ivp f 0 1 y0 y0 is the initial point f2 odeint f y0 0 1
  • 在Python中停止ThreadPool中的进程

    我一直在尝试为控制某些硬件的库编写一个交互式包装器 用于 ipython 有些调用对 IO 的影响很大 因此并行执行任务是有意义的 使用 ThreadPool 几乎 效果很好 from multiprocessing pool import
  • Biopython 可以执行 Seq.find() 来解释歧义代码吗

    我希望能够在 Seq 对象中搜索考虑歧义代码的子序列 Seq 对象 例如 以下内容应该是正确的 from Bio Seq import Seq from Bio Alphabet IUPAC import IUPACAmbiguousDNA

随机推荐

  • gojs 绘制UML连线图

  • A Survey on Deep Transfer Learning 2018 翻译

    A Survey on Deep Transfer Learning 2018 翻译 o 虽然这篇文章是2018年的 不是很新 但是写的通俗易懂 很适合刚接触迁移学习的同学 所以就翻译了 independent and identicall
  • Python基础知识(七):类、对象与魔法方法

    类与对象 1 对象 属性 方法 对象是类的实例 换句话说 类主要定义对象的结构 然后我们以类为模板创建对象 类不但包含方法定义 而且还包含所有实例共享的数据 封装 信息隐蔽技术 我们可以使用关键字 class 定义 Python 类 关键字
  • CSS3 SVG实现可爱的动物哈士奇和狐狸动画

    点击上方公众号 可快速关注 英文 David Khourshid 译文 码农网 小峰 www codeceo com article css3 svg husky and fox html 今天 我想向大家展示如何巧妙地使用HTML CSS
  • 论"大数据"时代下的海量数据存储技术

    高清 长周期呈现海量存储需求 高清已经在安防行业全面铺开应用 除了带给用户能够看得更清的良好视觉感受外 对存储容量的需求亦成几何式增长 例如 前端IPC有130W到500W像素 码流也从有2Mbps到8Mbps 而一个130W像素 8Mbp
  • 开源OCR引擎Tesseract-OCR

    Overview Tesseract的OCR引擎最先由HP实验室于1985年开始研发 至1995年时已经成为OCR业内最准确的三款识别引擎之一 然而 HP不久便决定放弃OCR业务 Tesseract也从此尘封 数年以后 HP意识到 与其将
  • VSCode 必装的 10 个高效开发插件

    本文介绍了目前前端开发最受欢迎的开发工具 VSCode 必装的 10 个开发插件 用于大大提高软件开发的效率 VSCode 的基本使用可以参考我的原创视频教程 VSCode 高效开发必装插件 VSCode Visual Studio Cod
  • jquery val() 获取不到值的问题排查

    表单校验用jquery validation 实现 基本功能很快实现 在测试时发现自定义的一个比较开始结束日期的校验不起作用 var begin param val var reg new RegExp g begin begin repl
  • arcgis 9.3 sde 安装 启动服务问题

    1 arcgis 9 3 注册 服务 命令 sdeservice o create d oracle orcl p sde i esri sde 2 启动 sde 服务 报错 3 以上1命令在机器上执行不认 用以下命令 sdeservice
  • 【DevOps-监控】生产环境是如何落地一套全方位的监控系统

    生产环境监控究竟需什么样的功能 我们试想一下 如果部署一个监控系统到生产环境 需要满足哪些功能呢 既然是监控 肯定需要监控我们的主机资源信息包括cpu 内存 网络 磁盘等信息吧 其次还得监控容器的相关资源信息 然后我们可能还需要历史数据 几
  • uni-app vuex全局计时

    功能需求 在A页面进入时候开始计时中间会去到B页面查看数据 但是并没有销毁当前页面 所以计时一直在 直到在B页面提交数据 才结束计时 在根文件夹创建 store文件夹 同时创建index js文件 import Vue from vue i
  • TensorFlow:实战Google深度学习框架(二)实现简单神经网络

    3 4 TensorFlow实现神经网络 3 4 1 TensorFlow游乐场 3 4 2 前向传播 3 4 3 神经网络参数与TensorFlow变量 变量和张量的关系 变量的三个属性 张量 维度 类型 3 4 4通过TensorFlo
  • flask-sqlalchemy插件使用

    1 Flask SQLAlchemy插件的使用 该插件对SQLAlchemy进行了简单的封装 使得我们可以更加简单的使用 初始化数据库 无需导入create engine from flask import Flask from flask
  • win10怎么设置WiFi与有线优先级

    原文 https blog csdn net u010921682 article details 88964982 经过测试 文章中第二种方式有效 不过我的优先级与原文中的不同 我是wifi优先于有线 如下 二 修改 接口跃点数 这个名词
  • Android的中http协议HttpURLConnection中post请求

    public class MainActivity extends AppCompatActivity private TextView textView Override protected void onCreate Bundle sa
  • Idea里面关于时间date报错Unhandled exception: java.text.ParseException的解决方案

    我一直报这个错找不到 结果是因为我导包的原因 idea自动导包导出来是这个 但是咱们需要的是这个 就不报错了
  • Lerna包管理

    认识lerna 导读 本章节主要讲解Lerna是什么 Lerna有什么用 如何使用Lerna进行npm包管理 大厂的Lerna版本管理策略是怎么做的 Lerna是如何实现本地包依赖管理以及底层原理是什么 读者可以带着这些问题去阅读 使学习事
  • 利用jni将Eclipse与C++、Opencv无缝连接

    利用jni将Eclipse与C Opencv无缝连接 博主 w风的季节 日期 2018 4 11 现在越来越多的大学生实验室或者创新项目需要用到将JAVA与C 之间的混合编程 因此本篇就来讲解一下Eclipse中用java写的APP如何将C
  • Spring Boot favicon.ico自定义设置

    做网页的都知道 网页打开后几乎都会有一个favicn的小图标 但是在spring boot中如何设置呢 下面告诉大家一个自定制的方法 非常简单 1 在配置application properties中加入 spring mvc favico
  • 信息熵,信息增益

    信息熵 信息增益 概要 实例一 实例二 概要 信息增益表示得知特征A的信息而使得类Z的信息的不确定性减少的程度 特征A对数据集D的信息增益 G D A 定义为集合的信息熵 H D 与特征A给定条件下D的信息条件熵 H D A 之差 即公式为