## 3 Results  
### SVM Classification  
The data processing and classification of the classifier in this work were completed on a workstation including an Intel (R) Core (TM) i7-5930K@ 3.50 GHz, 6 CPU cores and 32.0 GB memory (Santa Clara, CA, USA). The models used were all written in a Python 3.7 environment using Giotto-TDA 0.3.1 and scikit-learn 0.23.1 under Ubuntu 16.04.7 LTS. In the classification training, we used 50%, 60%, 70%, 80%, and 90% of the datasets as the training set, and the rest of the samples as the test set for training, and conducted a 10-fold cross-validation on the model. In the training of SVM, in order to get better parameters, we used the method of network search cross-validation to traverse various parameter combinations to determine the best parameters, which is very suitable for small sample sets. In SVM, the parameter \(C\) is the penalty coefficient. The higher \(C\) is, the more the classifier cannot tolerate errors, which will lead to overfitting, and the lower \(C\) is, the less likely there will be underfitting. In addition, we choose RBF as the kernel function of SVM, where the parameter \(gamma\) affects the number of support vectors in the model. The relationship between the size of \(gamma\) and the number of support vectors is: when \(gamma\) is larger, the support vector is lower; when \(gamma\) is smaller, the support vector is higher. Through the method of network search cross-validation, the two parameters are traversed on the interval, and all the values are combined. Each time, they are evaluated by a 10-fold cross-validation. Finally, the best value of the penalty coefficient was \(C=1.0536\), and the best value of \(gamma\) in the RBF function was \(gamma=0.0188\). When the training set accounted for 50-90% of the training set, the model's _accuracy_ for the corresponding test results was 93.75%, 95.31%, 97.92%, 100%, and 100%. It can be seen that the trained model had a good effect on the recognition accuracy of different disease categories. In the case of different proportions of training samples, \(P_{class}\) and \(R_{class}\) are shown in Tables 2 and 3 and the confusion matrix is shown in Figure 7. \begin{table}
\begin{tabular}{c c c c c} \hline \hline \multirow{2}{*}{**Training Samples**} & \multicolumn{4}{c}{**Class**} \\ \cline{2-5}  & \(P_{0}\) & \(P_{2}\) & \(P_{2.5}\) & \(P_{3}\) \\ \hline
50\% & 100.00\% & 100.00\% & 85.71\% & 91.67\% \\
60\% & 85.71\% & 92.86\% & 90.00\% & 100.00\% \\
70\% & 93.33\% & 100.00\% & 91.67\% & 100.00\% \\
80\% & 100.00\% & 100.00\% & 100.00\% & 100.00\% \\
90\% & 100.00\% & 100.00\% & 100.00\% & 100.00\% \\ \hline \hline \end{tabular}
\end{table} 
Table 2: The precision of the model. \begin{table}
\begin{tabular}{c c c c c} \hline \hline \multirow{2}{*}{**Training Samples**} & \multicolumn{4}{c}{**Class**} \\ \cline{2-5}  & \(R_{0}\) & \(R_{2}\) & \(R_{2.5}\) & \(R_{3}\) \\ \hline
50\% & 86.67\% & 88.00\% & 100.00\% & 100.00\% \\
60\% & 85.71\% & 100.00\% & 94.74\% & 100.00\% \\
70\% & 93.33\% & 100.00\% & 100.00\% & 100.00\% \\
80\% & 100.00\% & 100.00\% & 100.00\% & 100.00\% \\
90\% & 100.00\% & 100.00\% & 100.00\% & 100.00\% \\ \hline \hline \end{tabular}
\end{table} 
Table 3: The recall rate of the model. The results for the inter-class precision and recall ratio when the training set samples accounted for 50%, 60%, 70%, 80%, and 90% are shown in Tables 4-7. The data showed that the model did not misjudge patients as normal. When the proportion of training samples was 50%, there were cases in which the normal and disease grade 2 were misjudged as grade 2.5, and grade 2 was mistakenly judged as grade 3. When the proportion of training samples was 40%, there were cases in which the disease grade