svm预测结果为同一个值_SVM算法总结

一、1.感知机模型:

感知器模型是SVM、神经网络、深度学习等算法的基础;感知器模型就是试图找到一条直线,能够把所有的“+1”类和“-1”类分隔开,如果是高维空间中,感知器模型寻找的就是一个超平面,能够把所有的二元类别分割开。感知器模型的前提是:数据是线性可分的。

c5546eb06e5117945d0369c8aafd1593.png

目标是找到一个超平面,即:

感知器模型为:

感知器模型正确分类(预测和实际类别一致):yθx>0(y为实际值,θx为预测值),错误分类(预测和实际类别不一致):yθx<0;所以我们可以定义我们的损失函数为:期望使分类错误的所有样本(k条样本)到超平面的距离之和最小。

即:

(去绝对值符号,分类错误<0,分子加”—“)

简化损失函数:因为此时分子和分母中都包含了θ值,当分子扩大N倍的时候,分母也会随之扩大,也就是说分子和分母之间存在倍数关系,所以可以固定分子或者分母为1,然后求另一个即分子或者分母的倒数的最小化作为损失函数,简化后的损失函数为(分母为1):

(即
,分子分母相抵消,模长对结果无影响)。

直接使用梯度下降法就可以对损失函数求解,不过由于这里的k是分类错误的样本点集合,不是固定的,所以我们不能使用批量梯度下降法(BGD)求解,只能使用随机梯度下降(SGD)或者小批量梯度下降(MBGD);一般在感知器模型中使用SGD来求解。


二、1.SVM(支持向量机)

支持向量机(Support Vecor Machine, SVM)本身是一个二元分类算法,是对感知器算法模型的一种扩展,现在的SVM算法支持线性分类和非线性分类的分类应用,并且也能够直接将SVM应用于回归应用中,同时通过OvR或者OvO的方式我们也可以将SVM应用在多元分类领域中。在不考虑集成学习算法,不考虑特定的数据集的时候,在分类算法中SVM可以说是特别优秀的。

2872461e1a222382d0fc31fbc769bee0.png

在感知器模型中,算法是在数据中找出一个划分超平面,让尽可能多的数据分布在这个平面的两侧,从而达到分类的效果,但是在实际数据中这个符合我们要求的超平面是可能存在多个的。

4335e68870b58f652cf1ecfd7b8d767b.png

SVM思想:在感知器模型中,我们可以找到多个可以分类的超平面将数据分开,并且优化时希望所有的点(预测正确的点)都离超平面尽可能的远,但是实际上离超平面足够远的点基本上都是被正确分类的,所以这个是没有意义的;反而比较关心那些离超平面很近的点,这些点比较容易分错。所以说我们只要让离超平面比较近的点尽可能的远离这个超平面,那么我们的模型分类效果应该就会比较不错。SVM其实就是这个思想。

25703273350c179710e42e4894e9bad8.png

名词概念:

  • 线性可分(Linearly Separable):在数据集中,如果可以找出一个超平面,将两组数据分开,那么这个数据集叫做线性可分数据。
  • 线性不可分(Linear Inseparable):在数据集中,没法找出一个超平面,能够将两组数据分开,那么这个数据集就叫做线性不可分数据。
  • 分割超平面(Separating Hyperplane):将数据集分割开来的直线/平面叫做分割超平面。
  • 支持向量(Support Vector):离分割超平面最近的那些点叫做支持向量。
  • 间隔(Margin):支持向量数据点到分割超平面的距离称为间隔。

支持向量到超平面的距离为:在SVM中支持向量到超平面的函数距离一般设置为1

752b2f5502430f42929a6225e24ed707.png

SVM模型是让所有的分类点在各自类别的支持向量远离超平面的一侧,同时要求支持向量尽可能的远离这个超平面,用数学公式表示如下:

W^{T}=(w_1,w_2,...,w_n)

(s.t: 指”受限制于...“)

(对偶问题)

则SVM原始目标函数/损失函数为:

将此时的目标函数和约束条件使用KKT条件转换为拉格朗日函数,从而转换为无约束的优化函数。

1c8317ce29195d3922d3c4db62e21255.png

