【机器学习详解】SVM解二分类,多分类,及后验概率输出

2023-11-06

转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885

CSDN

支持向量机(Support Vector Machine)曾经在分类、回归问题中非常流行。支持向量机也称为最大间隔分类器,通过分离超平面把原始样本集划分成两部分。

首先考虑最简单的情况:线性可分支持向量机,即存在一个超平面可以把训练样本分开。

1.线性可分支持向量机

1.考虑一个线性二分类的问题;如下左图,在二维平面上有两种样本点x,目标值分别标记为{-1,1},可以作出无数条直线 wTx+b=0 ,直线上方的点标记为{+1}的带入直线公式会得到 wTx+b>0 ,下方的点,标记为{-1}带入直线公式会得到 wTx+b<0 ,因此可以用 wTx+b 的符号决定点的分类,写成决策函数为 f(x,w,b)=sign(wTx+b) 把两类点分开,但是个采用哪个直线最好呢?
2.一般来说,当样本点离直线越远,则分类正确的确信度越大;如下右图所示,A,B,C三个样本点都被预测分类到‘×’类中。但是对于A的分类正确的确信度比C大。因为点C里分类直线 wTx+b=0 很近,当直线的斜率稍一点变化,即会导致C被分到另一类中。
线线
这里写图片描述这里写图片描述

1.1函数间隔与几何间隔

由二维直线 wTx+b=0 扩展到高维被称为超平面 (w,b) 。一个点距离超平面的远近可以表示分类预测的确信程度。在超平面 wTx+b=0 确定的情况下, |wTx+b| 能够相对地表示点x距离超平面的远近,而且如果分类正确,则 y(i) wTx(i)+b 的符号一致,即 y(i)(wTx(i)+b)>0 ,同时表示分类的正确性以及确信度。
函数间隔:超平面 (w,b) 关于样本点 (x(i),y(i)) 的函数间隔为

:γ^(i)=y(i)(wTx(i)+b)

定义超平面关于样本集S的函数间隔为超平面(w,b)与S中所有样本点的函数间隔的最小值
γ^=mini=1,2,...m γ^(i)

定义 γ^ 是为了最大化间隔, γ^ 表示关于超平面与训练集中样本的函数间隔最小值,下面只要最大化 γ^ 即可。
注意到函数间隔实际上并不能表示点到超平面的距离,因为当超平面 (w,b) 参数扩大相同的倍数后,如 (2w,2b) ,超平面的位置并没有改变,但是函数间隔也变大了相同的倍数 2γ^(i) .
几何间隔
这里写图片描述
如上图所示:设样本点A坐标为 x(i) ,点A到超平面的垂直距离记为 γ(i) ,分离超平面 wTx(i)+b=0 的单位法向量为 w||w|| ,因此点B的坐标为 x(i)γ(i)w||w|| ,且点B在直线上,带入直线公式有:
wT(x(i)γ(i)w||w||)+b=0:γ(i)=(wTx(i)+b)||w||

如果点被正确分类, y(i) (wTx(i)+b)||w|| 的符号一致,由此
:γ(i)=y(i)(wTx(i)+b||w||)

Sγ=mini=1,2,...m γ(i)

几何间隔不随着超平面参数的变化而变化,例如超平面参数(w,b)变为(2w,2b),函数间隔 γ^(i) 变为 2γ^(i) ,而几何间隔 γ(i) 保持不变。
函数间隔与几何间隔的关系: γ(i)=γ^(i)||w|| γ=γ^||w|| ,若||w||=1,函数间隔与几何间隔相同。

1.2间隔最大化

如上所述,支持向量机的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。 γ 表示分离超平面与训练集中样本的几何间隔的最小值,为了间隔最大化,只需要最大化 γ ,同时所有样本的几何间隔必须满足 γ(i)γ,i=1,2,...,m ;

maxw,b γ

s.t. y(i)(wTx(i)+b||w||)γ

上述问题,可以转变为一个凸二次规划问题,这是支持向量机的一个重要属性,局部极值即为全局最值。
考虑函数间隔与几何间隔的关系:
这里写图片描述
上述优化问题中,当超平面参数(w,b)同时变为(2w,2b),函数间隔也会变为 2γ^ ,目标函数的解并不会变化。即 γ^ 的取值不影响优化问题的解。因此令 γ^=1 ,目标函数变为最大化 1||w|| ,即最小化 ||w||2 ,为了后面的求解方便,添加因子 12 也不影响目标函数的解;
这里写图片描述
上述问题为一个凸优化问题,通过某些优化算法可以求解。下面继续介绍拉格朗日对偶算法,可以更进一步优化上述问题,同时自然引入核函数,推广到高维数据。

