冰封DE天翼
2015-04-27, 10:12
从网上下了一个RankBoost的实现源码,但是不知道输入输出,也找不到readme文件,所以很头疼啊。毕设最后一步,要把这个源码跑通,并且套用自己的数据,求大神指导。
贴上这个function的代码,后面有些注释是我加的,不知道对不对
%这个.m文件应该算是RankBoost算法的主文件,通过调用其他六个function文件,完成RankBoost算法的功能
clear all;
close all;
disp('RankBoostt');
%--------------------------------------------------------------------------
% Ranking parameters
%--------------------------------------------------------------------------
T=50; % number of boosting rounds
verbose=1;%定义变量verbose,并赋初值为1
plot_enable=1;
graph_type='full';%graph_type是意思是图类型?
%--------------------------------------------------------------------------
% Load a sample data set
%--------------------------------------------------------------------------
disp('Loading the Burges data set ...');
addpath G:\matlab\RankBoost %将文件夹添加到工作路径下
d=1;%d表示dimensionality,维数
S=6;%S表示Class,类数
N_train=100;%训练样本数为100个
N_test=94;%测试样本数为94个
N=N_train+N_test;%样本总数为训练样本与测试样本之和
[X,y]=Burges_data_1(d,N,S); %Burges_data_1?将Burges_data_1转成[X,y],也就是需要的数据格式。将Burges_data_1中第一行,第六页的N存入[X,y]中。
%个人认为,其中X是一个二维矩阵,y是一个一维矩阵,两者共同构成三维矩阵,接收Burges_data_1的值。
%[X,y]=Burges_data_2(d,N,S);
%--------------------------------------------------------------------------
% Split it into training and test set.
%--------------------------------------------------------------------------样本总数
disp('Splitting it into training and test set ...'); %将数据导入训练序列和测试序列
X_train=X(:,1:N_train);%将X中每行1到N_train列的值赋给X_train
y_train=y(:,1:N_train);%将y中每行1到N_train列的值赋给y_train
X_test=X(:,N_train+1:N);%将X中每行剩余的值赋给X_test
y_test=y(:,N_train+1:N);%将y中每行剩余的值赋给y_test
clear X;%Clear为清除变量
clear y;
%--------------------------------------------------------------------------
% Standardize the training data
%--------------------------------------------------------------------------
addpath ..\..\Data\%将文件夹添加到工作路径下,但是添加的是上一部分路径的上一目录,何解?
disp('Normalizing the data ...');%规范数据
whiten=1;
[X_train,mean_vector,A]=data_standardization(X_train,whiten,plot_enable);%标准化数据
%--------------------------------------------------------------------------
% Standardize the test data
%--------------------------------------------------------------------------
[X_test]=data_standardization_test_data(X_test,mean_vector,A,plot_enable);
%--------------------------------------------------------------------------
% Convert the data to a format which my code understands
%--------------------------------------------------------------------------
disp('Formatting the training data ...');%格式化数据
[data_train]=convert_data_to_ranking_format(X_train,y_train,graph_type);%将数据转成标准输入格式
clear X_train;
clear y_train;
disp('Formatting the test data ...');
[data_test]=convert_data_to_ranking_format(X_test,y_test,graph_type);
clear X_test;
clear y_test;
%--------------------------------------------------------------------------
% Train the model
%--------------------------------------------------------------------------
disp('Training using RankBoost ...');
[model,time_taken]=RankBoost_train(data_train,T,verbose,plot_enable);%进行训练
disp(sprintf('Time taken =%f seconds',time_taken));
%--------------------------------------------------------------------------
% Test the performance on the training set
%--------------------------------------------------------------------------
disp('Evaluating the performance on the training set ...');%在训练序列上进行性能评价
[o_train]=RankBoost_ranking_function(data_train.X_raw,T,model);
[WMW_train]=compute_WMW(data_train,o_train,1);
disp(sprintf('WMW of the training set =%f',WMW_train));
%--------------------------------------------------------------------------
% Test the performance on the test set
%--------------------------------------------------------------------------
disp('Evaluating the performance on the test set ...');%在测试序列上进行性能评价
[o_test]=RankBoost_ranking_function(data_test.X_raw,T,model);
[WMW_test]=compute_WMW(data_test,o_test,1);
disp(sprintf('WMW of the test set =%f',WMW_test));
%--------------------------------------------------------------------------
% Plot to see the ranking function learnt
%--------------------------------------------------------------------------
figure;
subplot(2,2,1);
plot(data_train.X_raw(1,:),data_train.y_raw,'b.');
hold on;
plot(data_train.X_raw(1,:),o_train,'r.');
title('Training data');
subplot(2,2,2);
plot(data_test.X_raw(1,:),data_test.y_raw,'b.');
hold on;
plot(data_test.X_raw(1,:),o_test,'r.');
title('Test data');
贴上这个function的代码,后面有些注释是我加的,不知道对不对
%这个.m文件应该算是RankBoost算法的主文件,通过调用其他六个function文件,完成RankBoost算法的功能
clear all;
close all;
disp('RankBoostt');
%--------------------------------------------------------------------------
% Ranking parameters
%--------------------------------------------------------------------------
T=50; % number of boosting rounds
verbose=1;%定义变量verbose,并赋初值为1
plot_enable=1;
graph_type='full';%graph_type是意思是图类型?
%--------------------------------------------------------------------------
% Load a sample data set
%--------------------------------------------------------------------------
disp('Loading the Burges data set ...');
addpath G:\matlab\RankBoost %将文件夹添加到工作路径下
d=1;%d表示dimensionality,维数
S=6;%S表示Class,类数
N_train=100;%训练样本数为100个
N_test=94;%测试样本数为94个
N=N_train+N_test;%样本总数为训练样本与测试样本之和
[X,y]=Burges_data_1(d,N,S); %Burges_data_1?将Burges_data_1转成[X,y],也就是需要的数据格式。将Burges_data_1中第一行,第六页的N存入[X,y]中。
%个人认为,其中X是一个二维矩阵,y是一个一维矩阵,两者共同构成三维矩阵,接收Burges_data_1的值。
%[X,y]=Burges_data_2(d,N,S);
%--------------------------------------------------------------------------
% Split it into training and test set.
%--------------------------------------------------------------------------样本总数
disp('Splitting it into training and test set ...'); %将数据导入训练序列和测试序列
X_train=X(:,1:N_train);%将X中每行1到N_train列的值赋给X_train
y_train=y(:,1:N_train);%将y中每行1到N_train列的值赋给y_train
X_test=X(:,N_train+1:N);%将X中每行剩余的值赋给X_test
y_test=y(:,N_train+1:N);%将y中每行剩余的值赋给y_test
clear X;%Clear为清除变量
clear y;
%--------------------------------------------------------------------------
% Standardize the training data
%--------------------------------------------------------------------------
addpath ..\..\Data\%将文件夹添加到工作路径下,但是添加的是上一部分路径的上一目录,何解?
disp('Normalizing the data ...');%规范数据
whiten=1;
[X_train,mean_vector,A]=data_standardization(X_train,whiten,plot_enable);%标准化数据
%--------------------------------------------------------------------------
% Standardize the test data
%--------------------------------------------------------------------------
[X_test]=data_standardization_test_data(X_test,mean_vector,A,plot_enable);
%--------------------------------------------------------------------------
% Convert the data to a format which my code understands
%--------------------------------------------------------------------------
disp('Formatting the training data ...');%格式化数据
[data_train]=convert_data_to_ranking_format(X_train,y_train,graph_type);%将数据转成标准输入格式
clear X_train;
clear y_train;
disp('Formatting the test data ...');
[data_test]=convert_data_to_ranking_format(X_test,y_test,graph_type);
clear X_test;
clear y_test;
%--------------------------------------------------------------------------
% Train the model
%--------------------------------------------------------------------------
disp('Training using RankBoost ...');
[model,time_taken]=RankBoost_train(data_train,T,verbose,plot_enable);%进行训练
disp(sprintf('Time taken =%f seconds',time_taken));
%--------------------------------------------------------------------------
% Test the performance on the training set
%--------------------------------------------------------------------------
disp('Evaluating the performance on the training set ...');%在训练序列上进行性能评价
[o_train]=RankBoost_ranking_function(data_train.X_raw,T,model);
[WMW_train]=compute_WMW(data_train,o_train,1);
disp(sprintf('WMW of the training set =%f',WMW_train));
%--------------------------------------------------------------------------
% Test the performance on the test set
%--------------------------------------------------------------------------
disp('Evaluating the performance on the test set ...');%在测试序列上进行性能评价
[o_test]=RankBoost_ranking_function(data_test.X_raw,T,model);
[WMW_test]=compute_WMW(data_test,o_test,1);
disp(sprintf('WMW of the test set =%f',WMW_test));
%--------------------------------------------------------------------------
% Plot to see the ranking function learnt
%--------------------------------------------------------------------------
figure;
subplot(2,2,1);
plot(data_train.X_raw(1,:),data_train.y_raw,'b.');
hold on;
plot(data_train.X_raw(1,:),o_train,'r.');
title('Training data');
subplot(2,2,2);
plot(data_test.X_raw(1,:),data_test.y_raw,'b.');
hold on;
plot(data_test.X_raw(1,:),o_test,'r.');
title('Test data');