TASK9 Boosting

2023-10-29

Boosting

PAC学习(概率近似正确学习)

PAC总结理论

同等条件下,模型越复杂泛化误差越大。同一模型在样本满足一定条件的情况下,其数量越大,模型泛化误差越小,因此还可以说模型越复杂越吃样本。
某个训练样本对正确目标的映射,而称为‘概念’,用符号 c c c表示,即存在一个映射,使得 c ( x ) = y c(x)= y c(x)=y,这只是某一个结果,并不是集合。
所有我们希望所有训练目标的映射集合为‘概念类’,用符号 C C C表示。
模型经过训练后得到的所有结果映射集合,称为‘假设空间’,用符号H表示。
首先PAC学习理论对机器学习算法结果有两个概念

  • 可分的:
    训练样本通过学习算法后,得出的假设空间,c属于H,我们称为可分的
  • 不可分的:
    训练样本通过学习算法后,得出的假设空间,c不属于H,我们称为不可分的

当然在学习算法中,我们都希望学习算法尽可能有更多的c属于H中,为什么只是尽可能多,而不是要求精确呢?因为在机器学习算法中,会受到很多因素的制约,所以并不会百分百地对应到。
当选择学习算法时候,我们希望以比较大的把握学得比较好的模型。要判断哪些学习算法能选用,这就需要符合PAC可学习性

PAC可学习性:

首先学习算法得出的‘假设’必须满足以下的两个条件(PAC辨识)才算上“近似”正确对应目的概念 c c c

  • 近似正确:泛化误差E(h)足够小

    E ( h ) E(h) E(h)越小越好,最好泛化误差能能于0,但一般是不可能的。那我们就把 E ( h ) E(h) E(h)限定在一个很小的数 ϵ \epsilon ϵ之内,即只要假设 h h h满足
    E ( h ) ≤ ϵ E(h)≤\epsilon E(h)ϵ我们就认为 h h h是正确的。

  • 可能正确

    不指望选择的假设h百分之百是近似正确的(按上段所述,即E(h)≤ϵ),只要很可能是近似正确的就可以,即我们给定一个值 δ \delta δ,假设 h h h满足 P ( h 近 似 正 确 ) ≥ 1 − δ P(h_{近似正确})≥1−δ P(h)1δ

满足以上两点的学习算法,就是能以较大概率学得目标概念 c c c的近似。

PAC可学习:

当学习算法能从假设空间H中PAC辨识概念类 C C C,则称概念类对假设空间 H H H而言是PAC可学习的。

PAC学习中一个关键因素是假设空间H的复杂度, H H H包含了学习算法所有可能输出的假设。在实际问题中概念类C往往是不等于 H H H的,因为我们对概念类,往往一概不知。当H越大,其包含任意目标概念的可能性越大,但从中找到某个具体目标概念的难度也越大。 ∣ H ∣ |H| H有限时候,我们称H为“有限假设空间”,否则称为“无限假设空间”

可分与不可分

  • 可分情形:

    在可分情形下,如何找到满足误参数的假设呢?
    训练集D中,样例都可以通过目标概念c,映射结果,而c存在假设空间H中,那么我们通过保留D中一致的假设,剔除与D不一致的假设,知道H只剩下一个假设位置,这个假设就是目标概念。前提是训练集D足够大。

  • 不可分情形:
    对比较困难的学习问题,目标概念c通常不存在于H中,也就是说,H中的任意一个假设都会在训练集上出现或多或少的错误,有Hoeffding不等式知:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FtLGPZ4e-1618833719794)(./Hoeffdro不等式.png)]

从而我们知道,对于任意 ϵ \epsilon ϵ,只要样本数量 m m m足够小, ∣ E ( h ) − E ^ ( h ) ∣ > ϵ |E(h)−\hat E(h)|> \epsilon E(h)E^(h)>ϵ 发生的可能性就非常大,此时我们不能用经验误差近似泛化误差,但是反之,当样本数量 m m m足够大时, ∣ E ( h ) − E ^ ( h ) ∣ > ϵ |E(h)−\hat E(h)|> \epsilon E(h)E^(h)>ϵ发生的可能性就非常小,此时我们可以用经验误差近似泛化误差。1

强学习与弱学习

