void kernalPerceptron(int maxIterations)
	{
		// Set all elements in c, the implicit classifier, to 0
		for (int j = 0; j < trainingSetSize; j++)
		{
			c[j] = 0.0;
		}
		// While maximum iterations is not exceeded.													
		for (int iterations = 1; iterations <= maxIterations; iterations++)
		{
			// Count the number of incorrectly classified data entries in training set.
			int incorrectCount = 0;
			for (int a = 0; a < trainingSetSize; a++) {
				if (correctClassifier(data.storage[trainingIndices[a]], data.classes[trainingIndices[a]]) == false){
					incorrectCount++;					
				}
			}
			// If every training example if properly classified, then classifier does not need to be further modified.
			if (incorrectCount == 0)	
			{
				break;
			}
			
			for (int j = 0; j < trainingSetSize; j++)		
			{	
				// Determine whether or not each entry in training set is misclassified.
				double temp = 0.0;	// Temp variable to hold the classification.					
				for (int k = 0; k < trainingSetSize; k++)
				{
					// Apply the kernel function.
					temp += c[k]*(Math.pow((1 + dotProduct(data.storage[trainingIndices[k]], data.storage[trainingIndices[j]])), d));
				}
				temp *= Double.parseDouble(data.classes[trainingIndices[j]]);
				// If jth entry is misclassified.
				if (temp <= 0)											
				{
					// Update the implicit classifier.
					c[j] = c[j] + Double.parseDouble(data.classes[trainingIndices[j]]);
				}
			}	
		} 
	} // end method