1.3拉格朗日对偶性

有时考虑解决原始问题的对偶问题会更高效。
原始问题
f(w),gi(w),hi(w) 均为连续可微:
这里写图片描述
写出拉格朗日函数,其中 αi0,β0 称为拉格朗日乘子:
这里写图片描述
定义关于 w 的函数θP(w)=maxα,βL(w,α,β);可以证明如果 w 满足上述约束条件gi(w)0,hi(w)=0,则有 θP(w)=f(w)
这里写图片描述
由此原始问题的约束最优化问题变为极小极大问题:
这里写图片描述
设原始问题的最优解记为 p=minwf(w)=minwθp(w) .
对偶问题
把上述极小极大问题 minw maxα,βL(w,α,β) ,改为极大极小变为对偶问题,即:
定义:这里写图片描述
这里写图片描述
设此极大极小问题的最优解记为 d ,可以证明
这里写图片描述
为了使得对偶问题与原始问题的最优解相等 d=p ,必须满足下述几个条件,称为KKT条件
这里写图片描述

1.4最优间隔分类器

回顾原始问题:
这里写图片描述
写成拉格朗日函数,由于只有不等式约束这里写图片描述所以只包含拉格朗日乘子 αi
这里写图片描述
原始问题最优解 p=minw,b maxαL(w,b,α) ;对偶问题的最优解 d=maxα minw,bL(w,b,α)
对偶问题先求关于参数w,b的最小值,再求关于参数 α 的最大值。
首先,分别对w,b求偏导数并令为0,得:
这里写图片描述
这里写图片描述
把上述结果带入拉格朗日函数 L(w,b,α)
这里写图片描述
注意到上述是只关于参数 α 的函数,记为 W(α) ,由对偶函数,下一步即最大化 W(α)
这里写图片描述
下面的目的是解决上述优化问题,通常采用SMO算法,本篇文章暂不做介绍。假如已经得到最优解 α=(α1,α2,...,αm) ,带回到上面对w求偏导得到的公式,可以得到 w 的值。下面要求得b得值,考虑KKT条件有:αi[y(i)(wTx(i)+b)1]=0i=1,2..m,其中必然存在一个 αj0 ,(否则 w=0 ,不是原始解)。当 αj0 y(i)(wTx(i)+b)=1 ,可以解出 b 的代数式,b=y(j)mi=1αiy(i)(x(i),x(j)),也可以对所有采用满足条件的 b 加和求平均;然后即可得到最佳分类超平面:
这里写图片描述
根据KKT条件有αi[y(i)(wTx(i)+b)1]=0i=1,2..m,当 αi>0 时,必然有 y(i)(wTx(i)+b)=1 ,即该样本点的函数间隔为1,如下图所示,落在直线 wTx+b=±1 上,此向量即称为支持向量。对于落在直线 wTx+b=±1 以内的点,函数间隔 y(j)(wTx(j)+b)>1 ,必然有 αj=0 ,当计算函数最优分割超平面参数w,b时,这些点对应的 αj=0 ,所以对参数没有影响。只有支持向量,即落在 wTx+b=±1 上数据影响着最优超平面的计算。
这里写图片描述

2.线性支持向量机

以上讨论的内容是建立在数据是线性可分的情况,即存在一个分离超平面可以把训练数据分为两部分。实际上数据并不会这么理想,如下图所示,即存在某些样本点不能满足函数间隔大于等于1这个条件。
这里写图片描述这里写图片描述
这时可以为每个数据点设置一个松弛因子 ξi0 ,使得函数间隔 γi 加上松弛因子 ξi 大于等于1.即 y(i)(wTx(i)+w0)1ξi ,同时对每个松弛因子 ξi 支付一个代价 ξi ,由此原始问题变为:
这里写图片描述
C称为惩罚参数(C>0),C值越大对误分类的惩罚越大;因为当C为无穷大时,即成为了线性可分问题。
采用与线性可分同样的过程,建立拉格朗日函数:
这里写图片描述

这里写图片描述这里写图片描述