在概率近似正确PAC学习的框架下:

  • 弱学习:识别错误率小于1/2(即准确率仅比随机猜测略高的学习算法)
  • 强学习:识别准确率很高并能在多项式时间内完成的学习算法
    值得注意的是,在PAC学习的框架下,强可学习和弱可学习是等价的,也就是说一个概念是强可学习的充分必要条件是这个概念是弱可学习的。这样一来,问题便是:在学习中,如果已经发现了弱可学习算法,能否将他提升至强可学习算法。因为,弱可学习算法比强可学习算法容易得多。提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称为基本分类器),然后通过一定的形式去组合这些弱分类器构成一个强分类器。大多数的Boosting方法都是通过改变训练数据集的概率分布(训练数据不同样本的权值),针对不同概率分布的数据调用弱分类算法学习一系列的弱分类器。

故而,Boosting解决的两个主要问题就是:

  • 每一轮学习应该如何改变数据的概率分布
  • 如何将各个弱分类器组合起来

Boosting的算法就是这样的思想:先从初始训练集训练出一个基学习器,再基学习器的表现对训练样本进行调整,使得先前出错的样本在后续训练中得到更多关注,调整样本分布后训练下一个基学习器,直到基学习器数目达到阈值,最后将这些基学习器融合。

Adaboost2

Adaboost的优化目标是:最小化指数损失函数:
l e x p ( H ∣ D ) = E x ∼ d [ s − f ( x ) H ( x ) ] l_{exp}(H|D) = E_{x\sim d}[s^{-f(x)H(x)}] lexp(HD)=Exd[sf(x)H(x)]
H ( x ) H(x) H(x)求偏导得
∂ l e x p ( H ∣ D ) ∂ H ( X ) = − e − H ( x ) P ( f ( x ) = 1 ∣ x ) + e H ( x ) P ( f ( x ) = − 1 ∣ x ) \frac{\partial l_{exp}(H|D)}{\partial H(X)}= -e^{-H(x)}P(f(x)=1|x) + e^{H(x)}P(f(x)=-1|x) H(X)lexp(HD)=eH(x)P(f(x)=1x)+eH(x)P(f(x)=1x)
令上式为0,则:
H ( x ) = 1 2 l n P ( f ( x ) = 1 ∣ x ) P ( f ( x ) = − 1 ∣ x ) H(x)=\frac{1}{2}ln\frac{P(f(x)=1|x)}{P(f(x)=-1|x)} H(x)=21lnP(f(x)=1x)P(f(x)=1x)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

Adaboost sklearn实战3

引入数据科学相关工具包:

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
plt.style.use("ggplot")
%matplotlib inline
import seaborn as sns

加载训练数据:

wine = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data",header=None)
wine.columns = ['Class label', 'Alcohol', 'Malic acid', 'Ash', 'Alcalinity of ash','Magnesium', 'Total phenols','Flavanoids', 'Nonflavanoid phenols', 
                'Proanthocyanins','Color intensity', 'Hue','OD280/OD315 of diluted wines','Proline']

数据查看

print("Class labels",np.unique(wine["Class label"]))
wine.head()
Class labels [2 3]
Class label Alcohol Malic acid Ash Alcalinity of ash Magnesium Total phenols Flavanoids Nonflavanoid phenols Proanthocyanins Color intensity Hue OD280/OD315 of diluted wines Proline
59 2 12.37 0.94 1.36 10.6 88 1.98 0.57 0.28 0.42 1.95 1.05 1.82 520
60 2 12.33 1.10 2.28 16.0 101 2.05 1.09 0.63 0.41 3.27 1.25 1.67 680
61 2 12.64 1.36 2.02 16.8 100 2.02 1.41 0.53 0.62 5.75 0.98 1.59 450
62 2 13.67 1.25 1.92 18.0 94 2.10 1.79 0.32 0.73 3.80 1.23 2.46 630
63 2 12.37 1.13 2.16 19.0 87 3.50 3.10 0.19 1.87 4.45 1.22 2.87 420

数据概览

