目录
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分类结果比较稳定。
相似度规则(距离衡量)容易定义
可以发现类别的层次关系
缺点:
计算复杂度高,不适合数据量大的
由于类聚类之间的距离(相似度)衡量方法不同,算法分类结果易受噪声点(离群点)干扰,需数据预处理(过滤噪声点)或者改变距离计算方法。
适合聚类球状类簇,不能发现一些混合度较高,非球状类簇
你可能感兴趣的:(机器学习,机器学习)
启元世界(Inspir.ai)技术浅析(一)
爱研究的小牛
AIGC—游戏制作 人工智能 机器学习 AIGC 深度学习
启元世界(Inspir.ai)作为全球领先的通用人工智能平台公司,自2017年成立以来,一直致力于通过人工智能技术提升产业效能和生活体验。公司汇聚了来自全球顶尖公司和高等学府的技术专家,专注于深度强化学习、推荐算法以及机器学习系统平台等前沿领域,并成功将人工智能技术应用于数字娱乐、智能决策和机器人等多个领域。一、核心技术启元世界在人工智能领域取得了多项突破性进展,其核心技术涵盖了以下几个方面:1.
ImportError: DLL load failed while importing _rust: 找不到指定的程序的解决方案
爱编程的喵喵
Python基础课程 python ImportError DLL load failed _rust 解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。 本文主要介绍了ImportError:DLLloa
Rust中奖励函数的实现与应用
AI天才研究院
计算 AI大模型企业级应用开发实战 大数据AI人工智能 计算科学 神经计算 深度学习 神经网络 大数据 人工智能 大型语言模型 AI AGI LLM Java Python 架构设计 Agent RPA
Rust中奖励函数的实现与应用作者:禅与计算机程序设计艺术/ZenandtheArtofComputerProgramming关键词:Rust,奖励函数,强化学习,机器学习,状态空间1.背景介绍1.1问题的由来在机器学习领域,特别是在强化学习(ReinforcementLearning,RL)中,奖励函数(RewardFunction)扮演着至关重要的角色。它定义了智能体(Agent)在执行任务时
理解随机森林算法
菌菌的快乐生活
算法 随机森林 机器学习
基本概念随机森林(RandomForest)是一种集成学习算法,它属于机器学习中的监督学习算法。简单来说,它就像是一群“专家”(决策树)在一起讨论并做出决策。想象你要判断一个水果是苹果还是橙子,你可以通过观察水果的颜色、形状、大小等特征。随机森林算法就是利用很多棵决策树来对这个水果进行判断。每一棵决策树就像一个小专家,它们根据自己对这些特征的判断来给出一个答案(是苹果还是橙子),最后综合这些小专家
AI常见的算法
纠结哥_Shrek
人工智能 算法
人工智能(AI)中常见的算法分为多个领域,如机器学习、深度学习、强化学习、自然语言处理和计算机视觉等。以下是一些常见的算法及其用途:1.机器学习(MachineLearning)监督学习(SupervisedLearning)线性回归(LinearRegression):用于预测连续值,如房价预测。逻辑回归(LogisticRegression):用于分类问题,如垃圾邮件检测。支持向量机(SVM)
【 书生·浦语大模型实战营】学习笔记(五):LMDeploy 量化部署
GoAI
深入浅出LLM 深入浅出AI 大模型 LLM 部署 人工智能 LMDeploy
AI学习星球推荐:GoAI的学习社区知识星球是一个致力于提供《机器学习|深度学习|CV|NLP|大模型|多模态|AIGC》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于前沿论文解读、资料共享、行业最新动态以、实践教程、求职相关(简历撰写技巧、面经资料与心得)多方面综合学习平台,强烈推荐AI小白及AI1;;爱好者学习,性价比非常高!加入星球➡️点击链接
python中cv是什么_python里面cv是什么意思
weixin_39639568
python中cv是什么
OpenCV(OpenSourceComputerVisionLibrary)开放源代码计算机视觉库,主要算法涉及图像处理、计算机视觉和机器学习相关方法。OpenCV其实就是一堆C和C++语言的源代码文件,这些源代码文件中实现了许多常用的计算机视觉算法。OpenCV由一系列C函数和C++类构成,它有C,C++,Python和java接口,当前SDK(SoftwareDevelopmentKit软件
论文AI率:检测原理是什么?该如何降低论文AI率?
迪娜学姐
人工智能
我是娜姐@迪娜学姐,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。上一篇介绍了10个检测AI率的在线工具。本篇来说说AI率到底是如何检测出来的?该如何有效降低论文的AI率?和AI大模型一样,AI检测的核心也是机器学习模型,它们在包含人类创作和AI生成文本样本的大型数据集上进行训练,通过学习每种文本中存在的模式和特征,以此来区分人类创作的文本和AI生成文本。AI检测器查找的一些关键特征包
深入剖析ipywidgets-7.0.0b1:Python交互式前端库的新进展
多行不易
本文还有配套的精品资源,点击获取简介:ipywidgets是一个用于创建交互式用户界面的Python库,广泛应用于数据可视化和科学计算。最新版本7.0.0b1带来了新特性、性能优化、API改进和兼容性增强。本详细解析包括ipywidgets的核心概述、主要功能、版本新特性以及其在教育、数据探索和应用原型开发等场景中的应用。1.ipywidgets核心概念介绍在当今数据科学和机器学习领域,交互式可视
机器学习Day01
酒脑猫
机器学习 人工智能
人工智能三大概念及其关系人工智能(AI):使用计算机来模拟或者代替人类机器学习(ML):机器自动学习,并不只由人定义规则编程深度学习(DL):大脑仿生,模拟人大脑神经网络,设计一层层神经元模拟事物机器学习是实现人工智能的一种途径,深度学习是机器学习的一种更加深入的方法。机器学习学习方法基于规则的学习:程序员根据自己经验定义规则基于模型的学习:由于某些事物,问题无法可以定义明确的规则,如:图片,语音
机器学习Day1
一飞学编程
机器学习 机器学习 人工智能
1.背景以周志华教授的《机器学习》为核心学习AI知识2.绪论中的重要概念整理机器学习的目的:利用经验(数据)来改善系统性能记录:(key1:value1,key2:value2…)数据集:记录的集合示例(样本):对一个事件或对象的描述属性(特征):key1,key2…属性值:value1,value2…属性空间(样本空间、输入空间):key1,key2等组成的多维空间特征向量:形如(value1,
机器学习建模流程 day02
扫把星133
机器学习 人工智能 python
机器学习建模流程通常可以分为以下几个主要步骤:问题定义与数据收集:确定问题的类型(分类、回归、聚类等可见上篇所讲内容)和目标。收集相关数据,可以是从数据库、API、文件或其他来源获取。注释:数据库是计算机里面的存储的数据的,当然可以对数据进行一些操作增删改查,通常用于存储大量结构化数据,并提供高效的数据操作和查询功能。API(ApplicationProgrammingInterface,应用程序
【DL】神经网络与机器学习基础知识介绍(一)
MengWoods
深度学习 机器学习 神经网络 人工智能
原博客:https://mengwoods.github.io/post/dl/009-dl-fundamental/文章目录基本通用概念梯度下降算法数据工程训练技术偏差与方差防止过拟合评估指标决策树基本通用概念机器学习的类型:监督学习(SupervisedLearning):分类,回归无监督学习(UnsupervisedLearning):聚类,降维强化学习(ReinforcementLearn
使用seaborn绘制相关性热力图
CodeWG
python
使用seaborn绘制相关性热力图在数据分析和机器学习中,热力图是一种常见的可视化方法,用于显示不同变量之间的相关性。在Python中,我们可以使用seaborn库绘制相关性热力图。本文将介绍如何使用seaborn中的heatmap函数来绘制相关性热力图,并为读者提供示例代码。首先,我们需要导入必要的库:pandas、numpy和seaborn。我们还使用了matplotlib库以便于展示结果。i
一文搞懂python的face_recognition人脸识别库
码上飞扬
python 开发语言 人脸识别
随着人工智能和机器学习的快速发展,人脸识别技术在安全监控、身份验证、智能相册等领域的应用越来越广泛。Python作为一门简洁高效的编程语言,其丰富的库支持使得人脸识别的实现变得更加容易。本文将介绍如何使用Python的face_recognition库来实现基本的人脸识别功能。一、face_recognition库简介1.1什么是face_recognition库?face_recognition
智联未来——打造基于机器学习的MySQL智能运维助手,开启协作新时代
墨夶
数据库学习资料2 机器学习 mysql 运维
在当今快速发展的信息技术领域,数据库作为信息系统的核心组件,其稳定性和效率直接关系到业务的成功与否。面对日益增长的数据管理和处理需求,传统的运维方式已经难以满足现代企业对高效、稳定服务的要求。为此,越来越多的企业开始探索如何通过智能化手段提升数据库运维水平,特别是利用最新的AI技术和自动化工具来构建一个功能强大的智能运维助手。今天,我们将深入了解如何训练这样一个基于机器学习的MySQL智能运维助手
Python生态系统中拥有丰富的第三方库
___Y1
python python
Python生态系统中拥有丰富的第三方库,这些库覆盖了几乎所有领域,包括科学计算、数据分析、机器学习、人工智能、Web开发等。这些库的存在极大地丰富了Python的功能,使其成为一门强大而灵活的编程语言。以下是一些常用的Python第三方库:1.**科学计算与数据处理:**-**NumPy:**提供高性能的多维数组对象,以及相关工具,用于处理这些数组。-**Pandas:**提供数据结构和数据分析
【人工智能】Python常用库-TensorFlow常用方法教程
IT古董
人工智能 机器学习 Python 人工智能 python tensorflow 机器学习
TensorFlow是一个广泛应用的开源深度学习框架,支持多种机器学习任务,如深度学习、神经网络、强化学习等。以下是TensorFlow的详细教程,涵盖基础使用方法和示例代码。1.安装与导入安装TensorFlow:pipinstalltensorflow导入TensorFlow:importtensorflowastfimportnumpyasnp验证安装:print(tf.__version_
【小白学AI系列】NLP 核心知识点(六)Softmax函数介绍
Blankspace空白
人工智能 自然语言处理 transformer
Softmax函数Softmax函数是一种常用的数学函数,广泛应用于机器学习中的分类问题,尤其是在神经网络的输出层。它的主要作用是将一个实数向量“压缩”成一个概率分布,使得所有输出的值在0到1之间,并且总和为1。换句话说,Softmax将模型的原始输出(logits)转化为概率,帮助我们做分类决策。定义与公式假设我们有一个向量z=[z1,z2,…,zn]\mathbf{z}=[z_1,z_2,\d
机器学习:利用sklearn实现心脏病预测
薄化克Oswald
机器学习:利用sklearn实现心脏病预测机器学习sklearn实现心脏病预测项目地址:https://gitcode.com/Resource-Bundle-Collection/171ff欢迎使用本资源仓库,本项目专注于利用Python的sklearn库进行心脏病预测的机器学习实践。通过详尽的步骤和示例代码,本项目为你展示了如何应用不同的机器学习算法来分析心脏病数据集,并预测患者是否有可能患有
可解释性:走向透明与可信的人工智能
一位小说男主
人工智能入门 深度学习 机器学习 人工智能 神经网络
随着深度学习和机器学习技术的迅速发展,越来越多的行业和领域开始应用这些技术。然而,这些技术的“黑盒”特性也带来了不容忽视的挑战。在许多任务中,尽管这些模型表现出色,取得了相当高的精度,但其决策过程不透明,这对于依赖于机器决策的应用(如金融、医疗、法律等)来说,可能是无法接受的。因此,如何提高模型的可解释性、实现透明和可信的人工智能,成为了当下人工智能领域的重要课题。❤️本文将深入探讨机器学习中的可
爬虫实战--- (6)链家房源数据爬取与分析可视化
rain雨雨编程
爬虫实战系列 python 爬虫 数据分析
文章持续跟新,可以微信搜一搜公众号[rain雨雨编程],第一时间阅读,涉及数据分析,机器学习,Java编程,爬虫,实战项目等。目录前言1.爬取目标2.所涉及知识点3.步骤分析(穿插代码讲解)步骤一:发送请求步骤二:获取数据步骤三:解析数据步骤四:保存数据4.爬取结果5.完整代码6数据可视化前言今天我将为大家分享一个非常实用的Python项目——链家房源数据的爬取与分析可视化。在这篇文章中,我们将分
使用scikit-learn实现线性回归对自定义数据集进行拟合
Luzem0319
scikit-learn 线性回归 python
1.引入必要的库首先,需要引入必要的库。scikit-learn提供了强大的机器学习工具,pandas和numpy则用于数据处理,matplotlib用于结果的可视化。importpandasaspdimportnumpyasnpfromsklearn.model_selectionimporttrain_test_splitfromsklearn.linear_modelimportLinear
数据挖掘的常用算法
北柠陌寒0207
笔记
在大数据时代,数据挖掘是最关键的工作。大数据的挖掘是从海量、不完全的、有噪声的、模糊的、随机的大型数据库中发现隐含在其中有价值的、潜在有用的信息和知识的过程,也是一种决策支持过程。其主要基于人工智能,机器学习,模式学习,统计学等。通过对大数据高度自动化地分析,做出归纳性的推理,从中挖掘出潜在的模式,可以帮助企业、商家、用户调整市场政策、减少风险、理性面对市场,并做出正确的决策。目前,在很多领域尤其
Upgini: 智能数据搜索与丰富化引擎 - 提升机器学习和人工智能模型准确性的利器
2401_87189860
人工智能 机器学习
Upgini:智能数据搜索与丰富化引擎在当今数据驱动的世界中,机器学习和人工智能模型的准确性至关重要。然而,提高模型准确性往往是一项艰巨的任务,需要大量的特征工程和数据处理工作。幸运的是,Upgini这一创新的Python库为数据科学家和机器学习工程师提供了一个强大的解决方案。Upgini的核心功能Upgini是一个智能数据搜索和丰富化引擎,专为机器学习和AI设计。它的主要功能包括:自动特征发现与
《机器学习实战》——在python中使用Matplotlib注解绘制树形图
哆啦AA梦
python 机器学习 python 机器学习
#encoding=utf-8#使用文本注解绘制树形图importmatplotlib.pyplotaspltdecisionNode=dict(boxstyle="sawtooth",fc="0.8")leafNode=dict(boxstyle="round4",fc="0.8")arrow_args=dict(arrowstyle="<-")#上面三行代码定义文本框和箭头格式#定义决策树决策
【外文原版书阅读】《机器学习前置知识》1.线性代数的重要性,初识向量以及向量加法
Icomi_
807.《机器学习前置知识》 机器学习 人工智能 计算机视觉 深度学习 神经网络 c++ c语言
目录编辑编辑1.Chapter2WhyLinearAlgebra?2.Chapter3WhatIsaVector?个人主页:Icomi大家好,我是Icomi,本专栏是我阅读外文原版书《BeforeMachineLearning》对于文章中我认为能够增进线性代数与机器学习之间的理解的内容的一个输出,希望能够帮助到各位更加深刻的理解线性代数与机器学习。若各位对本系列内容感兴趣,可以给我点个关注跟进内容
Python 实现车牌识别
菜狗小测试
Python技术专栏 python 计算机视觉 opencv
一、车牌识别的基本原理车牌识别主要包括以下几个步骤:图像采集:通过摄像头或其他图像采集设备获取包含车牌的图像。图像预处理:对采集到的图像进行灰度化、滤波、增强等操作,以提高图像的质量和清晰度,便于后续的处理。车牌定位:从预处理后的图像中找出车牌的位置。这可以通过一些特征提取和机器学习算法来实现,例如基于颜色特征、边缘特征等方法来定位车牌区域。字符分割:将定位到的车牌区域中的字符分割开,以便对每个字
数学与机器学习:共舞于智能时代的双璧
每天五分钟玩转人工智能
机器学习 人工智能
随着人工智能的崛起,机器学习作为其核心技术之一,正引领着新一轮的科技革命。而在这场革命中,数学以其深邃的理论和精妙的工具,为机器学习提供了坚实的支撑。数学与机器学习之间的关系,如同琴瑟和鸣,共同编织出智能时代的华美乐章。数学,作为自然科学的皇后,以其严谨的逻辑和精确的推理,为机器学习提供了坚实的理论基础。机器学习算法的设计、优化和应用,都离不开数学的支持。无论是线性代数、概率统计,还是微积分、最优
scikit-learn基本功能和示例代码
weixin_30777913
深度学习 机器学习 python scikit-learn
scikit-learn(简称sklearn)是一个广泛使用的Python机器学习库,提供了丰富的工具和算法,涵盖了数据预处理、模型训练、评估和优化等多个方面。scikit-learn是一个功能强大的机器学习库,涵盖了数据预处理、分类、回归、聚类、降维、模型选择与评估等多个方面。通过上述代码示例,您可以快速上手并使用scikit-learn进行机器学习任务。以下是对scikit-learn主要功能
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的配置