引入拉格朗日乘子后,优化目标变成:

17365af60b9853bfadbf664d8503ca30.png
g(x)小于等于0 当L取最大值 g(x)等于0 消去g(x) KKT条件分析

根据拉格朗日对偶化特性,将该优化目标转换为等价的对偶问题来求解,从而优化目标变成:

b15e7a97b4282f66240305c051be5c05.png

所以对于该优化函数而言,可以先求优化函数对于w和b的极小值,然后再求解对于拉格朗日乘子β的极大值。

首先求让函数L极小化的时候w和b的取值,这个极值可以直接通过对函数L分别求w和b的偏导数得到:

712a6a1ce780506c0dd5e83c6363f828.png

将求解出来的w和b带入优化函数L中,定义优化之后的函数如下:

3c6bbb1bfa831598f06f66a3adf2646b.png

通过对w、b极小化后,我们最终得到的优化函数只和β有关,所以此时我们可以直接极大化我们的优化函数,得到β的值,从而可以最终得到w和b的值。β值的求解使用SMO算法

c6f466f11becc991407823168a9ab6ee.png

假设存在最优解β*; 根据w、b和β的关系,可以分别计算出对应的w值和b值(一般使用所有支持向量的计算均值来作为实际的b值);

705fbf80383335cf887a669a700ae5ef.png

这里的(xs,ys)即支持向量,根据KKT条件中的对偶互补条件(松弛条件约束),支持向量必须满足一下公式:

8599a05754e95bf57c0d305db086e820.png

2.线性可分SVM算法流程:

  • 输入线性可分的m个样本数据{(x1,y1),(x2,y2),...,(xm,ym)},其中x为n维的特征向量,y为二元输出,取值为+1或者-1;SVM模型输出为参数w、b以及分类决策函数。
  • 构造约束优化问题;

05b23c863d38d55c2ba63265e0df8e80.png

使用SMO算法求出上式优化中对应的最优解β*;

  • 找出所有的支持向量集合S;

5440655b0b5a8ce8c9cbb33fb054e1df.png
  • 更新参数w*、b*的值;

0a58482f969340ca7303590b8658797e.png
  • 构建最终的分类器;

be6248927203e92a1524f566a8b6d230.png

3.线性可分SVM总结

1. 要求数据必须是线性可分的;

2. 纯线性可分的SVM模型对于异常数据的预测可能会不太准;

3. 对于线性可分的数据,线性SVM分类器的效果非常不错。

三、1.SVM的软间隔模型

线性可分SVM中要求数据必须是线性可分的,才可以找到分类的超平面,但是有的时候线性数据集中存在少量的异常点,由于这些异常点导致了数据集不能够线性划分;直白来讲就是:正常数据本身是线性可分的,但是由于存在异常点数据,导致数据集不能够线性可分;

f002dd0d306cb789b36f443ebcae049c.png

如果线性数据中存在异常点导致没法直接使用SVM线性分割模型的时候,我们可以通过引入软间隔的概念来解决这个问题;

硬间隔:可以认为线性划分SVM中的距离度量就是硬间隔,在线性划分SVM中,要求函数距离一定是大于1的,最大化硬间隔条件为:

b86ee9a030055a25c0a3cdc7f12537d6.png

软间隔:SVM对于训练集中的每个样本都引入一个松弛因子(ξ),使得函数距离加上松弛因子后的值是大于等于1;这表示相对于硬间隔,对样本到超平面距离的要求放松了。(引入松弛因子(ξ))

0de3eeeebcbb533c5dd4d68f3c78cea7.png

松弛因子(ξ)越大,表示样本点离超平面越近,如果松弛因子大于1,那么表示允许该样本点分错,所以说加入松弛因子是有成本的,过大的松弛因子可能会导致模型分类错误,所以最终的目标函数就转换成为:

89edc4430187ddd54f745db043512e47.png
注:函数中的C&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;0是惩罚参数,是一个超参数,类似L1/L2 norm的参数;C越大表示对误分类的惩罚越大,也就是越不允许存在分错的样本;C越小表示对误分类的惩罚越小, 也就是表示允许更多的分错样本存在;C值的给定需要调参。

