Using an android interface to communicate with a server to run inputs though a SVM.
MLServe is an android application that was created to test machine learning implementation on android devices using a remote system to run the data though.
This dataset is connected and can be used, on the server I have implemented an SVM with Sklearn.
Pre-processing: The data directly from the repository has missing values, to compensate for this the values were replaced with zero at the beginning. After testing I have finalized my preprocessing method to remove all rows with unknown variables. Doing this I only lose about 20 rows of data, a minimal price to pay. The issue with inserting a zero is that we don't want to create our own fake inputs, if the patient has all high numbers and one zero this may confuse the training
Training is done by first shuffling the pre-processed data and seperating it into 50-25-25. 50 percent of our data is being used for training, 25 percent is being used for testing, and 25 percent is being used for validation to prevent overfitting.I am using a linear kernel with C = 20 (penalty parameter) and a random seed to further prevent overfitting.
For this data set I have to go though and do riggerous validation testing to ensure the network isn't overfitting. This current network is preliminary to test though the android device, next I will be, try using an SVM instead in order to ensure that I can get the larget margin possible between my classificaiton.
First output: Confmat
[[TN, FP]
[FN,TP]]
Second output: Prediction
Third output: Prediction score
Fourth output: Accuracy %
** The input numbers are ignored by validation they are not taking any role here **
Images of current product:
In app exlpaination:
Prediciton screen with hint's to the parameters:
Prediction for a negative result:
Prediction for a positive result: