This is a home page for PCP (Pattern Classification Program). It is an open-source machine learning program for supervised classification of patterns (vectors of measurements). PCP implements the following algorithms and methods:

  • Fisher's linear discriminant
  • dimensionality reduction using Singular Value Decomposition
  • Principal Component Analysis
  • feature subset selection
  • Bayes error estimation
  • parametric classifiers (linear and quadratic)
  • least-squares (pseudo-inverse) linear discriminant
  • k-Nearest Neighbor (k-NN)
  • neural networks (Multi-Layer Perceptron (MLP))
  • Support Vector Machine (SVM) algorithm
  • SVM, MLP and k-NN model selection
  • cross-validation
  • bagging (committee) classification
The program supports interactive and batch processing. Commands are issued through a keyboard-driven menu system in the interactive mode, or in a batch file in the batch mode. It is a binary executable and does not need any special run-time environment. PCP uses tab-delimited text files for input data. The results are displayed on the screen and saved in text files.

PCP distribution contains executables for Linux and Windows operating systems (under Cygwin environment), on i386 architecture CPUs such as Intel Pentium or AMD Athlon. PCP has been developed and tested on Fedora Core 4 distribution. It has also been tested on RedHat 9.0 and Windows XP/Cygwin.

An application note describing PCP has been published in journal Bioinformatics.


PCP is licensed under MIT license (also known as X11 license), which allows unrestricted use for any purpose. It uses five other software packages, all of which are distributed under permissive licenses consistent with the MIT license. See file LICENSING in the distribution for more details.

Downloading and Installing

Click here to download PCP (choose the most recent release). Linux users, download file with with extension .tar.gz and untar/gunzip the downloaded file. Windows users, please download file with .zip extension. After unpacking, the Linux executable pcp can be found in Linux subdirectory, while the Windows/Cygwin executable pcp.exe is in Cygwin subdirectory. Source code is in the src subdirectory. Documentation, sample batch scripts, data sets etc. are in the top-level directory.

To run the program under Windows, you must first download and install the free Cygwin environment.

To install the program, copy the executable to any directory in your PATH. After that, PCP can be started by typing

% pcp

at the command prompt. There are no configuration files or other external settings for PCP. The program can be compiled for other UNIX-like platforms by typing

% ./configure
% make

in the distribution directory.


PCP was written by Ljubomir Buturovic of San Francisco State University.

Please send all comments and bug reports to ljubomir@sfsu.edu.


1. As of release 2.2, PCP is no longer being developed.

2. PCP has a bug in model selection and cross-validation for probabilistic SVM classifier. It produces incorrect results for multiple experiments. Please use one experiment for probabilistic SVM model selection and cross-validation.


This work has its origins in project PARIS, designed with Prof. Milan Milosavljevic at the School of Electrical Engineering, University of Belgrade, Serbia, with additional contributions by Dr. Milan Markovic, Prof. Srdjan Stankovic and Prof. Mladen Veinovic.

Sasha Jaksic of San Francisco State University contributed code to the feature selection functionality.

The author acknowledges and wishes to thank authors of the following open-source software packages used in PCP:

  • Support Vector Machine library LIBSVM by Chih-Chung Chang and Chih-Jen Lin
  • hash code from Kazlib library by Kaz Kylheku
  • LAPACK library
  • FORTRAN package for unconstrained function optimization CG+ (version 1.1), written by Guanghui Liu, Jorge Nocedal and Richard Waltz
  • sorting functions by Ariel Faigon
Finally, many thanks to people at sourceforge for their support of open source software.

Page last updated September 10, 2011