同线性可分SVM,根据KKT条件构造软间隔最大化的约束问题对应的拉格朗日函数如下:

5399826ea6e05148eedeaa72f480397a.png

从而将我们的优化目标函数转换为:

cd8f0b899b192f2f0ef8ff7402edfc60.png

优化目标同样满足KKT条件,所以使用拉格朗日对偶将优化问题转换为等价的对偶问题:

9faabd4e9652e4c2c8d4eb3384e142bc.png

先求优化函数对于w、b、ξ的极小值,这个可以通过分别对优化函数L求w、b、ξ的偏导数得,从而可以得到w、b、ξ关于β和μ之间的关系。

158b849d2718762703ee620aca96dc53.png

将w、b、ξ的值带入L函数中,就可以消去优化函数中的w、b、ξ,定义优化之后的函数如下:

f622e1c7fe7010bd8339c0082c08ebae.png

最终优化后的目标函数/损失函数和线性可分SVM模型基本一样,除了约束条件不同而已, 也就是说也可以使用SMO算法来求解。

1e3c0129ebbca99c3bef7706ad9bb875.png
  • 在硬间隔最大化的时候,支持向量比较简单,就是离超平面的函数距离为1的样本点就是支持向量。
  • 在软间隔中,根据KKT条件中的对偶互补条件: β(1-ξ-y(wx+b))=0和μ(-ξ)=0,以及C-β-μ=0;从而有:
  • 当0<βi≤C的时候,并且ξi=0的样本点均是支持向量(即所有的0<βi<C)。即满足|wx+b|=1的所有样本均是支持向量。(取等号时,所有样本都分对,不考虑 第二个KKT条件)
  • 当0<βi<C对应的样本就是支持向量。
  • 注:软间隔和硬间隔中的支持向量的规则是一样的;
  • 则x1是支持变量

1e80389bb1d883d562bf1cab95dd0ee0.png

2.SVM的软间隔模型算法流程:

输入线性可分的m个样本数据{(x1,y1),(x2,y2),...,(xm,ym)},其中x为n维的特征向量,y为二元输出,取值为+1或者-1;SVM模型输出为参数w、b以及分类决策函数。

step 1:选择一个惩罚系数C>0,构造约束优化问题;

3f437ff6a12781c39bb8284f3ddfcc79.png
  • Step2:使用SMO算法求出上式优化中对应的最优解β*;
  • step3:找出所有的支持向量集合S;

fde8b02c9e5435b00b565bcaed57015c.png
  • step4:更新参数w*、b*的值;

0e5c1aba230d9d1f27265bc23c440295.png
  • step5:构建最终的分类器

b232ee09d56a583740075e54a919ad1f.png

3.SVM的软间隔模型总结

  • 1. 可以解决线性数据中携带异常点的分类模型构建的问题;
  • 2. 通过引入惩罚项系数(松弛因子),可以增加模型的泛化能力,即鲁棒性;
  • 3. 如果给定的惩罚项系数C越小,表示在模型构建的时候,就允许存在越多的分类错误的样本, 也就表示此时模型的准确率会比较低;如果惩罚项系数越大,表示在模型构建的时候,就越不允许存在分类错误的样本,也就表示此时模型的准确率会比较高。

四、1.非线性可分SVM

不管是线性可分SVM还是加入惩罚系数后的软间隔线性可分SVM其实都要求数据本身是线性可分的,对于完全不可以线性可分的数据,这两种算法模型就没法解决这个问题了

c75b58d86a019d6158009c752faec5c2.png

结合多项式回归在处理非线性可分数据时候的作用,在SVM的线性不可分的数据上,如果将数据映射到高维空间中,那么数据就会变成线性可分的,从而就可以使用线性可分SVM模型或者软间隔线性可分SVM模型。也就是说,对于线性不可分SVM模型来讲,重点在于低维特征数据到高维特征数据之间的映射。

定义一个从低维特征空间到高维特征空间的映射函数Ф,非线性可分SVM的优化目标函数:

a97805fe406ebf5cdb8cbfb1366a30e3.png

可以看到的是,只需要将原来的低维空间中的两个向量的点积转换为高维空间中两个向量的点积即可。

