目录
Kmeans
DBSCAN-基于密度的空间聚类算法
谱聚类
GMM-高斯混合模型
MeanShift-均值迁移
层次聚类
代码
Kmeans
聚类原则:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。逐次计算各簇中心的值为新的中心值,迭代更新,直至簇中心位置不再改变或者达到最大迭代次数。
Kmeans的目标函数
定义为:各簇成员到其簇首的距离的平方和最小,如下所示
式中,C为簇首(聚类中心)集合,共有K个簇首。计算目标函数梯度,令梯度为0,计算簇首C ,
式中l(x )表示簇成员个数。通过迭代优化目标函数来计算最佳参数C。 由上式得,在每次迭代中需更新聚类中心为每个簇的簇心即簇成员的均值。
算法流程:
适当选择k个类的初始中心;
在第n次迭代中,对任意一个样本,求其到k个中心的距离,将该样本归到距离最短的中心所在的类/簇;
利用均值等方法更新该类的中心值;
对于所有的k个聚类中心,如果利用(2)(3)的迭代法更新后,聚类中心的位置保持不变,则迭代结束;否则,则继续迭代。
优点 :
速度快,简单
缺点 :
适合聚类球状类簇,不能发现一些混合度较高,非球状类簇
需指定簇个数
算法结果不稳定,最终结果跟初始点选择相关,容易陷入局部最优
对噪声或离群点比较敏感:无法区分出哪些是噪声或者离群点,只能给每个数据点都判断出一个类别来,这样会导致样本质心偏移,导致误判或者聚类紧密程度降低。
kmeans算法结果易受初始点影响 由于kmeans算法结果易受初始点影响,得到的结果是局部最优,为次,我们可以运行n次kmeans算法,每次运行的初始点均为随机生成。然后在n次运行结果中,选取目标函数(代价函数)最小的聚类结果。
聚类数量k如何确定? 通常在数据集有多少个聚类是不清楚的。对于低维的数据,对其可视化,我们可以通过肉眼观察到有多少个聚类,但这样并不准确,而且大部分数据也无法可视化显示。方法1:我们可以通过构建一个代价函数与聚类数量k的关系图,如下图所示,横坐标是聚类数量,每个聚类数量对应的代价函数J均是n次运行的最优结果。观察下图,代价函数随聚类数量增大而减小,但并不是说聚类数量越多越好,比如:对于m个样本,m个聚类的代价函数自然是0,但这样根本不合理。观察下图,代价函数在没有到拐点之前下降很快,拐点之后下降变缓,我们就可以考虑选择这个拐点对应的数量作为聚类数量,这是一种较为合理的方法,但受限于能否得到一个清晰的拐点,如右下图所示,
方法2:结果导向。我们使用kmeans算法的目的是什么?来确定k值能更好的服务于后续的目的。根据业务需求,多少个类别能够满足需求,效果更好来确定聚类数量。
DBSCAN-基于密度的空间聚类算法
聚类原则:聚类距离簇边界最近的点
算法流程:
核心点:核心点的半径范围内的样本个数≥最少点数
边界点:边界点的半径范围内的样本个数小于最少点数大于0
噪声点:噪声点的半径范围的样本个数为0
1. 根据半径、最少点数区分核心点、边界点、噪声点
2.先对核心点归类:
while:
随机选取一核心点作为当前簇
寻找距离当前簇最近的核心点:与簇边缘最近的核心点,,
if 若该核心点距离当前簇的边界核心点的距离小于半径:
则将该核心点归类到当前簇
if 若剩余的未归类的核心点距离当前簇边界距离均大于半径:
说明:距离第numC个簇最近的核心点不在该簇邻域内,说明第numC个簇已全部分类完毕,可以
生成新簇来归类核心点,则在剩余的未归类的核心点随机选取一核心点归类到新的簇中
if 核心点已全部归类:
停止迭代
3. 再根据半径和已归类的核心点来归类边界点
优点 :
能够识别任意形状的样本. 该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。
缺点 :
需指定最少点个数,半径(或自动计算半径)
谱聚类
是从图论中演化出来的算法,后来在聚类中得到了广泛的应用。它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高。通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。
算法流程:
生成邻接矩阵(权重矩阵/相似度矩阵):W:m*m,用高斯函数度量样本之间的距离,距离越远,权重越小
生成度量矩阵D:m*m,D=np.diag(np.sum(W,axis=1))、拉普拉斯矩阵L:L=D-W
标准化拉普拉斯矩阵:Ncut切图:L_norm=D^(-0.5)LD^(-0.5),注意:这里是矩阵叉乘
生成标准化拉普拉斯矩阵对应的特征值和特征向量,对特征值排序(升序),选取前k个最小的特征值对应的特征向量,组成m*k矩阵data
对降维后的矩阵data使用kmeans、GMM或其他聚类方法来聚类
拉普拉斯映射
简单说,谱聚类其实就是使用了一种映射方法,将原有数据映射到新的数据空间,使得原数据中空间位置接近的样本在映射后更加接近,这种映射称为拉普拉斯映射。注意:步骤4中是选取最小的k个特征值对应特征向量,那么问题来了,为什么要选取最小特征值呢?特征值有什么物理意义呢?
对于一个方阵(L为对称矩阵也是方阵且是半正定矩阵),可以称之为变换矩阵,当它叉乘某一个向量时,其物理意义为对该向量作旋转和缩放的变换 ,即将原有向量所在的空间映射到一个新的空间。那么,缩放尺度如何度量?可以用变换矩阵的特征值来度量,如下所示A 为变换矩阵,向量α 为A 的特征向量(对于特征向量,对其变换时,只做缩放变换,其向量方向不变,更多详细内容见看图就懂:线性代数之特征值分解与奇异值分解),λ为特征值,I 为单位向量,向量α 左乘A 等于对特征向量缩放λ倍。
特征值在物理意义上可以表示为缩放倍数,特征值越大,对应的特征向量放大倍数越大,而特征向量越大,对应的样本点映射后在空间位置上也更分散,而谱聚类或者拉普拉斯特征映射的目标就是将原本比较接近的点在映射后更加接近,使得属于不同簇的样本的可分离性 变强,所以拉普拉斯特征映射自然要选择小特征值对应的空间,这样也就实现了原数据中空间位置接近的样本在映射后更加接近。如下图是原始特征空间与拉普拉斯特映射后的样本空间(2d、3d显示)的聚类结果
PCA
经过拉普拉斯映射后样本的可分离性比较好,易于聚类。于此相对的是,PCA降维选用的降序特征值即选取最大的k个特征值 对应的特征向量,因为PCA的目的是对原数据作旋转变换,将原数据映射到特征基(关于特征基概念见看图就懂:线性代数之特征值分解与奇异值分解),投影到特征基方向上的样本相对比较分散,如下图所示,二维原数据旋转到二维特征基上和降到1维效果图
总之,特征值越大对应的向量空间方差越大,即向量方向上的数据越分散。降维数据肯定会丢失一部分信息,PCA适用于处理高维数据,可以在尽可能保留更多信息的同时对高维数据降维处理,如何保留更多数据信息呢?某种意义上,数据分布越分散(方差)或者说越混乱(熵),能得到的信息越多,PCA通过将数据映射到特征基上(特征基不止一个),然后从中选取k个方差最大的特征基(k个最大特征值对应的特征向量)组成新的特征空间,从而实现降维+保留大部分信息效果。
拉普拉斯映射与PCA区别
设有原数据X,为m行n列数据、m个样本n个特征,k为维度个数:
拉普拉斯映射是根据样本的相似矩阵 作变换得到新的样本空间 ,这个新样本空间 可以直接用来聚类。
PCA是根据特征(变量)的 协方差矩阵 作变换得到一个变换矩阵 ,然后使用该变换矩阵映射原数据得到:
拉普拉斯映射提取升序特征值对应的特征向量,PCA提取降序特征值对应的特征向量
优点 :
谱聚类能够识别任意形状的样本空间且收敛于全局最优解,其基本思想是利用样本数据的相似矩阵(拉普拉斯矩阵)进行特征分解后得到的特征向量进行聚类。
谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好
缺点 :
如果最终聚类的维度非常高,则由于降维的幅度不够,算法的运行速度和最终聚类效果均不好
聚类效果依赖于相似度矩阵(权重矩阵/邻接矩阵),不同的相似度矩阵得到的最终聚类效果可能差别很大
需指定聚类个数,高斯参数。
GMM-高斯混合模型
高斯混合混合模型(GMM)是一种概率生成模型,模型通过学习先验分布后推导后验分布来实现聚类。当我们做聚类任务的时候,可以根据距离最近原则,将样本聚类到距离其最近的聚类中心,如k-means算法,或者将样本聚类到距离某个簇边缘最近的簇,如DBSCAN算法,而GMM是假设样本每个类的特征分布遵循高斯分布,即整个数据集可由不同参数的高斯分布线性组合来描述,GMM算法可以计算出每个样本属于各个簇的概率值并将其聚类到概率值最大的簇。
GMM如何实现?
GMM是以假设数据各个类别的特征分布是高斯分布为基础,所以首要步骤就是先得到各个类别的概率分布密度函数参数,对于一元变量,需要计算各个类别的均值和期望,而对于多元变量,则需要计算均值和协方差矩阵。有如下数据集X ,共有m个样本,n项特征,k个类别
高斯概率分布密度函数公式如下:
一元变量:n=1
多元变量:n>1
式中, 表示协方差矩阵,n行n列矩阵, 表示计算第k个类别的协方差矩阵的行列式。
现有如下数据集,如何使用GMM聚类?
在学习GMM聚类算法前,先从大学概率论课本上的一个例子入手。
例如:投掷一颗骰子,实验的样本空间为:S={1,2,3,4,5,6}。
存在以下事件
事件X={投掷一个骰子出现i点},
事件 ={投掷一个骰子出现偶数点},
事件 = {投掷一个骰子出现奇数点},
是样本空间S的一个划分 ,每做一次实验时,事件 必有一个且仅有一个发生 。则有
证明过程如下:
则事件X={投掷一个骰子出现i点}的概率p(X)为
式中的 称为先验概率,进一步得到以下公式:贝叶斯公式
综上我们可以得到,投掷一颗骰子后,发生事件 的概率为
回到聚类任务中,上述 事件X={投掷一个骰子出现i点}其实就是我们的训练集对应X ,事件
就是类别,对应y 。如下所示:
p(X )是训练集样本出现的概率,公式如下:
GMM代价函数
GMM首先需要计算每个类别的分布函数的参数,如何估计参数呢?可以采用极大似然估计 方法。
极大似然估计,就是利用已知的样本信息,反推最具有可能(最大概率 )导致这些样本出现的模型参数值。换句话说,极大似然估计提供了一种通过给定观察数据来估计模型参数的方法,即:模型已定,参数未知。可以这样理解,既然事情(样本)已经发生了,为什么不让这个结果出现的可能性最大呢?这也就是极大似然估计核心。
通过极大似然估计方法来使样本出现的概率p(X )最大从而得到分布函数参数,这样我们可以得到代价函数
由于连乘可能会导致下溢,所以需要取对数。对数函数是一个严格递增的函数,取对数后不会改变数据的相对关系,即对数化后,我们仍然可以获得具有相同临界点的最优化函数,代价函数如下所示
已知多元变量的高斯分布公式如下
可以得到
注意,式中 ,这里直接用概率分布密度函数表示概率分布可能有一定误导性。为什么这样表达呢?如下
是每个类的一个常量乘法因子,在之后的对后验概率 进行规范化的时候就抵消掉了。因此可以直接使用 来估计类条件概率 。
综上,GMM代价函数的最终公式如下
通过求解代价函数,就可以得到各个类别的高斯分布函数参数,进而能计算样本属于某个类别的概率,从而实现聚类,公式如下
以上过程其实就是一个建模过程,建模过程包括如下
分析业务类型(聚类问题),√
确定模型类型(非参数+概率+生成模型),√
确定代价函数,√
目标函数:超参数
优化模型:调参
在得到代价函数后,我们还要确定这个代价函数是否具有凸性,因为凸函数有一个好性质,若代价函数是凸函数,则其局部最优解也是全局最优解。若无法得到凸代价函数,则尝试更换模型或者使用迭代算法来逼近全局最优解。
目标函数一般是代价函数+正则项,用来确定超参数,防止过拟合,来提高模型泛化能力。本文这里先跳过这一步,直接讲如何计算参数 。
使用EM算法计算GMM参数
EM(期望最大)算法是一个迭代算法,其思想就是多次迭代来估计参数,直到算法收敛。EM算法就是一个迭代逼近过程,若目标函数为非凸函数,则EM算法不能保证收敛至全局最优解,且EM算法的求解结果与初值的选择有较大关系,该算法对初值敏感。
EM算法求解参数思路可以将其理解为对两个未知变量的方程求解。首先固定其中一个未知数,求另一个未知数的偏导数,之后再反过来固定后者,求前者的偏导数,反复迭代直到目标函数值不变、收敛。EM算法就是相互迭代,求出一个稳定值,用于在无法直接找到参数的情况下寻找模型的最大似然估计(MLE)。它包括两个步骤:期望步骤和最大化步骤。在聚类问题中,步骤如下
初始化参数:混合高斯分布函数参数
根据估计的参数计算簇成员后验概率:
最大化步骤:代价函数代入 ,求参数偏导,更新每一个参数 ( 分别可以只用一个未知量 来表达)
重复1、2步骤直到对数似然值收敛。
具体步骤如下
1、初始化参数 ,根据估计参数计算给定数据点 属于 类别的概率(后验概率):
2、最大化步骤: 对代价函数求偏导, 根据第一步得到的 来更新每一个参数,
3、重复1、2步骤,直到算法收敛。
参数推导过程
可通过对代价函数求偏导得到,过程比较复杂,所以本文从另一个角度来解释参数的计算过程。
关于均值μ:
关于协方差矩阵如何计算:给定如下训练集X:m*2,假设有k个类别,则
GMM的代价函数是最大化数据X 出现的概率p(X )。若多次迭代后的p(X)保持不变,则说明程序已收敛。在得到参数 ,即得到数据集每个类别的概率分布函数,就可以计算每个样本属于各个类别的概率,样本选择最大的概率值对应的聚类中心,从而实现聚类。
GMM算法优缺点
优点 :
GMM假设生成数据的是一种混合的高斯分布,为模型找到最大似然估计。与将数据点硬分配到聚类的K-means方法(假设围绕质心的数据呈圆形分布)相比,它使用了将数据点软分配到聚类的方法(即概率性,因此更好)。速度:它是混合模型学习算法中的最快算法;无偏差性:由于此算法仅最大化可能性,因此不会使均值趋于零,也不会使聚类大小具有可能适用或不适用的特定结构。 (A)通过使用软分配捕获属于不同聚类的数据点的不确定性,(B)对圆形聚类没有偏见。即使是非线性数据分布,它也能很好地工作,具有较强的鲁棒性
缺点 :
奇异性:当每个混合模型的点数不足时,估计协方差矩阵将变得困难,并且除非对协方差进行人为正则化,否则该算法会发散并寻找无穷大似然函数值的解。GMM:需要求逆
分量数量:该算法将始终使用它可以使用的所有分量,所以在没有外部提示的情况下,需要留存数据或者信息理论标准来决定用多少个分量。
适合聚类球状类簇,不能发现一些混合度较高,非球状类簇
需要指定簇个数
MeanShift-均值迁移
该算法也叫做均值漂移,在目标追踪中应用广泛。本身其实是一种基于密度的聚类算法。
1、算法思路:
主要思路是:计算某一点A与其周围半径R内的向量距离的平均值M即迁移向量,更新该点下一步的迁移位置(A=M+A)。当该点不再移动时(norm(Mnew-Mold)
2、如何计算迁移向量M
step1:随机选择一点为初始簇心点(不完全随机:不能把噪声点/离群点作为初始簇心,以防乒乓效应)
step2: 根据初始半径R,选择以R为半径的圆的范围内的点分别与簇心点的向量的平均值作为迁移向量M
表示:属于当前簇c内的点集合,簇c:半径为R,簇心为xc,簇内样本点数量为k。
3、如何迁移
根据迁移向量M,更新簇心
4、如何收敛
迁移向量M前后变化量小于阈值且样本点(除了离群点)均已归类,则停止运行
5、如何成簇
norm(Mnew-Mold)>TH时:
判断norm(M)TH:说明 当前簇未成形,需要继续迁移
norm(Mnew-Mold)
6、如何调整簇半径大小?
当迁移向量长度接近0时,需要扩大簇半径即扩大搜索范围,看看扩大范围后,簇内点是否增加,即迁移向量增量是否大于阈值Th,若小于阈值,则没必要继续迁移(当前簇已稳定),反之继续进行迁移计算。
关于调整簇半径策略:根据当前簇成员调整簇半径
Rold-->当前半斤 Rold范围内簇成员集合:
这里max( )表示:如a=[[3,5],[9,2]],max(a)=[9,5]
7、扩展
计算均值的迁移向量-->计算核函数形式的迁移向量
优点 :
与kmeans相比,均值迁移无需指定簇个数,自动发现簇个数,需指定初始半径(带宽)(或者算法自动计算)。算法相对k-means分类结果比较稳定
缺点 :
算法分类结果易受噪声点(离群点)干扰,若初始簇心点为离群点,可能会发生乒乓效应,算法无限循环,需数据预处理(过滤噪声点)或者改变距离计算方法。
适合聚类球状类簇,不能发现一些混合度较高,非球状类簇
计算复杂度高
R半径非自适应的menshift聚类算法聚类结果取决于半径(带宽)的设置,半径太小,收敛太慢,簇类个数过多;半径太大,一些簇类可能会丢失。
层次聚类
训练数据X,
例如有下数据
各个样本点之间的距离:
算法流程:
1、每个样本都视为一个簇
2、计算各个样本点之间的距离(相似度),生成m*m的距离矩阵dis
3、寻找最近的两个簇(寻找矩阵dis中的非0元素中的最小值对应的索引,i1,i2),将它们归为一类(计算两个点/簇的均值means,如何归为同一类?-->X[[i1,i2],:]=menas),本算法中衡量距离方法:计算样本点到簇心的距离-> average
a=copy.deepcopy(X)
i,j = np.unravel_index(np.argmin(dis), dis.shape)#获取多维矩阵xx值对应的索引
listIJ = findRow(a,i1,i2)#在X中寻找与a[i1,:],a[i2,:]样本点相同的所有样本点对应的索引
means = np.mean(X[listIJ,:],axis=0)#计算最近的样本点/簇的均值
a[listIJ,:] = means#赋予相同的均值即视为归为同一类
Tree[iter] = copy.deepcopy(a)#生成聚类树
def findRow(inX,i,j):
listI,listJ= [],[]
for m in range(inX.shape[0]):
if sum(abs(inX[m,:]-inX[i,:]))<1e-10:
listI.append(m)
elif sum(abs(inX[m, :] - inX[j,:]))<1e-10:
listJ.append(m)
listI.extend(listJ)
return listI
4、重复步骤2、3,直到所有样本归为一类,或者归为指定类别个数k
a=copy.deepcopy(X)
while len(set(a[:,0]))>1:#while len(set(a[:,0]))>k
i,j = np.unravel_index(np.argmin(dis), dis.shape)#获取多维矩阵xx值对应的索引
listIJ = findRow(a,i1,i2)#在X中寻找与a[i1,:],a[i2,:]样本点相同的所有样本点对应的索引
means = np.mean(X[listIJ,:],axis=0)#计算最近的样本点/簇的均值
a[listIJ,:] = means#赋予相同的均值即视为归为同一类
Tree[iter] = copy.deepcopy(a)#生成聚类树
#聚类树:每一层都是一个分类结果,簇数量由多到少。
优点:
一次性得到聚类树,每一层均为分类结果。算法相对k-means分类结果比较稳定。
相似度规则(距离衡量)容易定义
可以发现类别的层次关系
缺点:
计算复杂度高,不适合数据量大的
由于类聚类之间的距离(相似度)衡量方法不同,算法分类结果易受噪声点(离群点)干扰,需数据预处理(过滤噪声点)或者改变距离计算方法。
适合聚类球状类簇,不能发现一些混合度较高,非球状类簇
你可能感兴趣的:(机器学习,机器学习)
机器学习与深度学习间关系与区别
ℒℴѵℯ心·动ꦿ໊ོ꫞
人工智能 学习 深度学习 python
一、机器学习概述定义机器学习(MachineLearning,ML)是一种通过数据驱动的方法,利用统计学和计算算法来训练模型,使计算机能够从数据中学习并自动进行预测或决策。机器学习通过分析大量数据样本,识别其中的模式和规律,从而对新的数据进行判断。其核心在于通过训练过程,让模型不断优化和提升其预测准确性。主要类型1.监督学习(SupervisedLearning)监督学习是指在训练数据集中包含输入
数字里的世界17期:2021年全球10大顶级数据中心,中国移动榜首
张三叨
你知道吗?2016年,全球的数据中心共计用电4160亿千瓦时,比整个英国的发电量还多40%!前言每天,我们都会创造超过250万TB的数据。并且随着物联网(IOT)的不断普及,这一数据将持续增长。如此庞大的数据被存储在被称为“数据中心”的专用设施中。虽然最早的数据中心建于20世纪40年代,但直到1997-2000年的互联网泡沫期间才逐渐成为主流。当前人类的技术,比如人工智能和机器学习,已经将我们推向
nosql数据库技术与应用知识点
皆过客,揽星河
NoSQL nosql 数据库 大数据 数据分析 数据结构 非关系型数据库
Nosql知识回顾大数据处理流程数据采集(flume、爬虫、传感器)数据存储(本门课程NoSQL所处的阶段)Hdfs、MongoDB、HBase等数据清洗(入仓)Hive等数据处理、分析(Spark、Flink等)数据可视化数据挖掘、机器学习应用(Python、SparkMLlib等)大数据时代存储的挑战(三高)高并发(同一时间很多人访问)高扩展(要求随时根据需求扩展存储)高效率(要求读写速度快)
Python开发常用的三方模块如下:
换个网名有点难
python 开发语言
Python是一门功能强大的编程语言,拥有丰富的第三方库,这些库为开发者提供了极大的便利。以下是100个常用的Python库,涵盖了多个领域:1、NumPy,用于科学计算的基础库。2、Pandas,提供数据结构和数据分析工具。3、Matplotlib,一个绘图库。4、Scikit-learn,机器学习库。5、SciPy,用于数学、科学和工程的库。6、TensorFlow,由Google开发的开源机
Python实现简单的机器学习算法
master_chenchengg
python python 办公效率 python开发 IT
Python实现简单的机器学习算法开篇:初探机器学习的奇妙之旅搭建环境:一切从安装开始必备工具箱第一步:安装Anaconda和JupyterNotebook小贴士:如何配置Python环境变量算法初体验:从零开始的Python机器学习线性回归:让数据说话数据准备:从哪里找数据编码实战:Python实现线性回归模型评估:如何判断模型好坏逻辑回归:从分类开始理论入门:什么是逻辑回归代码实现:使用skl
遥感影像的切片处理
sand&wich
计算机视觉 python 图像处理
在遥感影像分析中,经常需要将大尺寸的影像切分成小片段,以便于进行详细的分析和处理。这种方法特别适用于机器学习和图像处理任务,如对象检测、图像分类等。以下是如何使用Python和OpenCV库来实现这一过程,同时确保每个影像片段保留正确的地理信息。准备环境首先,确保安装了必要的Python库,包括numpy、opencv-python和xml.etree.ElementTree。这些库将用于图像处理
ai绘画工具midjourney怎么下载?附作品管理教程
设计师早上好
Midjourney是一款功能强大的AI绘画工具,它使用机器学习技术和深度神经网络等算法,可以生成各种艺术风格的绘画作品。在创意设计、广告宣传等方面有着广泛的应用前景。那么,ai绘画工具midjourney怎么下载?本文将为您介绍Midjourney的下载以及作品的相关管理。一、Midjourney下载Midjourney的下载非常简单,只需打开Midjourney官网(点击“GetMidjour
[实践应用] 深度学习之模型性能评估指标
YuanDaima2048
深度学习 工具使用 深度学习 人工智能 损失函数 性能评估 pytorch python 机器学习
文章总览:YuanDaiMa2048博客文章总览深度学习之模型性能评估指标分类任务回归任务排序任务聚类任务生成任务其他介绍在机器学习和深度学习领域,评估模型性能是一项至关重要的任务。不同的学习任务需要不同的性能指标来衡量模型的有效性。以下是对一些常见任务及其相应的性能评估指标的详细解释和总结。分类任务分类任务是指模型需要将输入数据分配到预定义的类别或标签中。以下是分类任务中常用的性能指标:准确率(
机器学习-聚类算法
不良人龍木木
机器学习 机器学习 算法 聚类
机器学习-聚类算法1.AHC2.K-means3.SC4.MCL仅个人笔记,感谢点赞关注!1.AHC2.K-means3.SC传统谱聚类:个人对谱聚类算法的理解以及改进4.MCL目前仅专注于NLP的技术学习和分享感谢大家的关注与支持!
未来软件市场是怎么样的?做开发的生存空间如何?
cesske
软件需求
目录前言一、未来软件市场的发展趋势二、软件开发人员的生存空间前言未来软件市场是怎么样的?做开发的生存空间如何?一、未来软件市场的发展趋势技术趋势:人工智能与机器学习:随着技术的不断成熟,人工智能将在更多领域得到应用,如智能客服、自动驾驶、智能制造等,这将极大地推动软件市场的增长。云计算与大数据:云计算服务将继续普及,大数据技术的应用也将更加广泛。企业将更加依赖云计算和大数据来优化运营、提升效率,并
python中zeros用法_Python中的numpy.zeros()用法
江平舟
python中zeros用法
numpy.zeros()函数是最重要的函数之一,广泛用于机器学习程序中。此函数用于生成包含零的数组。numpy.zeros()函数提供给定形状和类型的新数组,并用零填充。句法numpy.zeros(shape,dtype=float,order='C'参数形状:整数或整数元组此参数用于定义数组的尺寸。此参数用于我们要在其中创建数组的形状,例如(3,2)或2。dtype:数据类型(可选)此参数用于
【NumPy】深入解析numpy.zeros()函数
二七830
numpy
欢迎莅临我的个人主页这里是我深耕Python编程、机器学习和自然语言处理(NLP)领域,并乐于分享知识与经验的小天地!博主简介:我是二七830,一名对技术充满热情的探索者。多年的Python编程和机器学习实践,使我深入理解了这些技术的核心原理,并能够在实际项目中灵活应用。尤其是在NLP领域,我积累了丰富的经验,能够处理各种复杂的自然语言任务。技术专长:我熟练掌握Python编程语言,并深入研究了机
【中国国际航空-注册_登录安全分析报告】
风控牛
验证码接口安全评测系列 安全 行为验证 极验 网易易盾 智能手机
前言由于网站注册入口容易被黑客攻击,存在如下安全问题:1.暴力破解密码,造成用户信息泄露2.短信盗刷的安全问题,影响业务及导致用户投诉3.带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞所以大部分网站及App都采取图形验证码或滑动验证码等交互解决方案,但在机器学习能力提高的当下,连百度这样的大厂都遭受攻击导致点名批评,图形验证及交互验证方式的安全性到底如何?请看具体分析一、中国国际航空PC
机器学习 流形数据降维:UMAP 降维算法
小嗷犬
Python 机器学习 # 数据分析及可视化 机器学习 算法 人工智能
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。个人主页:小嗷犬的个人主页个人网站:小嗷犬的技术小站个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。本文目录UMAP简介理论基础特点与优势应用场景在Python中使用UMAP安装umap-learn库使用UMAP可视化手写数字数据集UMAP简介UMAP(UniformManifoldApproximatio
七.正则化
愿风去了
吴恩达机器学习之正则化(Regularization)http://www.cnblogs.com/jianxinzhou/p/4083921.html从数学公式上理解L1和L2https://blog.csdn.net/b876144622/article/details/81276818虽然在线性回归中加入基函数会使模型更加灵活,但是很容易引起数据的过拟合。例如将数据投影到30维的基函数上,模
机器学习-------数据标准化
罔闻_spider
数据分析 算法 机器学习 人工智能
什么是归一化,它与标准化的区别是什么?一作用在做训练时,需要先将特征值与标签标准化,可以防止梯度防炸和过拟合;将标签标准化后,网络预测出的数据是符合标准正态分布的—StandarScaler(),与真实值有很大差别。因为StandarScaler()对数据的处理是(真实值-平均值)/标准差。同时在做预测时需要将输出数据逆标准化提升模型精度:标准化/归一化使不同维度的特征在数值上更具比较性,提高分类
分享一个基于python的电子书数据采集与可视化分析 hadoop电子书数据分析与推荐系统 spark大数据毕设项目(源码、调试、LW、开题、PPT)
计算机源码社
Python项目 大数据 大数据 python hadoop 计算机毕业设计选题 计算机毕业设计源码 数据分析 spark毕设
作者:计算机源码社个人简介:本人八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流!学习资料、程序开发、技术解答、文档报告如需要源码,可以扫取文章下方二维码联系咨询Java项目微信小程序项目Android项目Python项目PHP项目ASP.NET项目Node.js项目选题推荐项目实战|p
两种方法判断Python的位数是32位还是64位
sanqima
Python编程 电脑 python 开发语言
Python从1991年发布以来,凭借其简洁、清晰、易读的语法、丰富的标准库和第三方工具,在Web开发、自动化测试、人工智能、图形识别、机器学习等领域发展迅猛。 Python是一种胶水语言,通过Cython库与C/C++语言进行链接,通过Jython库与Java语言进行链接。 Python是跨平台的,可运行在多种操作系统上,包括但不限于Windows、Linux和macOS。这意味着用Py
使用最大边际相关性(MMR)选择示例:提高AI模型的多样性和相关性
aehrutktrjk
人工智能 easyui 前端 python
使用最大边际相关性(MMR)选择示例:提高AI模型的多样性和相关性引言在机器学习和自然语言处理领域,选择合适的训练示例对模型性能至关重要。最大边际相关性(MaximalMarginalRelevance,MMR)是一种优秀的示例选择方法,它不仅考虑了示例与输入的相关性,还注重保持所选示例之间的多样性。本文将深入探讨如何使用MMR来选择示例,以提高AI模型的性能和泛化能力。什么是最大边际相关性(MM
LangChain集成指南:如何利用多样化的AI提供商
aehrutktrjk
人工智能 langchain python
LangChain集成指南:如何利用多样化的AI提供商引言在人工智能和机器学习领域,LangChain已成为一个强大而灵活的框架,允许开发者轻松集成各种AI服务提供商。本文将深入探讨LangChain的集成能力,介绍如何利用不同的AI提供商来增强你的应用程序,并提供实用的代码示例。LangChain集成概览LangChain支持多种AI提供商的集成,这些集成可以分为两类:独立包集成:这些提供商有独
机器学习VS深度学习
nfgo
机器学习
机器学习(MachineLearning,ML)和深度学习(DeepLearning,DL)是人工智能(AI)的两个子领域,它们有许多相似之处,但在技术实现和应用范围上也有显著区别。下面从几个方面对两者进行区分:1.概念层面机器学习:是让计算机通过算法从数据中自动学习和改进的技术。它依赖于手动设计的特征和数学模型来进行学习,常用的模型有决策树、支持向量机、线性回归等。深度学习:是机器学习的一个子领
大数据毕业设计hadoop+spark+hive知识图谱租房数据分析可视化大屏 租房推荐系统 58同城租房爬虫 房源推荐系统 房价预测系统 计算机毕业设计 机器学习 深度学习 人工智能
2401_84572577
程序员 大数据 hadoop 人工智能
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。我先来介绍一下这些东西怎么用,文末抱走。(1)Python所有方向的学习路线(
【机器学习与R语言】1-机器学习简介
苹果酱0567
面试题汇总与解析 java 中间件 开发语言 spring boot 后端
1.基本概念机器学习:发明算法将数据转化为智能行为数据挖掘VS机器学习:前者侧重寻找有价值的信息,后者侧重执行已知的任务。后者是前者的先期准备过程:数据——>抽象化——>一般化。或者:收集数据——推理数据——归纳数据——发现规律抽象化:训练:用一个特定模型来拟合数据集的过程用方程来拟合观测的数据:观测现象——数据呈现——模型建立。通过不同的格式来把信息概念化一般化:一般化:将抽象化的知识转换成可用
Python前沿技术:机器学习与人工智能
4.0啊
Python 人工智能 python 机器学习
Python前沿技术:机器学习与人工智能一、引言随着科技的飞速发展,机器学习和人工智能(AI)已经成为了计算机科学领域的热门话题。Python作为一门易学易用且功能强大的编程语言,已经成为了这两个领域的首选语言之一。本文将深入探讨Python在机器学习和人工智能领域的应用,以及一些前沿技术和工具。二、Python机器学习基础2.1机器学习概述机器学习是人工智能(AI)的一个关键子集,它的核心在于让
chatgpt赋能python:如何在Python中计算平均值
tulingtest
ChatGpt python chatgpt numpy 计算机
如何在Python中计算平均值计算平均值是数据分析、统计和机器学习等许多领域中的常见任务。Python作为一门功能强大且易于学习的编程语言,为计算平均值提供了多种方法。在本文中,我们将介绍如何在Python中计算平均值。什么是平均值简单来说,平均值是一组数字的总和除以数字的数量。例如,对于数字序列1,3,5,7,9,平均值是(1+3+5+7+9)/5=5。平均值在数据分析中非常有用,因为它可以提供
Python 初学者入门必知: Anaconda是什么?有什么作用?怎么使用?
懒大王爱吃狼
Python基础 python 开发语言 python基础 python学习 anaconda anaconda安装 python教程
初学者在学习Python时,经常看到的一个名字是Anaconda。究竟什么是Anaconda,为什么它如此受欢迎?在这篇文章中,我们将探讨Anaconda,了解Anaconda的从安装到使用的。Anaconda是一个免费开源的Python和R编程发行版,包含上千个适用于数据科学和机器学习的包。同时,配备了Spyder和Jupyternotebook等工具,初学者可以使用它们来学习Python,使用
每天五分钟玩转深度学习PyTorch:模型参数优化器torch.optim
幻风_huanfeng
深度学习框架pytorch 深度学习 pytorch 人工智能 神经网络 机器学习 优化算法
本文重点在机器学习或者深度学习中,我们需要通过修改参数使得损失函数最小化(或最大化),优化算法就是一种调整模型参数更新的策略。在pytorch中定义了优化器optim,我们可以使用它调用封装好的优化算法,然后传递给它神经网络模型参数,就可以对模型进行优化。本文是学习第6步(优化器),参考链接pytorch的学习路线随机梯度下降算法在深度学习和机器学习中,梯度下降算法是最常用的参数更新方法,它的公式
一切皆是映射:AI的去中心化:区块链技术的融合
AI大模型应用之禅
计算科学 神经计算 深度学习 神经网络 大数据 人工智能 大型语言模型 AI AGI LLM Java Python 架构设计 Agent RPA
一切皆是映射:AI的去中心化:区块链技术的融合作者:禅与计算机程序设计艺术/ZenandtheArtofComputerProgramming关键词:AI,区块链,去中心化,智能合约,共识机制,数据安全,隐私保护,分布式账本技术,机器学习,数据隐私1.背景介绍1.1问题的由来随着人工智能(AI)技术的快速发展,其在各个领域的应用越来越广泛,从自动驾驶、智能医疗到金融服务,AI正在改变着我们的生活。
第五届核磁机器学习班(训练营:2023.6.5~6.17)
茗创科技
茗创科技专注于脑科学数据处理,涵盖(EEG/ERP,fMRI,结构像,DTI,ASL,FNIRS)等,欢迎留言讨论及转发推荐,也欢迎了解茗创科技的脑电课程,数据处理服务及脑科学工作站销售业务,可添加我们的工程师(微信号MCKJ-zhouyi或17373158786)咨询。★课程简介★基于血氧水平依赖的功能磁共振成像(fMRI)技术,利用其数据构建的功能性脑网络后,发现脑并不是一个单纯对外界刺激进行
如何有效的学习AI大模型?
Python程序员罗宾
学习 人工智能 语言模型 自然语言处理 架构
学习AI大模型是一个系统性的过程,涉及到多个学科的知识。以下是一些建议,帮助你更有效地学习AI大模型:基础知识储备:数学基础:学习线性代数、概率论、统计学和微积分等,这些是理解机器学习算法的数学基础。编程技能:掌握至少一种编程语言,如Python,因为大多数AI模型都是用Python实现的。理论学习:机器学习基础:了解监督学习、非监督学习、强化学习等基本概念。深度学习:学习神经网络的基本结构,如卷
jquery实现的jsonp掉java后台
知了ing
java jsonp jquery
什么是JSONP?
先说说JSONP是怎么产生的:
其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,小可不才,试着用自己的方式来阐释一下这个问题,看看是否有帮助。
1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准;
2、
Struts2学习笔记
caoyong
struts2
SSH : Spring + Struts2 + Hibernate
三层架构(表示层,业务逻辑层,数据访问层) MVC模式 (Model View Controller)
分层原则:单向依赖,接口耦合
1、Struts2 = Struts + Webwork
2、搭建struts2开发环境
a>、到www.apac
SpringMVC学习之后台往前台传值方法
满城风雨近重阳
springMVC
springMVC控制器往前台传值的方法有以下几种:
1.ModelAndView
通过往ModelAndView中存放viewName:目标地址和attribute参数来实现传参:
ModelAndView mv=new ModelAndView();
mv.setViewName="success
WebService存在的必要性?
一炮送你回车库
webservice
做Java的经常在选择Webservice框架上徘徊很久,Axis Xfire Axis2 CXF ,他们只有一个功能,发布HTTP服务然后用XML做数据传输。
是的,他们就做了两个功能,发布一个http服务让客户端或者浏览器连接,接收xml参数并发送xml结果。
当在不同的平台间传输数据时,就需要一个都能解析的数据格式。
但是为什么要使用xml呢?不能使json或者其他通用数据
js年份下拉框
3213213333332132
java web ee
<div id="divValue">test...</div>测试
//年份
<select id="year"></select>
<script type="text/javascript">
window.onload =
简单链式调用的实现技术
归来朝歌
方法调用 链式反应 编程思想
在编程中,我们可以经常遇到这样一种场景:一个实例不断调用它自身的方法,像一条链条一样进行调用
这样的调用你可能在Ajax中,在页面中添加标签:
$("<p>").append($("<span>").text(list[i].name)).appendTo("#result");
也可能在HQ
JAVA调用.net 发布的webservice 接口
darkranger
webservice
/**
* @Title: callInvoke
* @Description: TODO(调用接口公共方法)
* @param @param url 地址
* @param @param method 方法
* @param @param pama 参数
* @param @return
* @param @throws BusinessException
Javascript模糊查找 | 第一章 循环不能不重视。
aijuans
Way
最近受我的朋友委托用js+HTML做一个像手册一样的程序,里面要有可展开的大纲,模糊查找等功能。我这个人说实在的懒,本来是不愿意的,但想起了父亲以前教我要给朋友搞好关系,再加上这也可以巩固自己的js技术,于是就开始开发这个程序,没想到却出了点小问题,我做的查找只能绝对查找。具体的js代码如下:
function search(){
var arr=new Array("my
狼和羊,该怎么抉择
atongyeye
工作
狼和羊,该怎么抉择
在做一个链家的小项目,只有我和另外一个同事两个人负责,各负责一部分接口,我的接口写完,并全部测联调试通过。所以工作就剩下一下细枝末节的,工作就轻松很多。每天会帮另一个同事测试一些功能点,协助他完成一些业务型不强的工作。
今天早上到公司没多久,领导就在QQ上给我发信息,让我多协助同事测试,让我积极主动些,有点责任心等等,我听了这话,心里面立马凉半截,首先一个领导轻易说
读取android系统的联系人拨号
百合不是茶
android sqlite数据库 内容提供者 系统服务的使用
联系人的姓名和号码是保存在不同的表中,不要一下子把号码查询来,我开始就是把姓名和电话同时查询出来的,导致系统非常的慢
关键代码:
1, 使用javabean操作存储读取到的数据
package com.example.bean;
/**
*
* @author Admini
ORACLE自定义异常
bijian1013
数据库 自定义异常
实例:
CREATE OR REPLACE PROCEDURE test_Exception
(
ParameterA IN varchar2,
ParameterB IN varchar2,
ErrorCode OUT varchar2 --返回值,错误编码
)
AS
/*以下是一些变量的定义*/
V1 NUMBER;
V2 nvarc
查看端号使用情况
征客丶
windows
一、查看端口
在windows命令行窗口下执行:
>netstat -aon|findstr "8080"
显示结果:
TCP 127.0.0.1:80 0.0.0.0:0 &
【Spark二十】运行Spark Streaming的NetworkWordCount实例
bit1129
wordcount
Spark Streaming简介
NetworkWordCount代码
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
Struts2 与 SpringMVC的比较
BlueSkator
struts2 spring mvc
1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。 2. 性能:spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring
Hibernate在更新时,是可以不用session的update方法的(转帖)
BreakingBad
Hibernate update
地址:http://blog.csdn.net/plpblue/article/details/9304459
public void synDevNameWithItil()
{Session session = null;Transaction tr = null;try{session = HibernateUtil.getSession();tr = session.beginTran
读《研磨设计模式》-代码笔记-观察者模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
/**
* “观
重置MySQL密码
chenhbc
mysql 重置密码 忘记密码
如果你也像我这么健忘,把MySQL的密码搞忘记了,经过下面几个步骤就可以重置了(以Windows为例,Linux/Unix类似):
1、关闭MySQL服务
2、打开CMD,进入MySQL安装目录的bin目录下,以跳过权限检查的方式启动MySQL
mysqld --skip-grant-tables
3、新开一个CMD窗口,进入MySQL
mysql -uroot
 
再谈系统论,控制论和信息论
comsci
设计模式 生物 能源 企业应用 领域模型
再谈系统论,控制论和信息论
偶然看
oracle moving window size与 AWR retention period关系
daizj
oracle
转自: http://tomszrp.itpub.net/post/11835/494147
晚上在做11gR1的一个awrrpt报告时,顺便想调整一下AWR snapshot的保留时间,结果遇到了ORA-13541这样的错误.下面是这个问题的发生和解决过程.
SQL> select * from v$version;
BANNER
-------------------
Python版B树
dieslrae
python
话说以前的树都用java写的,最近发现python有点生疏了,于是用python写了个B树实现,B树在索引领域用得还是蛮多了,如果没记错mysql的默认索引好像就是B树...
首先是数据实体对象,很简单,只存放key,value
class Entity(object):
'''数据实体'''
def __init__(self,key,value)
C语言冒泡排序
dcj3sjt126com
算法
代码示例:
# include <stdio.h>
//冒泡排序
void sort(int * a, int len)
{
int i, j, t;
for (i=0; i<len-1; i++)
{
for (j=0; j<len-1-i; j++)
{
if (a[j] > a[j+1]) // >表示升序
自定义导航栏样式
dcj3sjt126com
自定义
-(void)setupAppAppearance
{
[[UILabel appearance] setFont:[UIFont fontWithName:@"FZLTHK—GBK1-0" size:20]];
[UIButton appearance].titleLabel.font =[UIFont fontWithName:@"FZLTH
11.性能优化-优化-JVM参数总结
frank1234
jvm参数 性能优化
1.堆
-Xms --初始堆大小
-Xmx --最大堆大小
-Xmn --新生代大小
-Xss --线程栈大小
-XX:PermSize --永久代初始大小
-XX:MaxPermSize --永久代最大值
-XX:SurvivorRatio --新生代和suvivor比例,默认为8
-XX:TargetSurvivorRatio --survivor可使用
nginx日志分割 for linux
HarborChung
nginx linux 脚本
nginx日志分割 for linux 默认情况下,nginx是不分割访问日志的,久而久之,网站的日志文件将会越来越大,占用空间不说,如果有问题要查看网站的日志的话,庞大的文件也将很难打开,于是便有了下面的脚本 使用方法,先将以下脚本保存为 cutlog.sh,放在/root 目录下,然后给予此脚本执行的权限
复制代码代码如下:
chmo
Spring4新特性——泛型限定式依赖注入
jinnianshilongnian
spring spring4 泛型式依赖注入
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
centOS安装GCC和G++
liuxihope
centos gcc
Centos支持yum安装,安装软件一般格式为yum install .......,注意安装时要先成为root用户。
按照这个思路,我想安装过程如下:
安装gcc:yum install gcc
安装g++: yum install g++
实际操作过程发现,只能有gcc安装成功,而g++安装失败,提示g++ command not found。上网查了一下,正确安装应该
第13章 Ajax进阶(上)
onestopweb
Ajax
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
How to determine BusinessObjects service pack and fix pack
blueoxygen
BO
http://bukhantsov.org/2011/08/how-to-determine-businessobjects-service-pack-and-fix-pack/
The table below is helpful. Reference
BOE XI 3.x
12.0.0.
y BOE XI 3.0 12.0.
x.
y BO
Oracle里的自增字段设置
tomcat_oracle
oracle
大家都知道吧,这很坑,尤其是用惯了mysql里的自增字段设置,结果oracle里面没有的。oh,no 我用的是12c版本的,它有一个新特性,可以这样设置自增序列,在创建表是,把id设置为自增序列
create table t
(
id number generated by default as identity (start with 1 increment b
Spring Security(01)——初体验
yang_winnie
spring Security
Spring Security(01)——初体验
博客分类: spring Security
Spring Security入门安全认证
首先我们为Spring Security专门建立一个Spring的配置文件,该文件就专门用来作为Spring Security的配置