public int[] IndexOfVerticalMax()
{
int[] IdxVerticalMax = new int[nCols];
float[] ValVerticalMax = new float[nCols];
for (int IdxCol = 0; IdxCol < nCols; IdxCol++)
{
ValVerticalMax[IdxCol] = SparseColumnVectors[IdxCol].Val[0];
IdxVerticalMax[IdxCol] = SparseColumnVectors[IdxCol].Key[0];
for (int IdxRow = 0; IdxRow < SparseColumnVectors[IdxCol].nNonzero; IdxRow++)
{
if (SparseColumnVectors[IdxCol].Val[IdxRow] > ValVerticalMax[IdxCol])
{
ValVerticalMax[IdxCol] = SparseColumnVectors[IdxCol].Val[IdxRow];
IdxVerticalMax[IdxCol] = SparseColumnVectors[IdxCol].Key[IdxRow];
}
}
}
return IdxVerticalMax;
}
public static int ComputeNumberOfErrors(SparseMatrix Dt, SparseMatrix y) { if (Dt.nCols != y.nCols) { throw new Exception("The numbers of samples from label and prediction do not match."); } int nTotError = 0; int[] PredictedClass = y.IndexOfVerticalMax(); for (int IdxCol = 0; IdxCol < Dt.nCols; IdxCol++) { if (Dt.SparseColumnVectors[IdxCol].Key[0] != PredictedClass[IdxCol]) { nTotError++; } } return nTotError; }