Your input training (train_output.csv) data is unbalanced. The second class has 14 elements and the third class has only 3 elements. You need the same number of entries for each class.
There is a problem at CreateNetwork: the last layer should be softmax. The layer preceding softmax should be a linear fully connected.
_NNet.AddLayer( TNNetFullConnectLinear.Create(Length(TOutputArray)) );
_NNet.AddLayer( TNNetSoftMax.Create());
Recommend having your training output set with TVolume.SetClassForSoftMax and inferring the class should be with TVolume.GetClass().
You can re-encode the training output with:
_Output.SetClassForSoftMax(_Output.GetClass());
Having only 3 elements for a class isn't enough. For hard problems (such as image classification), I like having from 5000 to 10000 elements per class as minimum. How many training elements per class do you need? I don't know but I know that 3 isn't enough.
If, after these changes, model is still not converging towards a good solution, please feel free to ask for further help.