问题:这样一来问题就解决了吗?似乎是的:拿到非线性数据,就找一个映射,然后一股脑把原来的数据映射到新空间中,再做线性 SVM 即可。不过事实上没有这么简单!其实刚才的方法稍想一下就会发现有问题:在最初的例子里做了一个二阶多项式的转换,对一个二维空间做映射,选择的新空间是原始空间的所有一阶和二阶的组合,得到了5个维度;如果原始空间是三维,那么我们会得到9维的新空间;如果原始空间是n维,那么我们会得到一个n(n+3)/2维的新空间;这个数目是呈爆炸性增长的,这给计算带来了非常大的困难,而且如果遇到无穷维的情况,就根本无从计算。

2.核函数

假设函数Ф是一个从低维特征空间到高维特征空间的一个映射,那么如果存在函数K(x,z), 对于任意的低维特征向量x和z,都有:

acd2be0300b71737b9d52a14b4f72efa.png

称函数K(x,z)为核函数(kernal function):在低维空间上的计算值等价于向量做维度扩展后的点乘的结果。 核函数在解决线性不可分问题的时候,采取的方式是:使用低维特征空间上的计算来避免在高维特征空间中向量内积的恐怖计算量;也就是说此时SVM模型可以应用在高维特征空间中数据可线性分割的优点,同时又避免了引入这个高维特征空间恐怖的内积计算量。

即:用低维空间中少的内积的计算量来让模型具有高维空间中的线性可分的优点。

:,设两个向量

,而即是到前面说的五维空间的映射,因此映射过后的内积为:

d0c28ee68fc71ae87340ba33a65e89a0.png

而同时我们可以发现有一下公式

482f22e4872bbe8735828bc74ac1cce3.png

可以发现两者之间非常相似,所以我们只要乘上一个相关的系数,就可以让这两个式子的值相等,这样不就将五维空间的一个内积转换为两维空间的内积的运算。

现有有两个两维的向量,进行二阶多项式扩展,然后进行内积计算,这个时候映射高维后计算的计算量为:11次乘法+4次加法;采用近似计算的计算量为:3次乘法+2次加法;采用加系数后的近似计算的计算量为:4次乘法+2次加法;

b48d73084c0ae28b452bb3714e1ba367.png

253c5dac5e4061ac3201fda98095180c.png

核函数总结

1. 核函数可以自定义;核函数必须是正定核函数,即Gram矩阵是半正定矩阵;

2. 核函数的价值在于它的效果相当于将特征进行从低维到高维的转换,但核函数它是在低维空间上的计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算;

3. 通过核函数,可以将非线性可分的数据转换为线性可分数据;

39f47b207c28df4e6b0c435154959172.png

五、SVR

做回归用,了解即可