wine.describe()
Class label Alcohol Malic acid Ash Alcalinity of ash Magnesium Total phenols Flavanoids Nonflavanoid phenols Proanthocyanins Color intensity Hue OD280/OD315 of diluted wines Proline
count 178.000000 178.000000 178.000000 178.000000 178.000000 178.000000 178.000000 178.000000 178.000000 178.000000 178.000000 178.000000 178.000000 178.000000
mean 1.938202 13.000618 2.336348 2.366517 19.494944 99.741573 2.295112 2.029270 0.361854 1.590899 5.058090 0.957449 2.611685 746.893258
std 0.775035 0.811827 1.117146 0.274344 3.339564 14.282484 0.625851 0.998859 0.124453 0.572359 2.318286 0.228572 0.709990 314.907474
min 1.000000 11.030000 0.740000 1.360000 10.600000 70.000000 0.980000 0.340000 0.130000 0.410000 1.280000 0.480000 1.270000 278.000000
25% 1.000000 12.362500 1.602500 2.210000 17.200000 88.000000 1.742500 1.205000 0.270000 1.250000 3.220000 0.782500 1.937500 500.500000
50% 2.000000 13.050000 1.865000 2.360000 19.500000 98.000000 2.355000 2.135000 0.340000 1.555000 4.690000 0.965000 2.780000 673.500000
75% 3.000000 13.677500 3.082500 2.557500 21.500000 107.000000 2.800000 2.875000 0.437500 1.950000 6.200000 1.120000 3.170000 985.000000
max 3.000000 14.830000 5.800000 3.230000 30.000000 162.000000 3.880000 5.080000 0.660000 3.580000 13.000000 1.710000 4.000000 1680.000000

通过数据概览,我们可以发现所有的数据都没有缺失值。

但大部分指标存在异常值,有许多的指标在 3 σ 3\sigma 3σ范围之外。

Proline的方差波动很明显,或许这个特征很敏感。

数据预处理

仅仅考虑2,3类葡萄酒,去除1类

wine = wine[wine['Class label'] != 1]
y = wine['Class label'].values
X = wine[['Alcohol','OD280/OD315 of diluted wines']].values

将分类标签变成二进制编码:

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y = le.fit_transform(y)

按8:2分割训练集和测试集

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=1,stratify=y)  # stratify参数代表了按照y的类别等比例抽样

模型训练

使用单一决策树建模
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier(criterion='entropy',random_state=1,max_depth=1)
from sklearn.metrics import accuracy_score
tree = tree.fit(X_train,y_train)
y_train_pred = tree.predict(X_train)
y_test_pred = tree.predict(X_test)
tree_train = accuracy_score(y_train,y_train_pred)
tree_test = accuracy_score(y_test,y_test_pred)
print('Decision tree train/test accuracies %.3f/%.3f' % (tree_train,tree_test))
Decision tree train/test accuracies 0.916/0.875
使用sklearn实现Adaboost(基分类器为决策树)
'''
AdaBoostClassifier相关参数:
base_estimator:基本分类器,默认为DecisionTreeClassifier(max_depth=1)
n_estimators:终止迭代的次数
learning_rate:学习率
algorithm:训练的相关算法,{'SAMME','SAMME.R'},默认='SAMME.R'
random_state:随机种子
'''
from sklearn.ensemble import AdaBoostClassifier
ada = AdaBoostClassifier(base_estimator=tree,n_estimators=500,learning_rate=0.1,random_state=1)
ada = ada.fit(X_train,y_train)
y_train_pred = ada.predict(X_train)
y_test_pred = ada.predict(X_test)
ada_train = accuracy_score(y_train,y_train_pred)
ada_test = accuracy_score(y_test,y_test_pred)
print('Adaboost train/test accuracies %.3f/%.3f' % (ada_train,ada_test))
Adaboost train/test accuracies 1.000/0.917

结果可视化

# 画出单层决策树与Adaboost的决策边界:
x_min = X_train[:, 0].min() - 1
x_max = X_train[:, 0].max() + 1
y_min = X_train[:, 1].min() - 1
y_max = X_train[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),np.arange(y_min, y_max, 0.1))
f, axarr = plt.subplots(nrows=1, ncols=2,sharex='col',sharey='row',figsize=(12, 6))
for idx, clf, tt in zip([0, 1],[tree, ada],['Decision tree', 'Adaboost']):
    clf.fit(X_train, y_train)
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    axarr[idx].contourf(xx, yy, Z, alpha=0.3)
    axarr[idx].scatter(X_train[y_train==0, 0],X_train[y_train==0, 1],c='blue', marker='^')
    axarr[idx].scatter(X_train[y_train==1, 0],X_train[y_train==1, 1],c='red', marker='o')
    axarr[idx].set_title(tt)
