Bearing-fault-diagnosis problem can be conceived as a pattern recognition problem, which includes three main phases: feature extraction, feature selection and feature classification. Thus, to improve the performance of the whole bearing-fault-diagnosis system, the performance of each phase must be improved. The aim of this study is threefold. First, in the feature extraction step, a new feature extraction technique based on non-local-means de-noising and empirical mode decomposition is developed to more accurately obtain fault-characteristic information. Second, in the feature selection phase, a novel two-stage feature selection, hybrid distance evaluation technique (DET)-particle swarm optimisation (PSO), is proposed by combining DET and PSO to select the superior combining feature subset that discriminates well among classes. Third, in the classification phase, a comparison among three types of popular classifiers: K-nearest neighbours, probabilistic neural network and support-vector machine is done to figure out the sensitivity of each classifier corresponding to the irrelevant and redundant features and the curse of dimensionality; then, find out a most suitable classifier incorporating with feature selection phase. The experimental results for the vibration signal of the bearing are shown to verify the effectiveness of the proposed fault-diagnosis scheme.