m基于K-means和Label+Propagation的半监督网页分类-图像分割matlab仿真

简介: m基于K-means和Label+Propagation的半监督网页分类-图像分割matlab仿真

1.算法仿真效果
matlab2013b仿真结果如下:
8b2f0ec4327bee7724cb1b51397c3966_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
72c13058b5c91b5d7982b073798c1fb6_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
6f2d5f8621f90fb1f3c67d3e5e148b2a_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

运行结果如下所示:

ecc7241873f5acd5debba1868db42416_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
6bc197b9f874dff480cd1ad376a2da20_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

测试集的分类结果及分类正确率。

66351a837b64b12e1cc97bf7cf11ac32_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要

  首先“K均值算法”和“基于局部和全局一致性算法”的整合,并不是两个算法的简单拼凑,这里,实际上结合了“K均值算法”和“基于局部和全局一致性算法”两者算法的思想。根据你提供的算法思想,算法的基本步骤是:

  输入:数据集(其中训练样本和测试样本分别占一定的比例)和图像其中有少量样本已被标记类别,而且每一类至少标记一个训练样本。

Step1:计算少量有标记样本的均值,得到c(类别数目)个初始聚类中心点;

Step2:使用欧式距离计算未标记数据到c个初始中心点的距离,将未标记样本分配到距离中心点最近的那类中,划分出c个簇;

Step3:使用测地距离的相似性度量方法,选择各个簇中相似度大于等于0.9的()个(各个簇中的数目不一样)样本,求它们的均值,作为c个新中心点以及得到c个平均半径;

Step4:循环(2)(3),直到c个中心点固定;

Step5:对()个样本以及距离各个中心点半径内的样本进行标记;

Step6:用基于局部和全局一致性算法对剩下的未标记的样本进行标记,其中已标记数据只使用c个中心点;

Step7:在全部样本标记完后,再计算出各个类的c个中心点。

Step8:对于新的测试数据,通过计算测试数据与各个中心点的相似度,选择可信度最高的进行标记。


  输出:分别将数据集分成已标记和未标记以及测试数据集三部分,其中测试数据集占30%的比例,已标记和未标记的共占70%。用10折交叉验证法进行测试,输出F1-measure各个指标的结果,输出分类后的图像及指标结果。以已标记数据作为训练集,保证每个类别有一个已标记的训练集,然后按照不同的比例扩展训练集,一个数据集的precision和recall测试结果都是未标记数据和测试数据结果的均值。对数据集按已标记数据占得不同比例进行测试。

    半监督学习(Semi-supervised learning)发挥作用的场合是:你的数据有一些有label,一些没有。而且一般是绝大部分都没有,只有少许几个有label。半监督学习算法会充分的利用unlabeled数据来捕捉我们整个数据的潜在分布。它基于三大假设:

1)Smoothness平滑假设:相似的数据具有相同的label。

2)Cluster聚类假设:处于同一个聚类下的数据具有相同label。

3)Manifold流形假设:处于同一流形结构下的数据具有相同label。

标签传播算法(label propagation)的核心思想非常简单:相似的数据应该具有相同的label。LP算法包括两大步骤:1)构造相似矩阵(affinity matrix);2)勇敢的传播吧。

label propagation是一种基于图的算法。图是基于顶点和边组成的,每个顶点是一个样本,所有的顶点包括了有标签样本和无标签样本;边代表了顶点i到顶点j的概率,换句话说就是顶点i到顶点j的相似度。

3.MATLAB核心程序

%Step1:计算少量有标记样本的均值,得到c(类别数目)个初始聚类中心点
%Step1:计算少量有标记样本的均值,得到c(类别数目)个初始聚类中心点
 
 
[m0,n0,k0] = size(Is);
%如果图片太大,会导致out of memory的错误,这里需要将图片自动变小
I = imresize(Is,[round(m0/2) round(n0/2)]);
[m2,n2,k2] = size(I);
 