axarr[0].set_ylabel('Alcohol', fontsize=12)
plt.tight_layout()
plt.text(0, -0.2,s='OD280/OD315 of diluted wines',ha='center',va='center',fontsize=12,transform=axarr[1].transAxes)
plt.show()

在这里插入图片描述

从上面的决策边界图可以看到:Adaboost模型的决策边界比单层决策树的决策边界要复杂的多。也就是说,Adaboost试图用增加模型复杂度而降低偏差的方式去减少总误差,但是过程中引入了方差,可能出现国拟合,因此在训练集和测试集之间的性能存在较大的差距,这就简单地回答的刚刚问题。值的注意的是:与单个分类器相比,Adaboost等Boosting模型增加了计算的复杂度,在实践中需要仔细思考是否愿意为预测性能的相对改善而增加计算成本,而且Boosting方式无法做到现在流行的并行计算的方式进行训练,因为每一步迭代都要基于上一部的基本分类器。

参数解释4

参数 含义 默认参数
base_estimator 基分类器 默认是深度为1的决策树分类器
n_estimators 基分类器个数 默认50个
learning_rate 学习率 默认是1
algorithm 训练算法 默认='SAMME.R
random_state 随机种子

【注】algorithm如果为“ SAMME”,则使用SAMME离散提升算法。SAMME.R算法通常比SAMME收敛更快,从而以更少的提升迭代次数实现了更低的测试误差。


  1. PAC学习理论 ↩︎

  2. 周志华《机器学习》 ↩︎

  3. Datawhale ↩︎

  4. Sklearn ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TASK9 Boosting 的相关文章

  • python中热图的层次聚类

    我有一个 NxM 矩阵 其值范围为 0 到 20 我可以使用 Matplotlib 和 pcolor 轻松获得热图 现在我想使用 scipy 应用层次聚类和树状图 我想重新排序每个维度 行和列 以显示哪些元素相似 根据聚类结果 如果矩阵是方
  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • 带有指针数组的 cython

    我在 python 中有一个 numpy ndarrays 列表 具有不同的长度 并且需要非常快速地访问 python 中的列表 我认为指针数组就可以解决问题 我试过 float type t list of arrays no of ar
  • Python 小数.InvalidOperation 错误

    当我运行这样的东西时 我总是收到此错误 from decimal import getcontext prec 30 b 2 3 Decimal b Error Traceback most recent call last File Te
  • 我怎样才能在python cgi中找到上传的文件名

    我制作了如下简单的网络服务器 import BaseHTTPServer os cgi import cgitb cgitb enable html
  • 使用信号时出现 django TransactionManagementError

    我有一个与 django 的用户和 UserInfo 一对一的字段 我想订阅用户模型上的 post save 回调函数 以便我也可以保存 UserInfo receiver post save sender User def saveUse
  • 在 Python 3 中动态导入模块的问题

    我遇到的情况是 在我的 Python 3 项目中 在运行时必须包含某些模块 我在用着importlib import module为了这 第二次更新 我确实找到了一种方法来做一些接近我想要的事情 一些额外的代码可能会使我的一些链接稍微偏离一
  • 使用字母而不是数字进行顺序计数[重复]

    这个问题在这里已经有答案了 我需要一种方法 将字符串 递增 到 z 然后将 aa 递增到 az 然后将 ba 递增到 bz 依此类推 就像 Excel 工作表中的列一样 我将向该方法提供前一个字符串 它应该增加到下一个字母 PSEUDO C
  • 在 keras 中使用自定义张量流操作

    我在张量流中有一个脚本 其中包含自定义张量流操作 我想将代码移植到 keras 但我不确定如何在 keras 代码中调用自定义操作 我想在 keras 中使用tensorflow 所以到目前为止我发现的教程描述了与我想要的相反的内容 htt
  • Python 字典 - 在 2 个字符的字符串中查找第二个字符,该字符产生最小值

    我想提交密钥的第一部分并返回该密钥的剩余部分 以最小化值 并从第一部分开始 例如 d ab 100 ac 200 ad 500 如果我要进去 a I would like to return b min d s s for s in d i
  • 理解@property装饰器和继承[重复]

    这个问题在这里已经有答案了 这里是 Python 3 以防万一它很重要 我试图正确理解如何实现继承 property使用 我已经搜索了 StackOverflow 并阅读了大约 20 个类似的问题 但无济于事 因为他们试图解决的问题略有不同
  • 如何使用python读取最后一行的特定位置

    我有一个太大的 txt 文件 并且有几行类似的行 如下所示 字1 字2 字3 字4 553 75 我对位置 4 值 感兴趣 即最后一行 553 75 我的文件文本 word1 word2 word3 word4 553 20 word1 w
  • 提交表格并上传带有请求的文件

    我正在努力提交特定的表格蟒蛇请求 http www python requests org 我想使用它的网站上的其他表单工作正常 我可以提交登录表单等 这只是我遇到问题的文件上传 显然 提交表单效果很好 因为我从网站收到一条消息 说 请返回
  • Floyd-Warshall 算法:获取最短路径

    假设一个图由一个表示n x n维数邻接矩阵 我知道如何获得所有对的最短路径矩阵 但我想知道有没有办法追踪所有最短路径 Blow是python代码实现 v len graph for k in range 0 v for i in range
  • 使用python中的mysql连接器正确从mysql数据库获取blob

    当执行以下代码时 import mysql connector connection mysql connector connect connection params here cursor connection cursor curso
  • Python 垃圾收集有时在 Jupyter Notebook 中不起作用

    我的一些 Jupyter 笔记本经常出现 RAM 不足的情况 而且我似乎无法释放不再需要的内存 这是一个例子 import gc thing Thing result thing do something thing None gc col
  • 为 Python 2.4 改进“with”语句的直接替换

    您能否建议一种方法来编写可在 Python 2 4 中使用的 with 语句的直接替换代码 这将是一个 hack 但它可以让我更好地将我的项目移植到 Python 2 4 EDIT 删除了不相关的元类草图 只需使用 try finally
  • 在 Tensorflow 2.0 中的简单 LSTM 层之上添加 Attention

    我有一个由一个 LSTM 和两个 Dense 层组成的简单网络 如下所示 model tf keras Sequential model add layers LSTM 20 input shape train X shape 1 trai
  • python中匹配3个或更多相同的字符

    我正在尝试使用正则表达式在字符串中查找三个或更多相同的字符 例如 你好 不匹配 噢 会的 我尝试过做类似的事情 re compile 1 3 a zA Z re compile w 1 5 但似乎都不起作用 w 1 2 是您正在寻找的正则表
  • Shap - 颜色条不显示在摘要图中

    显示summary plot时 不显示颜色条 shap summary plot shap values X train 我尝试过改变plot size 当绘图较高时 会出现颜色条 但它非常小 看起来不应该 shap summary plo

