⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sgctrain.m

📁 一个关于数据聚类和模式识别的程序,在生物化学,化学中因该都可以用到.希望对大家有用,谢谢支持
💻 M
字号:
function [classParam, recogRate, hitIndex]=sgcTrain(DS, prior, plotOpt)
% sgcTrain: Training for single Gaussian classifier training
%	Usage: [classParam, recogRate, hitIndex]=sgcTrain(DS, prior, plotOpt)
%		DS: data set for classification
%		prior: a vector of class prior probability
%			(Equal prior probability will assume if an empty matrix is given.)
%		plotOpt: 1 for plotting
%		classParam: classParam(i) is the parameters for class i, etc.
%		recogRate: recognition rate
%		hitIndex: index of the correctly classified data points
%
%	For example:
%		DS=prData('iris');
%		DS.input=DS.input(3:4, :);
%		plotOpt=1;
%		classParam=sgcTrain(DS, [], plotOpt);

% Roger Jang, 20041123, 20080924

if nargin<1, selfdemo; return; end

[dim, dataNum]=size(DS.input);
uniqOutput=unique(DS.output);
classNum=length(uniqOutput);

if nargin<2, prior=ones(classNum, 1); end
if nargin<3, plotOpt=0; end

if isempty(prior), prior=ones(classNum, 1); end

% Identify parameters for each class
classParam=struct([]);
for i=1:length(uniqOutput)
	index=find(DS.output==uniqOutput(i));
	dataCount=length(index);
	temp=gaussianMle(DS.input(:, index)); classParam(i).mu=temp.mu; classParam(i).sigma=temp.sigma;		% How can we combine this into a single statement?
	classParam(i).invSigma=inv(classParam(i).sigma);
	classParam(i).gconst=-0.5*(dim*log(2*pi)+log(det(classParam(i).sigma)));
	classParam(i).weight=prior(i);
	classParam(i).name=uniqOutput(i);
end
[computedClass, recogRate, hitIndex]=sgcEval(DS, classParam, plotOpt);

if plotOpt & dim==2
	dcprDataPlot(DS);
	axis image; box on
	missIndex=1:dataNum;
	missIndex(hitIndex)=[];
	% display these points
	for i=1:length(missIndex),
		line(DS.input(1,missIndex(i)), DS.input(2,missIndex(i)), 'marker', 'x', 'color', 'k');
	end
	titleString = sprintf('%d error points denoted by "x".', length(missIndex));
	title(titleString);
end

% ====== Self demo
function selfdemo
DS=prData('iris');
DS.input=DS.input(3:4, :);
plotOpt=1;
classParam=feval(mfilename, DS, [], plotOpt);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -