def crossvalidation(self, fold, v, k): error = 0 data = Data(k, 0, 0) data.importDataFromMat() data.normalize() n = data.train_cat.shape[1] all_indices = sp.arange(n) data.shuffleData() sq = SquaredErrorLinearClassifier(v,k) dataset_indices = sp.split(all_indices, fold) for i in range(fold): set_without_D_i_indices = sp.concatenate(dataset_indices[0:i]+dataset_indices[i+1:fold]) #print "-"*30+"train"+"-"*30 sq.train(data.train_left[:,set_without_D_i_indices], data.train_right[:,set_without_D_i_indices], data.train_cat[:,set_without_D_i_indices]) #print "-"*30+"classify"+"-"*30 results, classes = sq.classify(data.train_left[:,dataset_indices[i]], data.train_right[:,dataset_indices[i]]) #print "-"*30+"error"+"-"*30 err, _ = sq.error(results, data.train_cat[:,dataset_indices[i]].T) error += fold/(n*1.0)*err error = error / fold with open("results/crossvalidation.txt", "a") as myfile: toWrite = "v="+str(v)+" error="+str(error) myfile.write(toWrite)