随机推荐

  • 5、基于注解的AOP配置

    一 开启注解支持 1 概述 1 Spring AOP如同IoC一样支持基于XML和基于注解两种配置方式 基于注解所需的依赖和基于XML所需的依赖一致 其中spring context包含了Spring IoC Spring AOP等核心依赖
  • 改进的北方苍鹰算法优化VMD参数,最小包络熵、样本熵、信息熵、排列熵(适应度函数可自行选择,一键修改)包含MATLAB源代码...

    今天给大家带来一期由改进的北方苍鹰算法 SCNGO 优化VMD的两个参数 同样以西储大学数据集为例 选用105 mat中的X105 BA time mat数据中1000个数据点 没有数据的看这篇文章 西储大学轴承诊断数据处理 matlab免
  • linux之数据库操作,Linux之MySQL数据库常用操作

    8种机械键盘轴体对比 本人程序员 要买一个写代码的键盘 请问红轴和茶轴怎么选 因为最近在使用云服务器部署项目 所以也难免要在服务器上使用MySQL 所以就想把MySQL常使用记录下来 以便日后查看并熟悉 也希望能够对大家有所帮助 首先你需要
  • Linux内核TCP参数调优全面解读

    Linux内核TCP参数调优全面解读 前言 TCP 性能的提升不仅考察 TCP 的理论知识 还考察了对于操心系统提供的内核参数的理解与应用 TCP 协议是由操作系统实现 所以操作系统提供了不少调节 TCP 的参数 如何正确有效的使用这些参数
  • redis配置超时时间

    redis配置超时时间 cd usr local redis etc vim redis conf 找到timeout 0 改为 timeout 30
  • 在sublime text中用终端来编译运行java

    在sublime text中用终端来编译运行java sublime text是一款非常优秀的轻量编辑器 今天就来给大家演示下如何用sublime来编译运行java 安装Terminus 首先需要在sublime中安装terminus这个终
  • JAVA学习之——计算机网络(背诵版)

    1 简述OSI七层协议 物理层 主要解决两台物理机之间的通信 通过二进制比特流的传输来实现 二进制数据表现为电流电压上的强弱 到达目的地再转化为二进制机器码 网卡 集线器工作在这一层 在局部局域网上传送数据帧 它负责管理计算机通信设备和网络
  • 【转】C语言的学习路线

    http topic csdn net u 20110922 08 391f0557 6bbc 490d 8394 b7dede44fa0e html seed 1927482974 r 75671683 r 75671683 UNIX下C
  • Java中判断两个类是否相等

    Java中判断两个类是否相等 当有参数的类生成对象时 当两个对象给的参数相同时 会将第二个对象指向第一个对象的地址 如实例中展示 会输出true public class test1 public static void main Stri
  • GLSL 程序与使用

    核心模式OpenGL GLSL程序 GLSL程序简介和在QT中向GLSL程序变量传递数据 数据类型 包含基本数据类型 int float double uint bool 两种容器类型 向量 Vector 标识符 含义 vecn n个flo
  • 宏任务与微任务

    首先执行顺序 同步任务 gt 异步任务 异步任务又分为 宏任务与微任务 所以整个顺序为 同步任务 gt 微观任务 gt 宏观任务 微观任务大概有Promise then Object observe MutationObserver pro
  • shinelon笔记本进bios设置u盘启动_系统重装U盘启动进BIOS按键查询

    点击蓝字 关注我们 总的来讲 设置电脑从U盘启动一共有两种方法 第一种是开机时候按快捷键然后选择U盘启动 第二种进Bios然后设置U盘 PART ONE 一 U盘启动 组装机主板 品牌笔记本 品牌台式机 主板品牌 启动按键 笔记本品牌 启动
  • WIN32_FIND_DATA、FILETIME、FindFirstFile对文件的操作

    WIN32 FIND DATA FILETIME对文件的操作 include stdafx h include
  • 解决Agora声网音视频在后台没有声音的问题

    前言 本文会介绍 Android 与 iOS 两个平台的处理方式 一 Android高版本在应用退到后台时 系统为了省电会限制应用的后台活动 因此我们需要开启一个前台服务 在前台服务中发送常驻任务栏通知 以此来保证App 退到后台时不会被限
  • 一篇文章看懂Oracle开窗函数

    聚合类开窗函数 聚合类开窗函数类似分组函数group by中的sum avg count max min 等等 但是开窗函数不会像分组聚合函数一样按照分组返回结果 而是有多少行记录就返回多少个结果 结果输出的形式是单独一列进行输出 举个例子
  • mqtt安卓客户端

    1 MQTT 消息队列遥测传输协议 是一种基于 发布 订阅 publish subscribe 模式的 轻量级 通讯协议 该协议构建于TCP IP协议上 MQTT最大优点在于 可以以极少的代码和有限的带宽 为连接远程设备提供实时可靠的消息服
  • 在职场中比能力更重要是什么?

    一个人能力很重要 但是比能力更重要的是一个人的人品 如果一个人的人品有问题 那么很难给予重任 如果只有能力 没有人品 人就会残缺不全 人品决定态度 态度决定行为 行为决定着最后的结果 没有一个公司会愿意重用一个人品欠缺的人 那么比能力更重要
  • 针对Java文档的搜索引擎

    针对Java文档的搜索引擎 项目介绍 项目模块划分及分析 1 索引模块 Parser 类核心业务 Index 核心业务 多线程制作索引 2 搜索模块 分词 生成描述 停用词 3 Web模块 展示 项目介绍 本项目是一个基于SpringBoo
  • CTFshow-菜狗杯-misc(1-6)

    杂项签到 flag直接放入16进制文件 用winhex工具打开直接搜ctfshow就可以了 ctrl F调出搜索框 注意选择ASCII编码 不是unicode 损坏的压缩包 更改文件类型 使用winhex打开 发现是png的格式特征 将文件
  • TASK9 Boosting

    Boosting PAC学习 概率近似正确学习 PAC总结理论 同等条件下 模型越复杂泛化误差越大 同一模型在样本满足一定条件的情况下 其数量越大 模型泛化误差越小 因此还可以说模型越复杂越吃样本 某个训练样本对正确目标的映射 而称为 概念