Index: /prdatasets/Contents.m
===================================================================
--- /prdatasets/Contents.m	(revision 80)
+++ /prdatasets/Contents.m	(revision 80)
@@ -0,0 +1,60 @@
+%PRDATASETS: PRTools5 Pattern Recognition Datasets
+% Version 2.0 6-Aug-2013
+%
+%The following datasets can be loaded by commands like A = DATASET_NAME.
+%Most datasets have options to select classes or objects.
+%(m: #samples, k: #features  c:#classes)
+%
+% name        m     k   c  description
+%----------------------------------------------------------
+%x80          45    8   3  radial distances of characters
+%arrhythmia  420  278   2  presence or absence of cardia arrhythmia
+%auto_mpg*	 398    6   2  Car/miles-per-gallon
+%malaysia    291    8  20  segment features in utility symbols
+%biomed      194    5   2
+%breast*     683    9   2  Wisconsion breast cancer dataset
+%cbands    12000   30  24  chromosome banding patterns
+%chromo     1143    8  24  chromosome blob features
+%diabetes*   768    8   2  Pima Indians Diabetes Database
+%ecoli*      272    7   3  protein localisation sites
+%glass       214    9   4  glass types from chemical components
+%heart*      297   13   2  heart disease dataset
+%imox        192    8   4  radial distances of characters
+%ionosphere* 351   34   2  
+%iris        150    4   3  Fisher's Iris dataset
+%liver*      345    6   2  liver disorder
+%satellite* 6435   36   6
+%sonar*      208   60   2  rock / metal sonar features
+%soybean1*   266   35  19  large Soybeans
+%soybean2*   136   35   4  small Soybeans
+%spirals     194    2   2  spirals
+%twonorm    7400   20   2  Leo Breiman's two normal example.
+%ringnorm   7400   20   2  Leo Breiman's ringnorm example.
+%wine*       178   13   3  wine recognition
+%mfeat-fac  2000  216  10  Face features in digits dataset
+%mfeat-fou  2000   76  10  Fourier features in digits dataset
+%mfeat-kar  2000   64  10  Karhunen Loeve features in digits dataset
+%mfeat-pix  2000  240  10  Pixel features in digits dataset
+%mfeat-zer  2000   53  10  Zernike moments in digits dataset
+%mfeat-mor  2000    6  10  Morphological features in digits dataset
+%
+%   Multi-band images (pixels are objects, bands are features)
+%
+%emim31   128*128   8   1  8-band EM image
+%emim32   128*128   8   1  8-band EM image
+%emim33   128*128   8   1  8-band EM image
+%emim34   128*128   8   1  8-band EM image
+%emim37   256*256   8   1  8-band EM image
+%lena     256*256   3   1  full-color image
+%texturel 5*128*128 7   5  texture features for 5 different texture images
+%texturet 256*256   7   5  composite texture image
+%
+%    Image datasets (pixels are features, images are objects)
+%
+%kimia     216   64*64 18  resampled (64*64) Kimia dataset of silhouettes
+%nist32   5000   32*32 10  Resampled Nist digits
+%nist16   2000   16*16 10  Normalized Nist digits
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5038, 2600 GA Delft, The Netherlands
Index: /prdatasets/arrhythmia.m
===================================================================
--- /prdatasets/arrhythmia.m	(revision 80)
+++ /prdatasets/arrhythmia.m	(revision 80)
@@ -0,0 +1,53 @@
+%ARRHYTHMIA 420 objects with 278 features in 12 classes
+%
+%        X = ARRHYTHMIA(CLASS,VAL)
+%
+% The aim is to distinguish between the presence and absence of cardiac
+% arrhythmia and to classify it in one of the 16 groups. Class 01 refers
+% to 'normal' ECG classes 02 to 15 refers to different classes of
+% arrhythmia and class 16 refers to the rest of unclassified ones. 
+%
+%       X = ARRHYTHMIA(VAL);
+%
+% Per default the entries with missing values are removed. When you want
+% to do something else, use one of the options in missingvalues.m.
+function x = arrhythmia(val);
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/arrhythmia.dat');
+if nargin<1
+	val = 'remove';
+end
+
+user.desc='The Arrhymthmia database from UCI. The aim is to distinguish between the presence and absence of cardiac arrhythmia and to classify it in one of the 16 groups.';
+user.link = 'ftp://ftp.ics.uci.edu/pub/machine-learning-databases/arrhythmia';
+
+fl = {'age' 'sex' 'height' 'weight' 'QRS duration' 'P-R interval' ...
+'Q-T interval' 'T interval' 'P interval' 'QRS' 'T' 'P' 'QRST' ...
+'J' 'heartrate'};
+fl1 = {'Q wave width' 'R wave width' 'S wave width' 'R'' wave width' ...
+'S'' wave width' 'number of intrinsic deflections' ...
+'ragged R wave' 'diphasic derivation of R wave' ...
+'ragged P wave' 'diphasic derivation of P wave' ...
+'ragged T wave' 'diphasic derivation of T wave'};
+fl = [fl strcat('DI-',fl1) strcat('DII-',fl1) strcat('DIII-',fl1) ...
+strcat('AVR-',fl1) strcat('AVL-',fl1) strcat('AVF-',fl1) ...
+strcat('V1-',fl1) strcat('V2-',fl1) strcat('V3-',fl1) ...
+strcat('V4-',fl1) strcat('V5-',fl1) strcat('V6-',fl1)];
+fl2 = {'JJ wave ampl' 'Q wave ampl' 'R wave ampl' ...
+'S wave ampl' 'R'' wave ampl' 'S'' wave ampl' 'P wave ampl' ...
+'T wave ampl' 'QRSA sum' 'QRSTA'};
+fl = [fl strcat('DI-',fl2) strcat('DII-',fl2) strcat('DIII-',fl2) ...
+strcat('AVR-',fl2) strcat('AVL-',fl2) strcat('AVF-',fl2) ...
+strcat('V1-',fl2) strcat('V2-',fl2) strcat('V3-',fl2) ...
+strcat('V4-',fl2) strcat('V5-',fl2) strcat('V6-',fl2)];
+
+a = load('arrhythmia.dat');
+x = prdataset(a(:,1:(end-1)),a(:,end));
+x = setfeatlab(x,fl);
+x = setname(x,'Arrhythmia normal');
+x(:,14) = [];  % there are so many missing values, that I just remove this
+[x,msg] = prmissingvalues(x,val);
+user.desc = [user.desc msg];
+x = setuser(x,user);
+x = setlablist(x);
+return
Index: /prdatasets/auto_mpg.m
===================================================================
--- /prdatasets/auto_mpg.m	(revision 80)
+++ /prdatasets/auto_mpg.m	(revision 80)
@@ -0,0 +1,29 @@
+%AUTO_MPG Car/miles-per-gallon, 398 objects, 6 features, 2 classes
+%
+%	A = AUTO_MPG
+%
+% Load the dataset in A. This is the 'auto-mpg' dataset of the UCI
+% Machine Learning Repository, //www.ics.uci.edu/~mlearn/MLRepository.html
+%
+% See also DATASETS, PRDATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+% $Id: auto_mpg.m,v 1.1.1.1 2003/05/16 11:20:35 bob Exp $
+
+function a = auto_mpg;
+
+prdatasets(mfilename,1);
+a = prdataset('auto_mpg');
+a = setname(a,'Car/miles-per-gallon');
+
+a = setlablist(a,str2mat('< 25 mpg ','> 25 mpg'));
+a = setfeatlab(a,str2mat(...
+        'cylinders: multi-valued discrete', ...
+        'displacement: continuous', ...
+        'weight: continuous', ...
+        'acceleration: continuous', ...
+	'model year: multi-valued discrete', ...
+	'origin: multi-valued discrete'));
Index: /prdatasets/biomed.m
===================================================================
--- /prdatasets/biomed.m	(revision 80)
+++ /prdatasets/biomed.m	(revision 80)
@@ -0,0 +1,39 @@
+%BIOMED 194 objects with 5 features in 2 classes
+%
+%       X = BIOMED;
+%
+% The biomed dataset to develop screening methods to identify carriers
+% of a rare genetic disorder.  Because the disease is rare, there are
+% only a few carriers of the disease from whom data are available.
+%
+%       X = BIOMED(VAL);
+%
+% Per default the entries with missing values are removed. When you want
+% to do something else, use one of the options in missingvalues.m.
+% This is the ''biomed' dataset of the StatLib Datasets Archive, see
+% http://lib.stat.cmu.edu/datasets/
+%
+% SEE ALSO 
+% DATASETS, MISSINGVALUES
+
+function x = biomed(val)
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/biomed.dat');
+if nargin<1
+	val = 'remove';
+end
+
+user.desc = 'The purpose of the analysis is to develop a screening procedure to detect carriers and to describe its effectiveness. ';
+user.link = 'http://lib.stat.cmu.edu/datasets/';
+cl = {'carrier' 'normal'};
+fl = {'age' 'measurement 1' 'measurement 2' 'measurement 3' 'measurement 4'};
+
+a = load('biomed.dat');
+x = prdataset(a(:,[3 5 6 7 8]),cl(a(:,end)));
+x = setfeatlab(x,fl);
+x = setname(x,'Biomed');
+[x,msg] = prmissingvalues(x,val);
+user.desc = [user.desc msg];
+x = setuser(x,user);
+
+return
Index: /prdatasets/breast.m
===================================================================
--- /prdatasets/breast.m	(revision 80)
+++ /prdatasets/breast.m	(revision 80)
@@ -0,0 +1,42 @@
+%BREAST 699 objects with 9 features in 2 classes
+%
+%       X = BREAST;
+%
+% Breast cancer Wisconsin dataset obtained from the University of Wisconsin
+% Hospitals, Madison from Dr. William H. Wolberg.
+%
+% REFERENCE
+% O. L. Mangasarian and W. H. Wolberg: "Cancer diagnosis via linear 
+% programming", SIAM News, Volume 23, Number 5, September 1990, pp 1 & 18.
+%
+%       X = BREAST(VAL);
+%
+% Per default the missing values are replaced by -1. When you want to
+% do something else, use one of the options in missingvalues.m.
+function x = breast(val)
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/breastorg.dat');
+if nargin<1
+	val = -1;
+end
+
+user.desc='The original database of the Wisconsin Breast Cancer Databases from UCI, containing 699 instances, collected between 1989 and 1991. ';
+user.link = 'ftp://ftp.ics.uci.edu/pub/machine-learning-databases/breast-cancer-wisconsin/';
+cl = {'benign' 'malignant'};
+fl = {'Clump Thickness' 'Uniformity of Cell Size' ...
+'Uniformity of Cell Shape' 'Marginal Adhesion' ...
+'Single Epithelial Cell Size' 'Bare Nuclei' 'Bland Chromatin' ...
+'Normal Nucleoli' 'Mitoses'};
+
+a = load('breastorg.dat');
+J = find(a==-1);
+a(J) = NaN;
+nlab = a(:,end)/2;   % the labels for the classes are (2,4), very strange
+x = prdataset(a(:,2:(end-1)), cl(nlab) );
+x = setfeatlab(x,fl);
+x = setname(x,'Breast Wisconsin');
+[x,msg] = prmissingvalues(x,val);
+user.desc = [user.desc msg];
+x = setuser(x,user);
+
+return
Index: /prdatasets/car.m
===================================================================
--- /prdatasets/car.m	(revision 80)
+++ /prdatasets/car.m	(revision 80)
@@ -0,0 +1,30 @@
+%CAR 1728 objects with 6 features in 4 classes
+%
+%  A = CAR
+%
+% The Car Evaluation Database was derived from a simple hierarchical
+% decision model originally developed for the demonstration of DEX (M.
+% Bohanec, V. Rajkovic: Expert system for decision making. Sistemica
+% 1(1), pp. 145-157, 1990.). All 6 features are nominal.
+% The instances completely cover the attribute space.
+function x = car
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/car.data');
+% for some mysterious reason it appeared to be necessary on my Windows 7
+% system to repeat this command
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/car.data');
+user.desc = 'Car Evaluation Database was derived from a simple hierarchical decision model originally developed for the demonstration of DEX (M. Bohanec, V. Rajkovic: Expert system for decision making. Sistemica 1(1), pp. 145-157, 1990.).';
+fl = {'buying price' 'maintenance price' 'nr of doors' 'nr of persons' 'luggage boot' 'safety'};
+
+[a,strvals] = prreaddataset('car.data',ones(7,1));
+labs = strvals{end}(a(:,end));
+for i=1:6
+	featdom{i} = strvcat(strvals{i}');
+end
+x = prdataset(a(:,1:(end-1)), labs);
+x = setfeatlab(x,fl);
+x = setfeatdom(x,featdom);
+x = setuser(x,user);
+x = setname(x,'Car');
+
+return
Index: /prdatasets/cbands.m
===================================================================
--- /prdatasets/cbands.m	(revision 80)
+++ /prdatasets/cbands.m	(revision 80)
@@ -0,0 +1,19 @@
+%CBANDS 12000 objects with 30 features in 24 classes
+%
+%	A = CBANDS
+%
+% Load the dataset in A. These are resampled human chromosome banding
+% profiles, such that each chromosome is represented by 30 samples. Note
+% that these techniques are almost not used anymore.
+%
+% See also DATASETS, PRDATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = cbands
+
+prdatasets(mfilename,1);
+a = prdataset('cbands');
+a = setname(a,'Chromosome Bands');
Index: /prdatasets/chromo.m
===================================================================
--- /prdatasets/chromo.m	(revision 80)
+++ /prdatasets/chromo.m	(revision 80)
@@ -0,0 +1,16 @@
+%CHROMO 1143 objects with 8 features in 24 classes
+%
+%	A = CHROMO
+%
+% Load the dataset in A. The features are blob characteristics of
+% thresholded chromosomes. This technique is outdated.
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = chromo
+
+prdatasets(mfilename,1);
+a = prdataset('chromo');
+a = setname(a,'Chromosome Features');
Index: /prdatasets/diabetes.m
===================================================================
--- /prdatasets/diabetes.m	(revision 80)
+++ /prdatasets/diabetes.m	(revision 80)
@@ -0,0 +1,26 @@
+%DIABETES 768 objects with 8 features in 2 classes
+%
+%        X = DIABETES
+%
+% Pima-indians diabetes database from National Institute of Diabetes and
+% Digestive and Kidney Diseases. This is the 'Pima Indians Diabetes' 
+% dataset of the UCI Machine Learning Repository, 
+% //www.ics.uci.edu/~mlearn/MLRepository.html
+
+function x = diabetes
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/diabetes.dat');
+user.desc='The Pima Indians Diabetes Database from UCI.';
+user.link = 'ftp://ftp.ics.uci.edu/pub/machine-learning-databases/pima-indians-diabetes/';
+cl = {'present' 'absent'};
+fl = {'NumPregnancies' 'plasmaGlucose' 'diastolicBloodPr' ...
+'tricepsSkinfold' '2hrSerumInsulin' 'BodyMassIndex' ...
+'DiabetesPedigreeFn' 'Age'};
+
+a = load('diabetes.dat');
+x = prdataset(a(:,1:(end-1)),cl(a(:,end)+1));
+x = setfeatlab(x,fl);
+x = setname(x,'Diabetes');
+x = setuser(x,user);
+
+return
Index: /prdatasets/ecoli.m
===================================================================
--- /prdatasets/ecoli.m	(revision 80)
+++ /prdatasets/ecoli.m	(revision 80)
@@ -0,0 +1,26 @@
+%ECOLI 336 objects with 7 features in 8 classes
+%
+%      X = ECOLI
+%
+% Predict the localization site of protein in a cell, by Kenta Nakai
+% Institue of Molecular and Cellular Biology Osaka, University
+% This is the 'Ecoli'  dataset of the UCI Machine Learning Repository, 
+% //www.ics.uci.edu/~mlearn/MLRepository.html
+function x = ecoli
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/ecoli.dat');
+user.desc='The Ecoli database from UCI. Goal is to Predict the localization site of protein in a cell, by Kenta Nakai Institue of Molecular and Cellular Biology Osaka, University.';
+user.link = 'ftp://ftp.ics.uci.edu/pub/machine-learning-databases/ecoli/';
+cl = {'cytoplasm' 'inner membrane without signal sequence' ...
+'periplasm' 'inner membrane, uncleavable signal sequence' ...
+'outer membrane' 'outer membrane lipoprotein' ...
+'inner membrane lipoprotein' 'inner membrane, cleavable signal sequence'};
+fl = {'mcg' 'gvh' 'lip' 'chg' 'aac' 'alm1' 'alm2'};
+
+a = load('ecoli.dat');
+x = prdataset(a(:,1:(end-1)),cl(a(:,end)));
+x = setfeatlab(x,fl);
+x = setname(x,'Ecoli');
+x = setuser(x,user);
+
+return
Index: /prdatasets/emim.m
===================================================================
--- /prdatasets/emim.m	(revision 80)
+++ /prdatasets/emim.m	(revision 80)
@@ -0,0 +1,34 @@
+%EMIM Load 8-band electron microscope images 
+%
+%	A = EMIM(N)
+%
+% Return image N as the dataset A. In this dataset the pixels of an 
+% electron-microscope image are represented as objects with 8 features.
+% These represent the bands of the EM image. There are 5 images available,
+% encoded by N = 31, 32, 33, 34 and 37. Default is N = 31. The first four
+% images have size 128x128. The image with N=37 has size 256x256. 
+%
+% The segmentation of such images has been studied in:
+% P. Paclik, R.P.W. Duin, G.M.P. van Kempen, and R. Kohlus, Segmentation of
+% multi-spectral images using the combined classifier approach, Image and
+% Vision Computing Journal, vol. 21, no. 6, 2003, 473-482.
+%
+% See also DATASETS, PRDATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5038, 2600 GA Delft, The Netherlands
+
+function a = emim(n)
+
+if nargin ==0, n=31; end
+
+if all([31,32,33,34,37]~=n)
+	error('Images should be coded by N = 31, 32, 33, 34 or 37')
+end
+
+name = ['emim' num2str(n)];
+prdatasets(mfilename,1,['http://prtools.org/prdatasets/' name '.mat']);
+a = prdataset(name);
+a = setname(a,['EM' num2str(n) ' Image Delft']);
+
Index: /prdatasets/glass.m
===================================================================
--- /prdatasets/glass.m	(revision 80)
+++ /prdatasets/glass.m	(revision 80)
@@ -0,0 +1,37 @@
+%GLASS Glass Identification Dataset, 214 objects,9 features, 4 classes
+%
+%	A = GLASS
+%
+% Load the dataset in A. This is a 4-class version of the originally
+% 7-class dataset describing the chemical components in several types of
+% glasses. The original class 4 is not available and we combined the
+% classes 5-7 as 'Other'.
+% BuildingFloat:   -- building_windows_float_processed
+% BuildingNonFloat:-- building_windows_non_float_processed
+% Car:             -- vehicle_windows_float_processed
+% Other:           -- containers tableware headlamps
+%
+% REFERENCE: http://www.ics.uci.edu/~mlearn/databases/glass/glass.names
+%
+% See also DATASETS, PRDATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = glass
+
+prdatasets(mfilename,1);
+a = prdataset('glass');
+a = setname(a,'Glass Identification Dataset');
+a = setlablist(a,str2mat('BuildingFloat','BuildingNonFloat','Car','Other'));
+a = setfeatlab(a,str2mat(...
+        'refractive index', ...
+        'sodium', ...
+        'magnesium', ...
+		'aluminium', ...
+		'silicon', ...
+		'potassium', ...
+		'calcium', ...
+		'barium', ...
+		'iron'));
Index: /prdatasets/heart.m
===================================================================
--- /prdatasets/heart.m	(revision 80)
+++ /prdatasets/heart.m	(revision 80)
@@ -0,0 +1,37 @@
+%HEART 303 objects with 13 features in 2 classes
+%
+%       X = HEART;
+%
+% Heart-Cleveland dataset from the Hungarian Institute of Cardiology.
+% Budapest: Andras Janosi, M.D.
+%
+%       X = HEART(VAL);
+%
+% Per default the missing values are replaced by -1. When you want to
+% do something else, use one of the options in missingvalues.m.
+function x = heart(val)
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/heart.dat');
+if nargin<1
+	val = 'remove';
+end
+
+user.desc='The Cleveland database from the Heart Disease Databases from UCI.  The class disease-presence is used as target class. ';
+user.link = 'ftp://ftp.ics.uci.edu/pub/machine-learning-databases/heart-cleveland/';
+cl = {'absent' 'present'};
+fl = {'age' 'sex' 'cp' 'trestbps' 'chol' 'fbs' 'restecg' ...
+	'thalach' 'exang' 'oldpeak' 'slope' 'ca' 'thal'};
+fd = {[0 inf; 0 inf] [0 1] [1 2 3 4] [0 inf; 0 inf] [0 inf; 0 inf]...
+[0 1] [0 1 2] [0 inf; 0 inf] [0 1] [0 inf; 0 inf] [1 2 3] [-1 0 1 2 3] [3 6 7]};
+
+a = load('heart.dat');
+lab = (a(:,end)>0);
+x = prdataset(a(:,1:(end-1)),cl(lab+1));
+x = setfeatlab(x,fl);
+x = setname(x,'Heart Cleveland');
+x = setfeatdom(x,fd);
+[x,msg] = prmissingvalues(x,val);
+user.desc = [user.desc msg];
+x = setuser(x,user);
+
+return
Index: /prdatasets/hepatitis.m
===================================================================
--- /prdatasets/hepatitis.m	(revision 80)
+++ /prdatasets/hepatitis.m	(revision 80)
@@ -0,0 +1,34 @@
+%HEPATITIS 155 objects with 19 features in 2 classes
+%
+%             X = HEPATITIS
+%
+% The hepatitis database from UCI to predict if the patient will live or
+% die.
+%
+%             X = HEPATITIS(VAL);
+%
+% Per default the missing values are replaced by the mean value of the
+% corresponding feature. When you want to do something else, use one of
+% the options in missingvalues.m.
+function x = hepatitis(val);
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/hepatitis.dat');
+if nargin<1
+	val = 'mean';
+end
+
+user.desc = 'The hepatitis database from UCI to predict if the patient will live or die.';
+user.link = 'ftp://ftp.ics.uci.edu/pub/machine-learning-databases/hepatitis/';
+cl = {'die' 'live'};
+fl = {'age' 'sex' 'steroid' 'antivirals' 'fatigue' 'malaise' ...
+'anorexia' 'liver big' 'liver firm' 'spleen palpable' 'spiders' ...
+'ascites' 'varices' 'bilirubin' 'alk phosphate' 'sgot' 'albumin' ...
+'protime' 'histology'};
+
+a = load('hepatitis.dat');
+x = prdataset(a(:,2:end),cl(a(:,1)));
+x = setfeatlab(x,fl);
+x = setname(x,'Hepatitis');
+[x,msg] = prmissingvalues(x,val);
+user.desc = [user.desc msg];
+x = setuser(x,user);
Index: /prdatasets/imox.m
===================================================================
--- /prdatasets/imox.m	(revision 80)
+++ /prdatasets/imox.m	(revision 80)
@@ -0,0 +1,30 @@
+%IMOX Handwritten character dataset, 192 objects, 8 features, 4 classes
+%
+%	A = IMOX
+%
+% Load the dataset in A. The features are the distances from a bounding box
+% to the pixels of a set of handwritten characters 'I', 'M', 'O', and 'X',
+% measured form the corners along the diagnoals and from the edge midpoints
+% along the horizontal and vertical central axes.
+%
+% See also DATASETS, PRDATASETS, X80
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = imox;
+
+prdatasets(mfilename,1);
+a = prdataset('imox');
+a = setname(a,'IMOX Dataset');
+a = setlablist(a,str2mat('I','M','O','X'));
+a = setfeatlab(a,str2mat(...
+        'diagonal from top-left', ...
+        'vertical from top-center', ...
+        'diagonal from top-right', ...
+		'horizontal from right-center', ...
+		'diagonal from bottom-right', ...
+		'vertical from bottom-center', ...
+		'diagonal from bottom-left', ...
+		'horizontal from left-center'));
Index: /prdatasets/ionosphere.m
===================================================================
--- /prdatasets/ionosphere.m	(revision 80)
+++ /prdatasets/ionosphere.m	(revision 80)
@@ -0,0 +1,25 @@
+%IONOSPHERE 351 objects, 34 features, 2 classes
+%           Johns Hopkins University ionosphere dataset
+%
+%	A = IONOSPHERE
+%	A = IONOSPHERE(M,N)
+%
+% Load the dataset in A. This is the Johns Hopkins University ionosphere
+% dataset from the UCI Machine Learning Repository, 
+% //www.ics.uci.edu/~mlearn/MLRepository.html
+%
+% See also DATASETS, PRDATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = ionosphere
+
+prdatasets(mfilename,1);
+% the stats toolbox has a ionosphere.mat file too, avoid it
+pp = fileparts(which(mfilename));
+a = prdataset(fullfile(pp,'ionosphere'));
+a = setname(a,'Ionosphere Dataset');
+a = setlablist(a,{'good','bad'});
+
Index: /prdatasets/iris.m
===================================================================
--- /prdatasets/iris.m	(revision 80)
+++ /prdatasets/iris.m	(revision 80)
@@ -0,0 +1,23 @@
+%IRIS 150 objects with 4 features in 3 classes
+%
+%  A = IRIS
+%
+% Iris plants dataset by R.A.Fisher, 150 objects, 4 features, 3
+% classes.
+function x = iris;
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/iris.dat');
+user.desc = 'Iris Plant database from UCI. A classic dataset in the pattern recognition literature.  The original dataset is a multiclass classification problem, introduced by R.A. Fisher, The use of multiple measurements in taxonomic problems. Ann Eugenics, 7:179--188, 1936.';
+user.link = 'ftp://ftp.ics.uci.edu/pub/machine-learning-databases/iris/';
+cl = {'Iris-setosa' 'Iris-versicolor' 'Iris-virginica'};
+fl = {'sepal length' 'sepal width' 'petal length' 'petal width'};
+
+% the fuzzy toolbox has a iris.dat file too, avoid it
+pp = fileparts(which(mfilename));
+a = load(fullfile(pp,'iris.dat'));
+x = prdataset(a(:,1:(end-1)), cl(a(:,end)));
+x = setfeatlab(x,fl);
+x = setuser(x,user);
+x = setname(x,'Iris');
+
+return
Index: /prdatasets/kimia.m
===================================================================
--- /prdatasets/kimia.m	(revision 80)
+++ /prdatasets/kimia.m	(revision 80)
@@ -0,0 +1,26 @@
+%KIMIA 216 objects given by 32 x 32 pixels (features) in 18 classes
+%
+% 	A = KIMIA
+%
+% There are 216 binary images, 18 classes with 12 objects each.
+% The original image sizes of 146 x 156 have been reduced to 32 x 32.
+% The full images are still available as KIMIA_IMAGES in PRDATAFILES
+% The images are taken from:
+% http://www.lems.brown.edu/vision/researchAreas/SIID/
+%
+% See also DATASETS, PRDATASETS, PRDATAFILES, PRDATAFILES/KIMIA_IMAGES
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = kimia;
+
+prdatasets(mfilename,1);
+labs = {'bone' 'glass' 'heart' 'misk' 'bird' 'brick' 'camel' ...
+	 'car' 'children' 'van' 'elephant' 'head' 'fork' 'fountain' ...
+ 	 'hammer' 'key' 'ray' 'turtle'};
+a = prdataset('kimia');
+a = setlablist(a,labs);
+a = setname(a,'Kimia Dataset');
+
Index: /prdatasets/lena.m
===================================================================
--- /prdatasets/lena.m	(revision 80)
+++ /prdatasets/lena.m	(revision 80)
@@ -0,0 +1,20 @@
+%LENA 256 x 256 objects (pixels) with 3 features (red, green, blue)
+%
+%	A = LENA
+%
+% Load the dataset in A. This is a reduced version of the original Lena
+% image in PRTools format. Pixels are objects and colors are features.
+%
+% See also DATASETS, PRDATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = lena
+
+prdatasets(mfilename,2);
+s = warning;
+a = prdataset('lena');
+a = setfeatlab(a,['red  ';'green';'blue ']);
+a = setname(a,'Lena');
Index: /prdatasets/liver.m
===================================================================
--- /prdatasets/liver.m	(revision 80)
+++ /prdatasets/liver.m	(revision 80)
@@ -0,0 +1,28 @@
+%LIVER Liver disorder dataset, 345 objects, 6 features, 2 classes
+%
+%	A = LIVER
+%
+% Load the dataset in A, select the objects and features according to the
+% index vectors M and N. This is the Liver-disorders database from the UCI
+% Machine Learning Repository, //www.ics.uci.edu/~mlearn/MLRepository.html
+%
+% See also DATASETS, PRDATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = liver
+
+prdatasets(mfilename,1);
+a = prdataset('liver');
+a = setname(a,'Liver disorder dataset');
+
+a = setlablist(a,str2mat('healthy','disorder'));
+a = setfeatlab(a,str2mat(...
+        'mean corpuscular volume', ...
+        'alkaline phosphotase', ...
+        'alamine aminotransferase', ...
+		'aspartate aminotransferase', ...
+		'gamma-glutamyl transpeptidase', ...
+		'half-pint equivalents'));
Index: /prdatasets/malaysia.m
===================================================================
--- /prdatasets/malaysia.m	(revision 80)
+++ /prdatasets/malaysia.m	(revision 80)
@@ -0,0 +1,18 @@
+%MALAYSIA 291 objects with 8 features in 20 classes
+%
+%	A = MALAYSIA
+%
+% Load the dataset in A. This dataset concerns simple measurements on
+% segments of utility symbols.
+%
+% See also DATASETS, PRDATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5038, 2600 GA Delft, The Netherlands
+
+function a = malaysia;
+
+prdatasets(mfilename,1);
+a = prdataset('malaysia');
+a = setname(a,'Malaysia Data');
Index: /prdatasets/mfeat.m
===================================================================
--- /prdatasets/mfeat.m	(revision 80)
+++ /prdatasets/mfeat.m	(revision 80)
@@ -0,0 +1,37 @@
+%MFEAT 2000 objects with 649 features in 10 classes
+%
+%	A = MFEAT
+%
+% Load all MFEAT datasets in A. This dataset consists of features of 
+% handwritten numerals (`0'--`9') extracted from a collection of Dutch 
+% utility maps. Six different feature sets are extracted and stored 
+% separately. This command loads them all, in the following order:
+%
+% MFEAT_FAC, MFEAT_FOU, MFEAT_KAR, MFEAT_MOR, MFEAT_PIX, MFEAT_ZER
+%
+% The corresponding feature vectors are concatenated.
+%
+% REFERENCES
+% [1] A.K. Jain, R.P.W. Duin, and J. Mao, Statistical Pattern Recognition:
+% A Review, IEEE Transactions on Pattern Analysis and Machine Intelligence,
+% vol. 22, no. 1, 2000, 4-37.
+% [2] R.P.W. Duin and D.M.J. Tax, Experiments with Classifier Combining
+% Rules, in: J. Kittler, F. Roli (eds.), Multiple Classifier Systems ,
+% LNCS, vol. 1857, Springer, Berlin, 2000, 16-29.
+%
+% See also DATASETS, PRDATASETS, 
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = mfeat
+
+a = mfeat_fac;
+a = [a mfeat_fou];
+a = [a mfeat_kar];
+a = [a mfeat_mor];
+a = [a mfeat_pix];
+a = [a mfeat_zer];
+
+a = setname(a,'MFEAT Combined Features');
Index: /prdatasets/mfeat_all.m
===================================================================
--- /prdatasets/mfeat_all.m	(revision 80)
+++ /prdatasets/mfeat_all.m	(revision 80)
@@ -0,0 +1,33 @@
+%MFEAT_ALL Load all MFEAT datasets in a cell array
+%
+%	A = MFEAT
+%
+% This command loads all MFEAT datasets in the following order:
+%
+% MFEAT_FAC, MFEAT_FOU, MFEAT_KAR, MFEAT_MOR, MFEAT_PIX, MFEAT_ZER.
+%
+% A = returned as a cell array of datasets.
+%
+% REFERENCES
+% [1] A.K. Jain, R.P.W. Duin, and J. Mao, Statistical Pattern Recognition:
+% A Review, IEEE Transactions on Pattern Analysis and Machine Intelligence,
+% vol. 22, no. 1, 2000, 4-37.
+% [2] R.P.W. Duin and D.M.J. Tax, Experiments with Classifier Combining
+% Rules, in: J. Kittler, F. Roli (eds.), Multiple Classifier Systems ,
+% LNCS, vol. 1857, Springer, Berlin, 2000, 16-29.
+%
+% See also DATASETS, PRDATASETS, 
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = mfeat_all
+
+a = cell(1,6);
+a{1} = mfeat_fac;
+a{2} = mfeat_fou;
+a{3} = mfeat_kar;
+a{4} = mfeat_mor;
+a{5} = mfeat_pix;
+a{6} = mfeat_zer;
Index: /prdatasets/mfeat_fac.m
===================================================================
--- /prdatasets/mfeat_fac.m	(revision 80)
+++ /prdatasets/mfeat_fac.m	(revision 80)
@@ -0,0 +1,18 @@
+%MFEAT_FAC 2000 objects with 216 features in 10 classes
+%
+%	A = MFEAT_FAC
+%
+% Load the dataset in A. These are the face features (projection on
+% horizontal and vertical axes).
+%
+% See also DATASETS, PRDATASETS, MFEAT
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = mfeat_fac
+
+prdatasets(mfilename,1);
+a = prdataset('mfeat_fac');
+a = setname(a,'MFEAT Face Features');
Index: /prdatasets/mfeat_fou.m
===================================================================
--- /prdatasets/mfeat_fou.m	(revision 80)
+++ /prdatasets/mfeat_fou.m	(revision 80)
@@ -0,0 +1,17 @@
+%MFEAT_FOU 2000 objects with 76 features in 10 classes
+%
+%	A = MFEAT_FOU
+%
+% Load the dataset in A. These are the Fourier features.
+%
+% See also DATASETS, PRDATASETS, MFEAT
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = mfeat_fou
+
+prdatasets(mfilename,1);
+a = prdataset('mfeat_fou');
+a = setname(a,'MFEAT Fourier Features');
Index: /prdatasets/mfeat_kar.m
===================================================================
--- /prdatasets/mfeat_kar.m	(revision 80)
+++ /prdatasets/mfeat_kar.m	(revision 80)
@@ -0,0 +1,17 @@
+%MFEAT_KAR 2000 objects with 64 features in 10 classes
+%
+%	A = MFEAT_KAR
+%
+% Load the dataset in A. These are the Karhunen-Loeve moments.
+%
+% See also DATASETS, PRDATASETS, MFEAT
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = mfeat_kar
+
+prdatasets(mfilename,1);
+a = prdataset('mfeat_kar');
+a = setname(a,'MFEAT KL Features');
Index: /prdatasets/mfeat_mor.m
===================================================================
--- /prdatasets/mfeat_mor.m	(revision 80)
+++ /prdatasets/mfeat_mor.m	(revision 80)
@@ -0,0 +1,17 @@
+%MFEAT_MOR 2000 objects with 6 features in 10 classes
+%
+%	A = MFEAT_MOR
+%
+% Load the dataset in A. These are some morphological features.
+%
+% See also DATASETS, PRDATASETS, MFEAT
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = mfeat_mor
+
+prdatasets(mfilename,1);
+a = prdataset('mfeat_mor');
+a = setname(a,'MFEAT Morphological Features');
Index: /prdatasets/mfeat_pix.m
===================================================================
--- /prdatasets/mfeat_pix.m	(revision 80)
+++ /prdatasets/mfeat_pix.m	(revision 80)
@@ -0,0 +1,18 @@
+%MFEAT_PIX 2000 objects with 240 features in 10 classes
+%
+%	A = MFEAT_PIX
+%
+% Load the dataset in A. These are averages of groups of 2x3 pixels.
+% The original images can be roughly reconstructed from them.
+%
+% See also DATASETS, PRDATASETS, MFEAT
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = mfeat_pix
+
+prdatasets(mfilename,1);
+a = prdataset('mfeat_pix');
+a = setname(a,'MFEAT Pixel Features');
Index: /prdatasets/mfeat_zer.m
===================================================================
--- /prdatasets/mfeat_zer.m	(revision 80)
+++ /prdatasets/mfeat_zer.m	(revision 80)
@@ -0,0 +1,17 @@
+%MFEAT_ZER 2000 objects with 47 features in 10 classes
+%
+%	A = MFEAT_ZER
+%
+% Load the dataset in A. These are the Zernike moments.
+%
+% See also DATASETS, PRDATASETS, MFEAT
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = mfeat_zer
+
+prdatasets(mfilename,1);
+a = prdataset('mfeat_zer');
+a = setname(a,'MFEAT Zernike Moments');
Index: /prdatasets/nist16.m
===================================================================
--- /prdatasets/nist16.m	(revision 80)
+++ /prdatasets/nist16.m	(revision 80)
@@ -0,0 +1,19 @@
+%NIST16 2000 normalised digits given by 16x16 pixels (features) in 10 classes
+%
+%	A = NIST16
+%
+% Load the dataset in A. This is a subset of the NIST handprinted digits,
+% normalised and sampled on 16x16 pixels.
+%
+% See also DATASETS, PRDATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = nist16
+
+prdatasets(mfilename,1);
+a = prdataset('nist16');
+a = setname(a,'NIST16 Normalised Digits');
+
Index: /prdatasets/prmissingvalues.m
===================================================================
--- /prdatasets/prmissingvalues.m	(revision 80)
+++ /prdatasets/prmissingvalues.m	(revision 80)
@@ -0,0 +1,52 @@
+function [x,msg] = prmissingvalues(x,val)
+%PRMISSINGVALUES Fix the missing values in a dataset
+%
+%          [X,MSG] = PRMISSINGVALUES(X,VAL)
+%
+% Fix the missing values (represented by NaN's) in dataset X. String MSG
+% gives a text message of what has been done.
+%
+% The following values VAL are possible:
+%          'remove'     remove entries that contain missing values
+%          'mean'       fill the entries with the mean of their 
+%                       respective column
+%          <value>      fill the entries with a fixed constant
+%
+% See also datasets
+
+% Copyright: D.M.J. Tax, D.M.J.Tax@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+% Where are the offenders?
+I = isnan(x);
+
+% If there are missing values, go:
+if any(I(:))
+	switch val
+	case {'remove' 'delete'}
+		I = find(sum(I,2)==0);
+		x = x(I,:);
+		msg = 'Entries with missing values have been removed.';
+	case 'mean'
+		k = size(x,2);
+		for i=1:k
+			J = ~I(:,i);
+			if any(I(:,i)) %is there a missing value in this feature?
+				if ~any(J)
+					error('Missing value cannot be filled: all values are NaN.');
+				end
+				mn = mean(x(J,i));
+				x(find(I(:,i)),i) = mn;
+			end
+		end
+		msg = 'Missing values have been replaced by the mean of the feature.';
+	otherwise
+		if ~isa(val,'double')
+			error('Missing values can only be filled by scalars.');
+		end
+		x(I) = val;
+		msg = sprintf('Missing values have been replaced by %f.',val);
+	end
+end
+return
Index: /prdatasets/prreaddataset.m
===================================================================
--- /prdatasets/prreaddataset.m	(revision 80)
+++ /prdatasets/prreaddataset.m	(revision 80)
@@ -0,0 +1,132 @@
+function [x,strvals] = prreaddataset(fname,strtype)
+%     [X,STRVALS] = PRREADDATASET(FNAME)
+%
+% Read the dataset from the text file FNAME. It can process categorical
+% features, or features for which categories are given in text. A matrix
+% X is returned containing the numerical values, or integers. The
+% integers point to the entry in STRVALS containing for each
+% (categorical) feature its string members.
+%
+%     X = PRREADDATASET(FNAME,STRTYPE)
+%
+% The user can supply a vector STRTYPE that indicates for each feature
+% if it is numerical (0) or string/categorical (1).
+%
+%     X = PRREADDATASET(FNAME,STRTYPE,DELIMITER)
+%
+% For datasets that have a strange delimiter (not comma or space), you
+% have to supply it.
+if nargin<3
+	delimiter = ',';
+end
+if nargin<2
+	strtype = [];
+end
+
+% try to open the file
+[fid,message] = fopen(fname,'r');
+if fid==-1
+	disp(message)
+	error('I cannot open file %s.',fname);
+end
+% get the first line:
+dline = fgetl(fid);
+% check if the delimiter is present:
+I = find(dline==delimiter);
+if isempty(I)
+	delimiter = ' ';
+	I = find(dline==delimiter);
+	if isempty(I)
+		error('Cannot determine the delimiter');
+	end
+end
+
+% now run over all elements in the line:
+I = [0 I length(dline)+1];
+w = {};
+for i=1:length(I)-1
+	w{i} = dline((I(i)+1):(I(i+1)-1));
+end
+
+% remove the empty entries:
+I = zeros(length(w),1);
+for i=1:length(w)
+	if isempty(w{i})
+		I(i) = 1;
+	end
+end
+w(find(I)) = [];
+n = length(w);
+x = [];
+
+% see if we have strings or numbers, and put the result in the matrix:
+strvals = {};
+if isempty(strtype)
+	for i=1:n
+		num = str2double(w{i});
+		if isnan(num)   % the feature is string
+			strtype(i) = 1;   % remember that it is a string
+			strvals{i}{1} = w{i}; % put it to the collection
+			x(1,i) = 1;
+		else               % feature is a number, life is simple
+			strtype(i) = 0;
+			x(1,i) = num;
+		end
+	end
+else
+	for i=1:n
+		strtype(i) = 1;   % remember that it is a string
+		strvals{i}{1} = w{i}; % put it to the collection
+		x(1,i) = 1;
+	end
+end
+% now run over the other lines:
+nrx = 1;
+while 1
+	dline = fgetl(fid);
+	if ~ischar(dline), break, end  %end of file...
+
+	% now process this line:
+	nrx = nrx+1;
+	% find delimiters again:
+	I = find(dline==delimiter);
+	% cut out the words:
+	I = [0 I length(dline)+1];
+	w = {};
+	for i=1:length(I)-1
+		w{i} = dline((I(i)+1):(I(i+1)-1));
+	end
+	% remove the empty entries:
+	I = zeros(length(w),1);
+	for i=1:length(w)
+		if isempty(w{i})
+			I(i) = 1;
+		end
+	end
+	w(find(I)) = [];
+	% check:
+	if length(w)~=n
+		error('I cannot find enough values on line %d.',nrx);
+	end
+	% fill the values in the matrix
+	for i=1:n
+		if strtype(i)==0 % we have a number:
+			tmp = str2double(w{i});
+			if isnan(tmp)
+				error('It seems that feature %d is not numeric (encountered "%s" on line %d).',i,w{i},nrx);
+			end
+			x(nrx,i) = tmp;
+		else
+			% we have to find matching strings for feature i:
+			I = strmatch(w{i},strvals{i});
+			if ~isempty(I)  % it is found
+				x(nrx,i) = I;
+			else  % we have to add this entry:
+				x(nrx,i) = length(strvals{i})+1;
+				strvals{i}{end+1} = w{i};
+			end
+		end
+	end
+end
+
+fclose(fid);
Index: /prdatasets/ringnorm.m
===================================================================
--- /prdatasets/ringnorm.m	(revision 80)
+++ /prdatasets/ringnorm.m	(revision 80)
@@ -0,0 +1,24 @@
+%RINGNORM 7400 objects with 20 features in 2 classes
+%
+%	A = RINGNORM
+%
+% Load the dataset in A. This is an implementation of Leo Breimans ringnorm
+% example. It is taken from:
+% http://www.cs.toronto.edu/~delve/data/
+%
+% REFERENCE
+% Breiman L. Bias, variance and arcing classifiers. Tech. Report 460, 
+% Statistics Department. University of California. April 1996. 
+%
+% See also DATASETS, PRDATASETS, TWONORM
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = ringnorm
+
+prdatasets(mfilename,1);
+a = prdataset('ringnorm');
+a = setname(a,'Ringnorm Data');
+
Index: /prdatasets/satellite.m
===================================================================
--- /prdatasets/satellite.m	(revision 80)
+++ /prdatasets/satellite.m	(revision 80)
@@ -0,0 +1,21 @@
+%SATELLITE Satellite dataset 6435 objects with 36 features in 6 classes
+%
+%	A = SATELLITE
+%
+% Load the dataset in A. This is the Satellite dataset from the UCI
+% Machine Learning Repository, //www.ics.uci.edu/~mlearn/MLRepository.html.
+% As the samples are taken from related neighborhoods, it is better to
+% avoid cross-validation. Use the first 4435 samples for training and the
+% remaining 2000 for testing.
+%
+% See also DATASETS, PRDATASETS, SOYBEAN1
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = satellite
+
+prdatasets(mfilename,1);
+a = prdataset('satellite');
+a = setname(a,'Satellite dataset');
Index: /prdatasets/sonar.m
===================================================================
--- /prdatasets/sonar.m	(revision 80)
+++ /prdatasets/sonar.m	(revision 80)
@@ -0,0 +1,23 @@
+%SONAR 208 objects with 60 features in 2 classes
+%
+%       X = SONAR
+%
+%This is the data set used by Gorman and Sejnowski in their study of the
+%classification of sonar signals using a neural network.  The task is to
+%train a network to discriminate between sonar signals bounced off a
+%metal cylinder and those bounced off a roughly cylindrical rock.
+
+function x = sonar
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/sonar.dat');
+user.desc = 'The Sonar dataset from the undocumented databases from UCI. The task is to train a network to discriminate between sonar signals bounced off a metal cylinder and those bounced off a roughly cylindrical rock.';
+user.link = 'ftp://ftp.ics.uci.edu/pub/machine-learning-databases/undocumented/connectionist-bench/sonar';
+cl = {'mines' 'rocks'};
+a = load('sonar.dat');
+
+x = prdataset(a(:,1:(end-1)),cl(a(:,end)));
+x = setname(x,'Sonar');
+x = setuser(x,user);
+
+
+return
Index: /prdatasets/soybean1.m
===================================================================
--- /prdatasets/soybean1.m	(revision 80)
+++ /prdatasets/soybean1.m	(revision 80)
@@ -0,0 +1,76 @@
+%SOYBEAN1 Large soybean dataset 266 objects with 35 features in 4 classes
+%
+%	A = SOYBEAN1
+%
+% Load the dataset in A. This is the large Soybean dataset from the UCI
+% Machine Learning Repository, //www.ics.uci.edu/~mlearn/MLRepository.html.
+%
+% See also DATASETS, PRDATASETS, SOYBEAN2
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = soybean1
+
+prdatasets(mfilename,1);
+a = prdataset('soybean1');
+a = setname(a,'Large soybean dataset');
+a = setlablist(a,str2mat(...
+    'diaporthe stem canker',...
+    'charcoal rot',...
+    'rhizoctonia root rot',...
+    'phytophthora rot',...
+    'brown stem rot',...
+    'powdery mildew',...
+    'downy mildew',...
+    'brown spot',...
+    'bacterial blight',...
+    'bacterial pustule',...
+    'purple seed stain',...
+    'anthracnose',...
+    'phyllosticta leaf spot',...
+    'alternarialeaf spot',...
+    'frog eye leaf spot',...
+    'diaporthe pod and stem blight',...
+    'cyst nematode',...
+    '2-4-d injury',...
+    'herbicide injury'));
+a = setfeatlab(a,str2mat(...
+    'date',...
+    'plant stand',...
+    'precipitation',...
+    'temperature',...
+    'hail',...
+    'crop history',...
+    'area damaged',...
+    'severity',...
+    'seed treatment',...
+    'germination',...
+    'plant growth',...
+    'leaves',...
+    'leafspots halo',...
+    'leafspots marginal',...
+    'leafspot size',...
+    'leaf shread',...
+    'leaf malfunction',...
+    'leaf mildew',...
+    'stem',...
+    'lodging',...
+    'stem cankers',...
+    'canker lesion',...
+    'fruiting bodies',...
+    'external decay',...
+    'mycelium',...
+    'int discolor',...
+    'sclerotia',...
+    'fruit pods',...
+    'fruit spots',...
+    'seed',...
+    'mold growth',...
+    'seed discolor',...
+    'seed size',...
+    'shriveling',...
+    'roots'));
+    
+
Index: /prdatasets/soybean2.m
===================================================================
--- /prdatasets/soybean2.m	(revision 80)
+++ /prdatasets/soybean2.m	(revision 80)
@@ -0,0 +1,60 @@
+%SOYBEAN2 Small soybean dataset 136 objects with 35 features in 4 classes
+%
+%	A = SOYBEAN2
+%
+% Load the dataset in A. This is the small Soybean dataset from the UCI
+% Machine Learning Repository, //www.ics.uci.edu/~mlearn/MLRepository.html.
+%
+% See also DATASETS, PRDATASETS, SOYBEAN1
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = soybean2
+
+prdatasets(mfilename,1);
+a = prdataset('soybean2');
+a = setname(a,'Small soybean dataset');
+a = setlablist(a,str2mat(...
+    'phytophthora rot',...
+    'brown spot',...
+    'alternarialeaf spot',...
+    'frog eye leaf spot'));
+a = setfeatlab(a,str2mat(...
+    'date',...
+    'plant stand',...
+    'precipitation',...
+    'temperature',...
+    'hail',...
+    'crop history',...
+    'area damaged',...
+    'severity',...
+    'seed treatment',...
+    'germination',...
+    'plant growth',...
+    'leaves',...
+    'leafspots halo',...
+    'leafspots marginal',...
+    'leafspot size',...
+    'leaf shread',...
+    'leaf malfunction',...
+    'leaf mildew',...
+    'stem',...
+    'lodging',...
+    'stem cankers',...
+    'canker lesion',...
+    'fruiting bodies',...
+    'external decay',...
+    'mycelium',...
+    'int discolor',...
+    'sclerotia',...
+    'fruit pods',...
+    'fruit spots',...
+    'seed',...
+    'mold growth',...
+    'seed discolor',...
+    'seed size',...
+    'shriveling',...
+    'roots'));
+    
Index: /prdatasets/texturel.m
===================================================================
--- /prdatasets/texturel.m	(revision 80)
+++ /prdatasets/texturel.m	(revision 80)
@@ -0,0 +1,25 @@
+%TEXTUREL 128 x 640 objects (pixels) with 7 features in 5 classes
+%
+%	A = TEXTUREL
+%
+% Load the dataset in A. These are 5 texture classes each given by 7 
+% features which are 7 different filtered versions of 5 different images.
+% The objects are the pixels. Filter number 7 is the unity filter, so the
+% corresponding featurevalues are the original pixels. The 5 classes are
+% stored as 5 horizontally concatenated images. This may be visualized by
+% SHOW(A), which shows 7 128*640 images (5*128=640) and the labels.
+%
+% The dataset TEXTURET deals with a similar texture image given by the same
+% texture features but as a composite 256*256 image.
+%
+% See also DATASETS, PRDATASETS, TEXTURET
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = texturel
+
+prdatasets(mfilename,4);
+a = prdataset('texturel');
+a = setname(a,'Texture Learning Set');
Index: /prdatasets/texturet.m
===================================================================
--- /prdatasets/texturet.m	(revision 80)
+++ /prdatasets/texturet.m	(revision 80)
@@ -0,0 +1,25 @@
+%TEXTURET 256 x 256 objects (pixels) with 7 features in 5 classes
+%
+%	A = TEXTURET
+%
+% Load the dataset in A. These are 5 texture classes each given by 7 
+% features which are 7 different filtered versions of 5 different images.
+% The objects are the pixels. Filter number 7 is the unity filter, so the
+% corresponding featurevalues are the original pixels. The 5 classes are
+% stored as 5 a composite 256x256 images. This may be visualized by
+% SHOW(A), which shows the 7 images for the 7 features and a label image.
+%
+% The dataset TEXTUREL deals with a similar texture image given by the same
+% texture features.
+%
+% See also DATASETS, PRDATASETS, TEXTUREL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = texturet
+
+prdatasets(mfilename,4);
+a = prdataset('texturet');
+a = setname(a,'Texture Test Set');
Index: /prdatasets/twonorm.m
===================================================================
--- /prdatasets/twonorm.m	(revision 80)
+++ /prdatasets/twonorm.m	(revision 80)
@@ -0,0 +1,24 @@
+%TWONORM 7400 objects with 20 features in 2 classes
+%
+%	A = TWONORM
+%
+% Load the dataset in A.This is an implementation of Leo Breimans twonorm
+% example. It is taken from:
+% http://www.cs.toronto.edu/~delve/data/
+%
+% REFERENCE
+% Breiman L. Bias, variance and arcing classifiers. Tech. Report 460, 
+% Statistics Department. University of California. April 1996. 
+%
+% See also DATASETS, PRDATASETS, RINGNORM
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = twonorm
+
+prdatasets(mfilename,1);
+a = prdataset('twonorm');
+a = setname(a,'Twonorm Data');
+
Index: /prdatasets/wine.m
===================================================================
--- /prdatasets/wine.m	(revision 80)
+++ /prdatasets/wine.m	(revision 80)
@@ -0,0 +1,39 @@
+%WINE Wine recognition dataset 178 objects with 13 features in 3 classes
+%
+%	A = WINE
+%
+% Load the dataset in A. This dataset is taken from the UCI
+% Machine Learning Repository, //www.ics.uci.edu/~mlearn/MLRepository.html.
+%
+% See also DATASETS, PRDATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = wine
+
+prdatasets(mfilename,1,'http://prtools.org/prdatasets/wine.dat');
+user.desc = 'These data are the results of a chemical analysis of wines grown in the same region in Italy but derived from three different cultivars.  The analysis determined the quantities of 13 constituents found in each of the three types of wines.';
+user.link = '';
+
+a = load('wine.dat');
+a = prdataset(a(:,2:end),a(:,1));
+a = setname(a,'Wine recognition data');
+a = setlablist(a,str2mat('cultivar 1','cultivar 2','cultivar 3'));
+a = setfeatlab(a,str2mat(...
+        'alcohol', ...
+        'malic acid', ...
+        'ash', ...
+	'alcalinity of ash', ...
+	'magnesium', ...
+	'total phenols', ...
+	'flavanoids', ...
+	'nonflavanoid phenols', ...    
+	'proanthocyanine', ...    
+	'color intensity', ...        
+	'hue', ...    
+	'OD280/OD315 of diluted wines', ...        
+        'proline'));
+a = setuser(a,user);
+
Index: /prdatasets/x80.m
===================================================================
--- /prdatasets/x80.m	(revision 80)
+++ /prdatasets/x80.m	(revision 80)
@@ -0,0 +1,38 @@
+%X80 Handwritten character dataset, 45 objects with 8 features in 3 classes
+%
+%	A = X80
+%
+% DESCRIPTION
+% Load the dataset in A. This is the 80X dataset, having 3 classes.
+% The 8 features are the distances from a bounding box to the 
+% pixels of a set of handwritten characters 'X', '8' and '0', measured from
+% the corners along the diagonals and from the edge midpoints along the 
+% horizontal and vertical central axes.
+%
+% REFERENCES
+% 1. R. Dubes and A.K. Jain, Clustering techniques: The user's dilemma,
+% Pattern Recognition, Volume 8, Issue 4, October 1976, Pages 247-260.
+% 2. A.K. Jain, R.C. Dubes, C.C. Chen, Bootstrap Techniques for Error Estimation
+% IEEE Trans. Pattern Anal. and Mach. Intel., 9(5), pp. 628-633, 1987.
+%
+% See also DATASETS, PRDATASETS, IMOX
+
+% Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
+% Faculty EWI, Delft University of Technology
+% P.O. Box 5031, 2600 GA Delft, The Netherlands
+
+function a = x80;
+
+prdatasets('80x',1);
+a = prdataset('80x');
+a = setname(a,'80X Dataset');
+a = setlablist(a,str2mat('8','0','X'));
+a = setfeatlab(a,str2mat(...
+        'diagonal from top-left', ...
+        'vertical from top-center', ...
+        'diagonal from top-right', ...
+		'horizontal from right-center', ...
+		'diagonal from bottom-right', ...
+		'vertical from bottom-center', ...
+		'diagonal from bottom-left', ...
+		'horizontal from left-center'));