六.坐标下降(上升)法原理(搬运自https://blog.csdn.net/u010626937/article/details/75044343)

假设要求解下面的优化问题:

3249dbf974775f32d457ebcee7c94a2c.png

在这里,我们需要求解m个变量αi,一般来说是通过梯度下降(这里是求最大值,所以应该叫上升)等算法来求解,每一次迭代对所有m个变量αi也就是α向量进行一次性优化。(这里指的是一个向量的所有分量)。通过每次迭代中的误差调整α向量中每个元素的值。而坐标上升法(坐标上升与坐标下降可以看做是一对,坐标上升是用来求解max最优化问题,坐标下降用于求min最优化问题)的思想是每次迭代只调整一个变量αi的值,其他变量的值在这次迭代中固定不变。(这里指的是一个向量中的一个分量)。

3a20e39f538c4b754ac09edac8b08cdc.png

最里面语句的意思是固定除αi之外的所有αj(i不等于j),这时W可看作只是关于αi的函数,那么直接对αi求导优化即可。这里我们进行最大化求导的顺序i是从1到m,可以通过更改优化顺序来使W能够更快地增加并收敛。如果W在内循环中能够很快地达到最优,那么坐标上升法会是一个很高效的求极值方法。

用个二维的例子来说明下坐标下降法:我们需要寻找f(x,y)=x2+xy+y2的最小值处的(x*, y*),也就是下图的F*点的地方.

170d326babe36dbf096885955596c0de.png

假设我们初始的点是A(图是函数投影到xoy平面的等高线图,颜色越深值越小),我们需要达到F*的地方。那最快的方法就是图中黄色线的路径,一次性就到达了,其实这个是牛顿优化法,但如果是高维的话,这个方法就不太高效了(因为需要求解矩阵的逆,这个不在这里讨论)。我们也可以按照红色所指示的路径来走。从A开始,先固定x,沿着y轴往让f(x, y)值减小的方向走到B点,然后固定y,沿着x轴往让f(x, y)值减小的方向走到C点,不断循环,直到到达F*。反正每次只要我们都往让f(x, y)值小的地方走就行了,这样脚踏实地,一步步走,每一步都使f(x, y)慢慢变小,总有一天,皇天不负有心人的。到达F*也是时间问题。到这里你可能会说,这红色线比黄色线贫富差距也太严重了吧。因为这里是二维的简单的情况嘛。如果是高维的情况,而且目标函数很复杂的话,再加上样本集很多,那么在梯度下降中,目标函数对所有αi求梯度或者在牛顿法中对矩阵求逆,都是很耗时的。这时候,如果W只对单个αi优化很快的时候,坐标下降法可能会更加高效。

数学例题讲解

下面以如下的优化问题为例:

4b6ac54a1990a00209afecc2478d0fd4.png

在迭代的过程中,每次固定x2更新x1,在确定了x1的条件下,固定x1,更新x2。即每次迭代求解:

375cf7e3b50fd5cbb2e9a1fd34f33e8b.png

也即求解

f242056e2a4f3c831027aaa541b52d99.png

,假设我们首先固定x2,来更新x1:

40a1af6fde94f7cb38016f532314e602.png

令其为0,得到:

b0720cf532abe985a275e361ce6f025b.png

再固定x1,得到:

50af6300379e07637e0ead842cec9ae3.png

令其为0,得到:

f74f2a97aaeef381f22744325233fbdb.png

不断按照上述的过程,直到算法收敛。

七、SMO(可略过)

序列最小优化算法(Sequential minimal optimization, SMO)是一种用于解决SVM训练过程中所产生的优化问题的算法。 于1998年由John Platt发明。SMO的思想类似坐标上升算法,我们需要优化一系列的αα的值,我们每次选择尽量少的

来优化,不断迭代直到函数收敛到最优值。

梯度提升算法采用增量完成迭代,SMO利用自身完成迭代,如

目标函数:

3840c775a7fb02f0a3724caac15c0729.png

假定存在一个β*=(β1,β2,...,βm)是我们最终的最优解,那么根据KKT条件我们可以计算出w和b的最优解,如下:

a0ed651967d1e4523b01c916e07f08d7.png

进而我们可以得到最终的分离超平面为:

e1585713876b88a6ab300fcd9b8c54df.png

拉格朗日乘子法和KKT的对偶互补条件为:

a9ba7aa34704b7100556e635fd2c1c54.png

β、μ和C之间的关系为:

c2dd65b3e79ecef0d5a78804cabeb4c0.png

根据这个对偶互补条件,我们有如下关系式:

79e3f53240aade715dd61e9f0198b857.png

也就是说我们找出的最优的分割超平面必须满足下列的目标条件(g(x)):

82574086d1ffece2aa56573b8c8aa742.png

拉格朗日对偶化要求的两个限制的初始条件为:

19715aec96159652d07710c11f7980f3.png

从而可以得到解决问题的思路如下:

  • 首先,初始化后一个β值,让它满足对偶问题的两个初始限制条件;
  • 然后不断优化这个β值,使得由它确定的分割超平面满足g(x)目标条件;而且在优化过程中,始终保证β值满足初始限制条件。
  • 备注:这个求解过程中,和传统的思路不太一样,不是对目标函数求最小值,而是让g(x)目标条件尽可能的满足。

在这样一个过程中,到底如何优化这个β值呢???整理可以发现β值的优化必须遵循以下两个基本原则:

  • 每次优化的时候,必须同时优化β的两个分量;因为如果只优化一个分量的话,新的β值就没法满足初始限制条件中的等式约束条件了。
  • 每次优化的两个分量应该是违反g(x)目标条件比较多的。也就是说,本来应当是大于1的,yg(x)结果越是小于1就表示违反g(x)目标条件就越多。

或者换一种思路来理解,因为目标函数中存在m个变量,直接优化比较难,利用启发式的方法/EM算法的思想,每次优化的时候,只优化两个变量,将其它的变量看成常数项,这样SMO算法就将一个复杂的优化算法转换为一个比较简单的两变量优化问题了。

7c857ef854df406dd1167b531554cf24.png

认为β1、β2是变量,其它β值是常量,从而将目标函数转换如下(C是常数项):

493af515f0c7215fd4465ef9dae99471.png

由于

,并且y2=1,也就是我们使用β2来表示β1的值:

将上式带入目标优化函数,就可以消去β1,从而只留下仅仅包含β2的式子。

1d61c5da01731bb74dcca09ef2483a03.png

4ba17d0c0e4e921304dbb23a0200df12.png
V1,V2

a1d4c4cb79048673d8a2bccd1df5462b.png

a635e0470e2483ad1866494de3d9c6c3.png
消去beta1

c6acaa8dc98d1c881020751451f9b75f.png

9e258b6c59cedb6d81c58b75f891ed9d.png

考虑β1和β2的取值限定范围,假定新求出来的β值是满足我们的边界限制的,即如下所示:

d76f7708d8b6e1010568064a59e10051.png

当y1=y2的时候,β1+β2=k; 由于β的限制条件,我们可以得到:

5786ec1dfa6105852d5c030365aeed76.png

8e8e712a62bd22aaf16b28b77f95eb9b.png

c43f822f6bba4521c18c93bd4a79089c.png

b2b64d20e463f3665d6b364d2cd76013.png

可以发现SMO算法中,是选择两个合适的β变量做迭代,其它变量作为常量来进行优化的一个过程,那么这两个变量到底怎么选择呢???

每次优化的时候,必须同时优化β的两个分量;因为如果只优化一个分量的话,新的β值就没法满足初始限制条件中的等式约束条件了。

每次优化的两个分量应该是违反g(x)目标条件比较多的。也就是说,本来应当是大于等于1的,越是小于1违反g(x)目标条件就越多。

SMO算法在选择第一个β变量的时候,需要选择在训练集上违反KKT条件最严重的样本点。一般情况下,先选择0<β<C的样本点(即支持向量),只有当所有的支持向量都满足KKT条件的时候,才会选择其它样本点。因为此时违反KKT条件越严重,在经过一次优化后,会让变量β尽可能的发生变化,从而可以以更少的迭代次数让模型达到g(x)目标条件。

3972103ec038ddc7c806a3619da9b3ba.png

在选择第一个变量β1后,在选择第二个变量β2的时候,希望能够按照优化后的β1和β2有尽可能多的改变来选择,也就是说让|E1-E2|足够的大,当E1为正的时候,选择最小的Ei作为E2;当E1为负的时候,选择最大的Ei作为E2。

备注:如果选择的第二个变量不能够让目标函数有足够的下降,那么可以通过遍历所有样本点来作为β2,直到目标函数有足够的下降,如果都没有足够的下降的话,那么直接跳出循环,重新选择β1;

在每次完成两个β变量的优化更新之后,需要重新计算阈值b和差值Ei。当0<β1new<C时,有:

96a138bea709cb3936e64c8a74122091.png

化简可得:

af02a61774a09ff0282e8818c641f270.png

c8fc50eba04e301f6f9c99c623d5d6a3.png

同样的当β2的取值为: 0<β2<C的时候,我们也可以得到

a30f30ac042fbbd56f3f191887830832.png

最终计算出来的b为:

44a70ba96d116b068abc6eed1d52eb37.png

当更新计算阈值b后,就可以得到差值Ei为:

fa11ce9b0097f5bd2266158d28fe8d64.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS 动画绘制线条颜色渐变的折线图

效果图 .................... 概述 现状 折线图的应用比较广泛&#xff0c;为了增强用户体验&#xff0c;很多应用中都嵌入了折线图。折线图可以更加直观的表示数据的变化。网络上有很多绘制折线图的demo&#xff0c;有的也使用了动画&#xff0c;但是线条颜色渐变的折线图的…

android使碎片切换界面,玩转Android中的碎片Fragment

引言&#xff1a;在Android开发中&#xff0c;我们都知道一些界面的展示经常会用到的就是Activity,但是Activity存在着很大的局限性,比如说手机上的界面显示在平板上面就会发生各种变形的问题,Activity也无法实现局部的数据刷新,所以Android3.0之后出来了Fragment,Fragment通常…

html GPS坐标实现,JavaScript 实现GPS坐标点距离计算(两个经/纬度间的距离计算)...

在LBS(基于位置服务)的一些应用中&#xff0c;有时我们会需要计算两个用户或两个坐标点之间的距离。要解决这类问题&#xff0c;就要了解空间几何的概念并结合数学中在三角函数公式计算两点之间的值。本文介绍基于经度/纬度的&#xff0c;两个坐标点之间的距离计算&#xff0c;…

机器学习基于skcilearn tensorflow电子书_Tensorflow机器学习模型的跨平台上线

本篇文章转载自博客园&#xff0c;作者: 刘建平Pinard在用PMML实现机器学习模型的跨平台上线中&#xff0c;我们讨论了使用PMML文件来实现跨平台模型上线的方法&#xff0c;这个方法当然也适用于tensorflow生成的模型&#xff0c;但是由于tensorflow模型往往较大&#xff0c;使…

html5 observer api,基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作

MutationObserver介绍MutationObserver给开发者们提供了一种能在某个范围内的DOM树发生变化时作出适当反应的能力.该API设计用来替换掉在DOM3事件规范中引入的Mutation事件.Mutation Observer(变动观察器)是监视DOM变动的接口。当DOM对象树发生任何变动时&#xff0c;Mutation …

Maven(五)使用Nexus搭建Maven私服

文章装载于&#xff1a;http://blog.csdn.net/jun55xiu/article/details/39497089 Nexus介绍 Nexus是Maven仓库管理器&#xff0c;如果你使用Maven&#xff0c;你可以从Maven中央仓库下载所需要的构件&#xff08;artifact&#xff09;&#xff0c;但这通常不是一个好的做法&am…

计算机学测打多少字,速度测试,一分钟能打多少字?

六、速度测试——检验学习效果经过一段时间的练习&#xff0c;输入速度提高了不少吧&#xff0c;赶快来测试一下现在一分钟可以输入多少英文或汉字。金山打字通2010的“速度测试”功能不仅有基本的“屏幕对照”速度测试&#xff0c;还有“书本对照”测试及要求较高的“同声录入…

HDFS入门(1)

2015.07.12笔记 1.HDFS Distributed File System&#xff08;操作系统实现人机交互&#xff0c;最重要的功能是文件管理&#xff0c;使用文件管理系统&#xff0c;windows、Linux文件管理系统有共性&#xff1a;用户可创建文件/夹&#xff0c;删除&#xff0c;修改权限&#xf…

竞赛图 计算机网络 应用题,我校学子获2020年“中国高校计算机大赛-网络技术挑战赛”全国总决赛一等奖(图)...

近日&#xff0c;2020年“中国高校计算机大赛-网络技术挑战赛”全国总决赛在温州浙南科技城落下帷幕。我校计算机与信息安全学院陈俊彦、雷晓春老师指导的“智载车队”团队(成员&#xff1a;林楷浩、陈澳格、黄湖)在创业先锋C系列中获得全国一等奖&#xff0c;在创新创意A系列中…

建立远程桌面连接计算机无密码,win7远程桌面空密码的步骤_win7系统如何设置让远程桌面登录无需密码-win7之家...

在日常工作中&#xff0c;可能经常会使用到远程连接桌面功能&#xff0c;我们要远程桌面的话&#xff0c;通常是要输入密码才可以的&#xff0c;但是有些用户觉得麻烦&#xff0c;那么win7系统如何设置让远程桌面登录无需密码呢&#xff1f;带着大家的这个问题&#xff0c;本文…

tkinter如何lable重复显示到同一行中_如何创建包含 CAD 导入和选择的仿真 App

在使用 COMSOL 软件二次开发的过程中&#xff0c;你可能会遇到这样的问题&#xff1a;如何使用 App 开发器创建可以处理 CAD 导入并能让用户交互式选择边界条件的仿真 App&#xff1f;我需要了解编程吗&#xff1f;今天我们将为您介绍在 COMSOL 软件中创建包含 CAD 导入和选择的…

计算机科学导论课后单词,计算机科学导论课后总结

计算机科学导论课后总结1老师上课给我们演示了一个迷宫的程序&#xff0c;然后我上网查找了一下&#xff0c;大致学习了一下这个程序的思想。迷宫这个题目和数据结构—图有关迷宫的随机生成和路径搜索主要和图的遍历有关&#xff0c;一般来说图的遍历主要有两种方式&#xff1a…

表单内如何直接贴图而不用上传图片_表单如何添加图片?

表单其实就是我们平常经常看到的收集信息的框框&#xff0c;如姓名、电话等&#xff0c;当然易表单就远不止这些哦&#xff0c;还可制作调查问卷&#xff0c;报名登记、投票评选和考试测评。平时大家都擅长于制作表单的文字内容&#xff0c;实际上表单里边添加一些图片会让表单…

Android应用的安全的攻防之战

一、前言 在前两篇破解的文章中&#xff0c;我们介绍了如何使用动态调试来破解apk&#xff0c;一个是通过调试smali源码&#xff0c;一个是通过调试so代码来进行代码的跟踪破解&#xff0c;那么今天我们就这两篇文章的破解方法&#xff0c;来看看Android中开发应用的过程中如何…

标准正态分布表_表达矩阵的归一化和标准化,去除极端值,异常值

我们阅读量破万的综述&#xff1a;RNA-seq这十年(3万字长文综述)给粉丝朋友们带来了很多理解上的挑战&#xff0c;所以我们开辟专栏慢慢介绍其中的一些概念性的问题&#xff0c;上一期&#xff1a;RNA-seq的counts值&#xff0c;RPM, RPKM, FPKM, TPM 的异同在数据挖掘过程&…

计算机网络关于封装成帧题目,上海第二工业大学-计算机网络通信期中试卷答案...

上海第二工业大学 (试卷编号&#xff1a; )2014-2015学年第2学期 计算机网络与通信 期中考试试卷姓名&#xff1a; 学号&#xff1a; 班级&#xff1a; 成绩&#xff1a;一、 填空题 (每空1分&#xff0c;共18分)1. 当前广泛提及的三网融合中的三网分别是 电信网络 、 电视网络…

微星主板超频_内存超频能力依旧拔群!微星MEG Z490 ACE主板评测

一、前言&#xff1a;内存超频首选的新板子来了一直以来&#xff0c;微星主板都以强悍的内存超频能力而著称&#xff0c;而高频内存对于许多游戏带来的提升都是肉眼可见。随着全新Intel 10代酷睿处理器的上市&#xff0c;微星的MEG系列的Z490主板会给大家带来哪些惊喜呢&#x…

g++ 内存不够_手机内存老是不足?这三招,让你马上腾出12个G

不知道朋友们遇到手机卡慢、空间不足的第一反应是什么&#xff1f;A&#xff1a;换个手机。B&#xff1a;内存满了&#xff0c;找清理软件狂删啊&#xff01;使用智能手机的人大家肯定和小编一样恋旧&#xff0c;觉得换手机很麻烦所以不断尝试各种清理软件&#xff0c;清理手机…

stringbuilder寻找字符串位置可能存在多个 java_Java 语言基础amp;String

Java 语言基础String 字符串的不可变性 定义一个字符串使用变量来赋值变量 String s2 s; s2 保存了相同的引用值&#xff0c; 因为他们代表同一个对象 字符串连接 s s.concat("ef"); s 中保存的是一个重新创建出来的 string 对象的引用 总结一旦一个 str…

cogs 547:[HAOI2011] 防线修建

★★★☆ 输入文件&#xff1a;defense.in 输出文件&#xff1a;defense.out 简单对比                      时间限制&#xff1a;1 s 内存限制&#xff1a;128 MB 题目描述&#xff1a; 近来A国和B国的矛盾激化&#xff0c;为了预防不测&#…