Xr            = (reshape((I(:,:,1))',1,m2*n2))';
Xg            = (reshape((I(:,:,2))',1,m2*n2))';
Xb            = (reshape((I(:,:,3))',1,m2*n2))';
X1            = [Xr,Xg,Xb];
 
rng(2)
tmp           = randperm(length(X1));
%随机产生聚类中心点
[n,d] = size(X1);
Col   = d;      %测试数据的列数
X     = X1(:,1:Col); 
nc    = X(tmp(1:k),:);            %随机C个初始聚类中心点
%Step1:任意进行标记
%Step1:任意进行标记:
nr             = zeros(1,k);
Dist           = sqdist(nc',X',1); %聚类中心到数据点的距离
[Dwin,Iwin]    = min(Dist',[],2);%Dwin 是Dist中每一列的最小值,Iwin是取最小值的行数k,都是n行1列的矩阵
                                     %将数据根据分类结果标号,分成C个簇,表上标记
v = sort(tmp(1:k));                                     
%进行部分标记
X_initial_sort(:,1:Col) = X;       %较初步的分类结果给数据标号
X_initial_sort(:,Col+1)=Iwin;
    %Step2:用基于局部和全局一致性算法对剩下的未标记的样本进行标记,其中已标记数据只使用c个中心点;(已有现成的程序)
    %Step2:用基于局部和全局一致性算法对剩下的未标记的样本进行标记,其中已标记数据只使用c个中心点;(已有现成的程序)
    %6.1选择没有被标记的数据集和
    Y  = produce_labelY2(X_initial_sort(:,Col+1),k);
    %进行部分标记
     
    
    yy = X_initial_sort(:,Col+1);
    best_s   = 0;
    best_a   = 0;
    sigma    = 0.076;
    alpha    = 0.959;
    [F,errors]        = LGC(X,Y,yy, sigma, alpha,delta2,k);
    %6.2根据计算得到的F值对未标记的数据进行标记
    for i=1:size(F,1)
        [values(i),indexxx(i)] = max(F(i,:));
    end
    X_initial_sort3 = X_initial_sort;
    X_initial_sort3(find(X_initial_sort(:,Col+1) == 0),Col+1) = indexxx(find(X_initial_sort(:,Col+1) == 0));
    %Step7:在全部样本标记完后,再计算出各个类的c个中心点。
    %Step7:在全部样本标记完后,再计算出各个类的c个中心点。
    %Step7:在全部样本标记完后,再计算出各个类的c个中心点。
    for i=1:k
        c_final(i,:) = mean(X_initial_sort3(find(X_initial_sort3(:,Col+1) == i),1:Col));
    end
    %Step3:产生分类后的图像值。
    %Step3:产生分类后的图像值。
    results = zeros(length(X1),3);
    for i  = 1:length(X1)
        results(i,:) =  c_final(X_initial_sort3(i,4),:);
    end
    I2(:,:,1) =  (reshape(results(:,1),n2,m2))'; 
    I2(:,:,2) =  (reshape(results(:,2),n2,m2))'; 
    I2(:,:,3) =  (reshape(results(:,3),n2,m2))'; 
figure;
subplot(121);imshow(uint8(I));title('原图');
subplot(122);imshow(uint8(I2)); title('分类结果图');
 
end
toc
相关文章
|
7天前
|
算法 Serverless
基于魏格纳函数和焦散线方法的自加速光束matlab模拟与仿真
本项目基于魏格纳函数和焦散线方法,使用MATLAB 2022A模拟自加速光束。通过魏格纳函数法生成多种自加速光束,并设计相应方法,展示仿真结果。核心程序包括相位和幅度的计算、光场分布及拟合分析,实现对光束传播特性的精确控制。应用领域涵盖光学成像、光操控和光束聚焦等。 关键步骤: 1. 利用魏格纳函数计算光场分布。 2. 模拟并展示自加速光束的相位和幅度图像。 3. 通过拟合分析,验证光束加速特性。 该算法原理基于魏格纳函数描述光场分布,结合数值模拟技术,实现对光束形状和传播特性的精确控制。通过调整光束相位分布,可改变其传播特性,如聚焦或加速。
|
7天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
4天前
|
机器学习/深度学习 算法 计算机视觉
基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM
本项目基于MATLAB2022A,利用CNN卷积神经网络对金融数据进行预测,并与BP、RBF和LSTM网络对比。核心程序通过处理历史价格数据,训练并测试各模型,展示预测结果及误差分析。CNN通过卷积层捕捉局部特征,BP网络学习非线性映射,RBF网络进行局部逼近,LSTM解决长序列预测中的梯度问题。实验结果表明各模型在金融数据预测中的表现差异。
|
6天前
|
移动开发 算法 计算机视觉
基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真
本项目基于分块贝叶斯非局部均值优化(OBNLM)算法实现图像去噪,使用MATLAB2022A进行仿真。通过调整块大小和窗口大小等参数,研究其对去噪效果的影响。OBNLM结合了经典NLM算法与贝叶斯统计理论,利用块匹配和概率模型优化相似块的加权融合,提高去噪效率和保真度。实验展示了不同参数设置下的去噪结果,验证了算法的有效性。
|
5天前
|
算法 决策智能
基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法
本项目基于MATLAB2022A,使用模拟退火(SA)和蚁群优化(ACO)算法求解旅行商问题(TSP),对比两者的仿真时间、收敛曲线及最短路径长度。SA源于金属退火过程,允许暂时接受较差解以跳出局部最优;ACO模仿蚂蚁信息素机制,通过正反馈发现最优路径。结果显示SA全局探索能力强,ACO在路径优化类问题中表现优异。
|
5月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
253 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
5月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
150 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
5月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
121 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
8月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)