由对偶函数得,首先分别对 w,b,ξi 求偏倒数,并令为0,可以得到上面右式,带回到拉格朗日函数中,由于 μi0 ,且 αi=Cμi ,所以有:
这里写图片描述
由上述KKT条件可以得到:
这里写图片描述这里写图片描述

3.非线性支持向量机

3.1 概念

这里写图片描述
如上图所示,原始样本数据线性不可分,即无法用一条直线或分离超平面将两类分开。但是对原始数据采用非线性变换 ϕ(x) ,非线性变换将原始数据从低维映射到高维,高维上数据就可能变得线性可分。步骤:首先使用非线性变换将原始数据集映射到新空间中,称为特征空间,在特征空间中数据将变的线性可分,然后采用线性支持向量机的方法训练分离超平面参数。但在高维上计算量会急剧增大,会造成维数灾难,自然引入核技巧(kernal trick)。

3.2 核技巧

观察线性支持向量机的对偶问题为:
这里写图片描述
上述目标函数中,只包含原始数据的内积形式 <x(i),x(j)>=(x(i))T(x(j)) <script type="math/tex" id="MathJax-Element-135"> =(x^{(i)})^T(x^{(j)})</script>。由上述分析,只需要找到一个合适的非线性变换 ϕ(x) ,将原始数据 x(i) 映射到高维特征空间 ϕ(x(i)) 中,内积形式变为为 <ϕ(x(i)),ϕ(x(j))> <script type="math/tex" id="MathJax-Element-139"><\phi(x^{(i)}),\phi (x^{(j)})></script>。
定义核函数 K(x,z)=ϕ(x)Tϕ(z) ,表示两个原始数据 x,z 分别变换到特征空间中的内积值。核技巧的方法即不用构造非线性映射 ϕ(x) 而直接给定一个核函数 K(x,z) ,减少了计算量。如下面例子一个核函数等于两个非线性变换的内积:

Eg:x,zRn, K(x,z)=(xTz)2=i,j=1n(xixj)(zizj),ϕ(x)=(x1x1,x1x2...,x1xn,x2x1,...xnxn)T

常用几个核函数:
K(x,z)=(xTz+1)q,q>0

K(x,z)=exp(||xz||22σ2),

K(x,z)=tanh(βxTz+γ)Mercerβ=2,γ=1

4.SVM后验概率输出

SVM分类器中判决函数 y^=sign(f(x))=sign(wTx+b) 。可以采用f(x)与sigmoid函数结合,把 f(x)=wTx+b 解释成 y=1 的对数几率,SVM分类器概率输出(Platt 2000):

p(y^=1|x)=σ(Af(x)+B)

参数A,B通过最大释然的方法求解,为防止过拟合,求解A,B参数的样本数据应独立于训练分类的样本。由于在训练分类器阶段,没有考虑后验概率的问题,因此SVM后验概率结果不可靠。

5.几种损失函数的比较

这里写图片描述
如图:0-1损失是二分类问题的真正损失函数,合页损失与logistic损失是对0-1的损失函数的近似。最小二乘损失强化了分类点在正确分类边界处。

5.1合页损失函数

对于线性支持向量机,目标函数是最小化 12||w||2+Cmi=1ξi ,其中 ξi 为每个样本支付的代价;可以定义 ξi=[1y(i)(wTx(i)+b)]+ ;下标’+’表示取正值函数,如果 z>0,[z]+=z;[z]+=0 ,因此目标函数可以定义为:

minw,b i=1m[1y(i)(wTx(i)+b)]++λ||w||2

第一项关于被称为经验损失,定义 z=y(i)(wTx(i)+b) ;损失函数为 E(z)=[1z]+ ,如上图所示,由于图形像一个合页,被称为合页损失。
λ=12C12||w||2+Ci=1mξi

5.2logistic回归损失

为了方便叙述,改变一下标记方法,记原始样本数据为 (xi,ti)t[1,1] ,模型预测值为 y(xi)=wTxi+b 。结合sigmoid函数,可以把 y(xi) 带入sigmoid函数中,后验概率输出。即 p(t=1|y)=σ(y) ,则 p(t=1|y)=1σ(y)=σ(y) ,综上两种情况 p(t|y)=σ(ty) 。采用最大似然函数:
这里写图片描述
目标函数可以定义为对数似然的负数,同时加上一个二次正则化因子。

i=1mln[1+exp(yiti)]+λ||w||2

第一项即为logistic回归损失函数 ELR(yt)=ln[1+exp(yt)]

5.3最小二乘损失

