COSC 575: Machine Learning

Project 4
Spring 2015

Due: Wed, Apr 1 @ 11:59 P.M.
10 points

  1. Implement Flach's Algorithm 7.1 as the executable Perceptron.

  2. Implement Flach's Algorithm 7.4 as the executable KernelPerceptron. Use good object-oriented design to implement a polynomial kernel and a Gaussian kernel. Programmers should be able to set a kernel from the command line or using the KernelPerceptron's API.

  3. As for data sets, you can produce a linearly-separable problem from the Iris data set by selecting the setosa and virginica classes. You can also use Mushroom and Votes, but you need to convert the nominal attributes to binary attributes using either binary or linear encoding. You can also use Pima. You could also try spambase. Indicate which data sets work with your implementation. If you use a new data set or modify an existing data set, include it in your submission unless it is large, in which case, put it somewhere and include a link to the data set with your submission.

The implementations must be general for two-class problems. It must follow sound principles of object-oriented design and implementation. Implement each learner as a single executable. No windows. No menus. No prompts. Just do it.

The logic of the implementation should be the same as that for the previous implementations. If the user runs a learner and specifies only a training set, then the program should evaluate using 10-fold cross-validation and output the results. Naturally, the user can use the -x switch to change the default. Otherwise, if the user specifies both a training and testing set, then the program should build a model from the training set, evaluate it on the testing set, and output the results.

Instructions for Submission

In the header comments in at least the main file of your project, provide the following information:
//
// Name
// E-mail Address
// Platform: Windows, MacOS, Linux, Solaris, etc.
// Language/Environment: gcc, g++, java, g77, ruby, python.
//
// In accordance with the class policies and Georgetown's Honor Code,
// I certify that, with the exceptions of the class resources and those
// items noted below, I have neither given nor received any assistance
// on this project.
//

Submit via Blackboard. When you are ready to submit your program for grading, create a zip file of a single-level directory containing only your project's source, and upload it to Blackboard. The directory's name should be the same as your net ID. The zip file should be named p4.zip. If you used a new data set or modify an existing data set, include it in the zip unless it is large, in which case, put it somewhere and include a link with your submission. If you need to include a note with your submission, put the note in a README file in the directory. Make sure I have clear instructions on how to build and run your executables. If you're using C or C++, provide a Makefile. If you're using Java, do not use packages. Make sure compiling your project produces an executable with an appropriate name. If you need to include a note with your submission, put the note in a README file in the directory. Submit your project before 11:59 P.M. on the due date.

Copyright © 2019 Mark Maloof. All Rights Reserved. This material may not be published, broadcast, rewritten, or redistributed.