資源簡介
一個協同訓練的小小的仿真,半監督學習算法,最初的協同訓練算法(或稱為標準協同訓練算法)是A. Blum和T. Mitchell [BlumM98] 在 1998年提出的

代碼片段和文件信息
clc;
clear;
%%?導入數據
data=importdata(‘mfeat-kar‘);
for?i=0:9
????for?j=1:200
????data(i*200+j:((i+1)*200)65)=i;
????end
end
%%?隨機劃分訓練集和測試集
N=size(data);
ind?=?randperm(N(1));?%產生一個隨機的排序
sample_train=data(ind(1:N(1)*0.5)1:65);?%隨機挑選出訓練樣本?50%
sample_test=data(ind(N(1)*0.5+1:end)1:65);?%隨機挑選出測試樣本?50%
%%?單獨10%訓練樣本的效果。?
%?by1=fitcnb(sample_train(:1:64)sample_train(:65));
%?R1=by1.predict(sample_test(:1:64));
%?cMat1=confusionmat(sample_test(:65)R1);
%?r=diag(cMat1);
%?accuracy1=(sum(r))/1000;
%%?將訓練集劃分為有標記的數據集L和無標記的數據集U???L/U=90%
????sample_train_L=sample_train(1:100:);???????%得到有標記訓練樣本占訓練集10%
????sample_train_U=sample_train(101:end1:64);??%得到無標記訓練樣本占訓練集90%
????L1=zeros(100033);
????L2=zeros(100033);
????%將L分為兩個視圖L1?和?L2
????L1(1:1001:32)=sample_train_L(1:1001:32);
????L1(1:10033)=sample_train_L(1:10065);
????L2(1:1001:32)=sample_train_L(1:10033:64);
????L2(1:10033)=sample_train_L(1:10065);
?????for?i=1:9
????????U11=sample_train_U(((i-1)*100+1):(i*100)1:32);?????????????????%?得到一個初始的無標記子集U‘
????????meas1=L1(1:(i*100)1:32);
????????species1=L1(1:(i*100)33);
????????by1=fitcnb(meas1species1);
????????R1=by1.predict(U11);
????????result1(1:1001:32)=L1(1:1001:32);
????????result1(1:10033)=R1(1:1001);
????????U12=sample_train_U(((i-1)*100+1):(i*100)33:64);????????????
????????meas2=L2(1:(i*100)1:32);
????????species2=L2(1:(i*100)33);
????????by2=fitcnb(meas2species2);
????????R2=by2.predict(U12);
????????result2(1:1001:32)=L2(1:1001:32);
????????result2(1:10033)=R2(1:1001);
????????L1((i*100+1):((i+1)*100):)=result2(1:100:);
????????L2((i*100+1):((i+1)*100):)=result1(1:100:);
?????end
%%?h1對測試集進行分類
sample_test_t1=sample_test(:1:32);???%測試集的樣本特征
sample_test_t2=sample_test(:33:64);?
sample_test_c=sample_test(:65);?????%測試集的類別
last_r1=by1.predict(sample_test_t1);
cMat1=confusionmat(sample_test_clast_r1);
r=diag(cMat1);
accuracy1=(sum(r))/1000;
%%?h2對測試集進行分類
last_r2=by2.predict(sample_test_t2);
cMat2=confusionmat(sample_test_clast_r2);
r2=diag(cMat2);
accuracy2=(sum(r2))/2000;
disp(‘accuracy=??‘);
if(accuracy1>=accuracy2)
????disp(accuracy1);
else
????disp(accuracy2);
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2370??2017-12-18?12:34??協同訓練\main.m
?????文件????1922000??1999-10-08?20:00??協同訓練\mfeat-kar
?????目錄??????????0??2017-06-19?10:49??協同訓練
-----------?---------??----------?-----??----
??????????????1924370????????????????????3
評論
共有 條評論