与线下回归类似,可以采用最小二乘损失作为目标函数:

i=1m(yiti)2+λ||w||2

6.SVM多分类问题

这里写图片描述

1.one-versus-the-rest

对于K个类别的问题,在训练样本上,采用SVM训练出K个分类器。每个分类器将训练样本分成 Ki 类与非 Ki 类,然后采用SVM训练出模型。如上图所示,每个分类器只能回答是否属于 Ki 的答案。此种方法会造成一个样本数据属于多个类别的情况,上左图阴影部分。
也可以采用: y(x)=maxk yk(x) ,即采用最大的函数间隔的那个类别。但不同的分类器有可能尺度不相同,函数距离自然不能作为判断标准。同时,训练样本的不平衡也可能造成分类器有误差。

2.one-versus-one

在K分类的情况下,训练出 K(K1)2 个分类器,即每两个类别训练出一个分类器,然后根据 K(K1)2 个分类器的结果,采用投票方法给出预测结果。
此种方法依然造成部分数据不属于任何类的问题,上右图阴影部分所示。

3.其他方法

1.一次训练K分类的SVM。参数多,复杂度高;(Weston and Watkins 1999)
2.DAGSVM ;(Platt 2000)

参考:
1. PRML
2. MLAPP
3. CS 229-Andrew Ng

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

【机器学习详解】SVM解二分类,多分类,及后验概率输出 的相关文章

  • 澳鹏干货解答!“关于机器学习的十大常见问题”

    探索机器学习的常见问题 了解机器学习和人工智能的基本概念 原理 发展趋势 用途 方法和所需的数据要求从而发掘潜在的商机 什么是机器学习 机器学习即教授机器如何学习的过程 为机器提供指导 帮助它们自己开发逻辑 访问您希望它们访问的数据 机器学
  • 将经过训练的 SVM 从 scikit-learn 导入 OpenCV

    我正在将使用支持向量机的算法从 Python 使用 scikit learn 移植到 C 使用 OpenCV 的机器学习库 我可以使用 Python 访问经过训练的 SVM 并且可以将 SVM 模型参数从 XML 文件导入 OpenCV 由
  • 一对多 SVM 中的 10 倍交叉验证(使用 LibSVM)

    我想在我的系统中进行 10 倍交叉验证一对一 支持向量机 http en wikipedia org wiki Support vector machineMATLAB 中的分类 我试图以某种方式混合这两个相关的答案 libsvm 中的多类
  • lr推荐模型 特征重要性分析

    在分析lr模型特征重要性之前 需要先明白lr模型是怎么回事儿 lr模型公式是sigmoid w1 x1 w2 x2 wn xn 其中w1 w2 wn就是模型参数 x1 x2 xn是输入的特征值 对于lr模型来说 特征可以分为两个粒度 一个是
  • MIT_线性代数笔记:第 23 讲 微分方程和 exp(At)

    目录 微分方程 Differential equations 矩阵指数函数 Matrix exponential e A t e At
  • Python机器学习实战:用Python构建10个有趣的应用

    机器学习是一门强大的工具 可以用于解决各种各样的问题 通过学习机器学习 您可以开发出能够自动化任务 做出预测甚至创造艺术的应用程序 如果您是一名 Python 开发人员 那么您将很高兴知道 有许多可以用 Python 构建的有趣机器学习应用
  • Scikit - SVM 的 3D 特征数组

    我正在尝试在 scikit 中训练 SVM 我正在遵循该示例并尝试将其调整为我的 3d 特征向量 我尝试了页面中的示例http scikit learn org stable modules svm html http scikit lea
  • OpenCV中基于HOG特征的SVM分类器用于“对象检测”

    我有一个项目 我想检测图像中的物体 我的目标是使用 HOG 功能 通过使用 OpenCV SVM 实现 我可以找到用于检测人的代码 并且我阅读了一些关于调整参数以检测对象而不是人的论文 不幸的是 由于一些原因我无法做到这一点 首先 我可能错
  • 【需求响应】改进连续时间控制方法用于分散式需求响应的恒温负荷研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码及文章
  • 【需求响应】改进连续时间控制方法用于分散式需求响应的恒温负荷研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码及文章
  • 通过 grid.py 查询

    面临 libsvm 的 grid py 的一些问题 尝试实现它 但出现语法错误 Typed grid py svmtrain c Users HP Documents MATLAB libsvm 3 11 windows svmtrain
  • MATLAB 中 10 重 SVM 分类的示例

    我需要一个描述性示例来展示如何对两类数据集进行 10 倍 SVM 分类 MATLAB 文档中只有一个示例 但不是 10 倍 有人能帮我吗 这是一个完整的示例 使用生物信息学工具箱中的以下函数 SVMTRAIN http www mathwo
  • AI在广告中的应用——预测性定位和调整

    营销人员的工作就是在恰当的时间将适合的产品呈现在消费者面前 从而增加他们购买的可能性 随着时间的推移 营销人员能够深入挖掘越来越精准的客户细分市场 他们不仅具备了实现上述目标的能力 而且这种能力还在呈指数级提升 在AI技术帮助下 现在的营销
  • sklearn多类SVM函数

    我有多个类标签 想要计算模型的准确性 我有点困惑我需要使用哪个 sklearn 函数 据我了解 以下代码仅用于二元分类 dividing X y into train and test data X train X test y train
  • 使用支持向量回归进行时间序列预测

    我一直在尝试使用Python语言中的支持向量回归来实现时间序列预测工具 我使用 scikit learn 中的 SVR 模块进行非线性支持向量回归 但我对未来事件的预测有严重的问题 回归线非常适合原始函数 根据已知数据 但一旦我想预测未来的
  • 如何使用带有面部特征的 openCV 训练支持向量机(svm)分类器?

    我想使用svm分类器进行面部表情检测 我知道 opencv 有一个 svm api 但我不知道训练分类器的输入应该是什么 到目前为止我读了很多论文 他们都说在面部特征检测之后训练分类器 到目前为止我所做的 人脸检测 每帧计算16个面部点 下
  • 插入符 rfe + sum 与 ROC 中的特征选择

    我一直在尝试使用插入符包应用递归功能选择 我需要的是 ref 使用 AUC 作为性能衡量标准 经过一个月的谷歌搜索后 我无法让该过程正常运行 这是我使用过的代码 library caret library doMC registerDoMC
  • 如何加载之前存储的svm分类器?

    我正在 Visual Studio 中使用 openCV SVM OpenCV 2 4 4 0 我训练它 mySVM train trainingDataMat labelsMat Mat Mat params 已保存 mySVM save
  • 如何使用SVM求精确率、召回率、准确率?

    重复计算 Precision Recall 和 F Score https stackoverflow com questions 16927964 how to calculate precision recall and f score
  • 将 OneClassSVM 与 GridSearchCV 结合使用

    我正在尝试在 OneClassSVM 上执行 GridSearchCV 函数 但我似乎无法找到 OCSVM 的正确评分方法 根据我收集的信息 像 OneClassSVM score 这样的东西不存在 因此 GridSearchCV 中没有所

