private static void WriteARFF()
{
// create file
StreamWriter file = File.CreateText("outfile.arff");
// write arff header
file.Write("@RELATION " + "TestSample" + "\r\r");
//file.Write("@ATTRIBUTE username STRING\r");
file.Write("@ATTRIBUTE GestureType {swipe_left,swipe_right,swipe_up,swipe_down,tap_left,tap_right,tap_up,tap_down,scratchout,circle,square,x,c,two_handed_fb,two_handed_lr,unknown}\r");
file.Write("@ATTRIBUTE MinX NUMERIC\r");
file.Write("@ATTRIBUTE MinY NUMERIC\r");
file.Write("@ATTRIBUTE MaxX NUMERIC\r");
file.Write("@ATTRIBUTE MaxY NUMERIC\r");
file.Write("@ATTRIBUTE MeanX NUMERIC\r");
file.Write("@ATTRIBUTE MeanY NUMERIC\r");
file.Write("@ATTRIBUTE MedianX NUMERIC\r");
file.Write("@ATTRIBUTE MedianY NUMERIC\r");
file.Write("@ATTRIBUTE DiagonalLength NUMERIC\r");
file.Write("@ATTRIBUTE StartAngleSinXY NUMERIC\r");
file.Write("@ATTRIBUTE StartAngleCosXY NUMERIC\r");
file.Write("@ATTRIBUTE FirstLastAngleSinXY NUMERIC\r");
file.Write("@ATTRIBUTE FirstLastAngleCosXY NUMERIC\r");
file.Write("@ATTRIBUTE TotalAngleXY NUMERIC\r");
file.Write("@ATTRIBUTE AbsoluteTotalAngleXY NUMERIC\r");
file.Write("@ATTRIBUTE SquaredTotalAngleXY NUMERIC\r");
file.Write("@ATTRIBUTE FirstLastDistance NUMERIC\r");
file.Write("@ATTRIBUTE TotalDistance NUMERIC\r");
file.Write("@ATTRIBUTE MaxAccelerationSquared NUMERIC\r");
file.Write("@ATTRIBUTE ZeroCrossingsX NUMERIC\r");
file.Write("@ATTRIBUTE ZeroCrossingsY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_MinX NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_MinY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_MaxX NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_MaxY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_MeanX NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_MeanY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_MedianX NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_MedianY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_DiagonalLength NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_StartAngleSinXY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_StartAngleCosXY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_FirstLastAngleSinXY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_FirstLastAngleCosXY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_TotalAngleXY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_AbsoluteTotalAngleXY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_SquaredTotalAngleXY NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_FirstLastDistance NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_TotalDistance NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_MaxAccelerationSquared NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_SideRatioFirst NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_SideRatioLast NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_TopRatioFirst NUMERIC\r");
file.Write("@ATTRIBUTE Stroke_TopRatioLast NUMERIC\r");
file.Write("@ATTRIBUTE Duration NUMERIC\r");
//write out the feature vector for this sample
file.Write("\r@DATA\r");
string datum = GS.Gesture.ToString();
for (int i = 0; i < GS.Features.Length; ++i)
datum += "," + GS.Features[i];
file.Write(datum + "\r");
file.Flush();
file.Close();
}