The self-healing function in self-organizing networks can not only detect the presence of fault conditions but also diagnose the root causes in a fully autonomous fashion. In this paper, we propose a machine learning based diagnosis algorithm that uses network condition indicators such as key performance indicators and performance management counters for network condition diagnosis. The proposed algorithm judiciously combines the classical supervised softmax neural network (SNN) and support vector machine (SVM), and therefore can be efficiently implemented by off-the-shelf tools while achieving promising diagnosis performance. In particular, the proposed algorithm combines the features extracted from SNN and SVM, and is able to robustly diagnose fault conditions with different levels of severity. Besides, the proposed algorithm can also handle complex scenarios where there is more than one fault condition present at the same time. Considering that data with labels of multiple faults are not available in general, we further propose a simple retraining procedure which allows the proposed algorithm to perform multi-fault diagnosis even when the training data are only single labeled. Simulation results demonstrate that the proposed algorithms provide desired diagnosis performance in both single-fault and multi-fault scenarios and outperform the traditional scoring based methods.