随机推荐

  • pip install tensorflow报错ERROR: Could not find a version that satisfies the requirement tensorflow (f

    这里写目录标题 报错内容 解决方法 其他方法 原因分析 报错内容 pip3 install tensorflow 输入上述命令安装tensorflow后出现下面的报错 ERROR Could not find a version that
  • chrome浏览器被hao123劫持如何解决?

    那天上班 打开电脑点开chrome浏览器 首页出现的是我熟悉的谷歌搜索页面 可是很快右边又打开了一个页面 123 hao234 com 这个流氓网站就这个这么不请自来了 而且之后我用尽了网上各种办法都弄不走 各种无效方法 1 绑定自己的主页
  • 背包九讲--混合背包、分组背包、资源分配背包、背包方案总数

    混合背包 混合背包 问题描述 一个旅行者有一个最多能用V公斤的背包 现在有n件物品 它们的重量分别是W1 W2 Wn 它们的价值分别为C1 C2 Cn 有的物品只可以取一次 01背包 有的物品可以取无限次 完全背包 有的物品可以取的次数有一
  • hive基础(二) hive操作大全

    目录 注 只是为了以后忘了 好翻 做个总结 一 hive 操作 1 hive e 2 hive f 3 查看在hive中输入的所有历史命令 4 hive运行日志修改 二 hive参数配置 三 hive数据类型 基本数据类型 集合数据类型 1
  • PHP与MySQL程序设计 学习笔记 第八章 错误和异常处理

    error reporting函数确定报告的敏感级别 共有16个不同级别 这些级别的任何组合都是有效的 error reporting函数使用 字符表示逻辑操作符NOT error reporting E ALL E STRICT 希望报告
  • python两列表对应元素求和

    一种方法是循环 但是有简便方法 用numpy import numpy as np list1 1 2 3 4 list2 1 2 3 4 a array np array list1 b array np array list2 c ar
  • matlab安装好 启动总是闪退_win10系统启动matlab出现闪退的处理技巧

    电脑操作系统在使用的时候经常会被一些问题所困扰 例如很多用户都遇见过win10系统启动matlab出现闪退的问题 大部分用户如果第一次碰到win10系统启动matlab出现闪退的现象 因此大伙都会不知所措 怎么才可以完善的治理win10系统
  • 设计模式之状态模式(思想)

    设置模式之状态模式 上图学过网络的同学应该都比较清楚吧 这是一张TCP状态转换图 只要理解上图 那么对状态模式也就很容易理解啦 状态模式的意图 允许一个对象在其内部状态改变时改变它的行为 简单的说就是 一个人他的外表没有改变 但是他内在的心
  • batch-命令的学习

    batch命令的扩充变量语法 所谓扩充变量语法 是指对已有参数 环境变量或其他变量的引用 的再处理 扩展 对比与java语言 可以理解为 对传入参数的格式化 扩充变量只能针对于传入变量的自身属性 自身的引用 值 变量代表的文件位置信息 进行
  • 深入理解Flutter的GestureDetector组件

    引言 上一篇文章 深入理解Flutter的Listener组件 介绍了触控事件的监听原理 让我们对Flutter中触摸事件的传递过程有了进一步的认识 今天我们学习一下手势识别组件GestureDetector的原理 GestureDetec
  • 苏州大学邮箱注册JetBrain, 永远使用专业版

    今天发现 使用教育邮箱 可以免费使用JetBrain的专业版 作为苏大的学生 尤其是计算机学院的不要错过哦 注意 只是针对苏州大学的学生 毕业之后可以开通校友邮箱 相当于以后可以一直使用专业版 每年激活一次 1 开通邮箱 a 登陆网址 ht
  • PAT打卡--L1-016查验身份证(c++)

    原题链接 这道题其实也是一道简单题 我主要还是用其来学习C 通过这道题 了解到了c 中的字符和int之间的转换 首先贴上代码吧 include
  • spring data jpa 自定义接口实现

    没错 spring data jpa很优秀 但有一些东西 我们就想自己来 我除了想用你的 还想用我自己的 首先 我要spring data jpa的接口 为什么 因为很方便啊 public interface TaskDao extends
  • ORA-04088(ORA-04084): cannot change NEW values for this trigger type

    gt gt gt bug背景 gt gt gt bug来源一个定时任务的删除操作 这里需要删除原来数据 然后插入定时采集到的数据 因采集到的数据中没有id这个字段 所以插入这个过程需要借助oracle的触发器 来自动生成一个id 最终我写的
  • js(react)中使用百度地图

    0 需求 依次点击区 镇 小区 展示当前位置的数据列表 移动地图 movestart事件 隐藏详情 1 准备工作 1 1 引入百度地图并配置ak jspopularGL 百度地图API SDK 1 2 根据IP定位获取当前定位 import
  • 静态方法不能调用非静态方法的原因

    静态方法是属于类的 即静态方法是随着类的加载而加载的 在加载类时 程序就会为静态方法分配内存 而非静态方法是属于对象的 对象是在类加载之后创建的 也就是说静态方法先于对象存在 当你创建一个对象时 程序为其在堆中分配内存 一般是通过this指
  • 蓝桥杯 ADV-202 最长公共子序列

    算法提高 最长公共子序列 时间限制 1 0s 内存限制 256 0MB 问题描述 给定两个字符串 寻找这两个字串之间的最长公共子序列 输入格式 输入两行 分别包含一个字符串 仅含有小写字母 输出格式 最长公共子序列的长度 样例输入 abcd
  • 这恐怕是学习Frida最详细的笔记了

    转载自Sakura的博客 https eternalsakura13 com 2020 07 04 frida title Frida Android hook categories Android逆向 致谢 本篇文章学到的内容来自且完全来
  • video标签播放视频时错误403

    在HTML页面上添加
  • 【机器学习详解】SVM解二分类,多分类,及后验概率输出

    转载请注明出处 http blog csdn net luoshixian099 article details 51073885 CSDN 勿在浮沙筑高台 color Blue CSDN 21247 22312 28014 27801 3