def simpleRunNN(self, epoches, batch, pace, train_ratio = 0.75):
        # translate label into number
        data = [copy.copy(self.data[0])]
        data.append([[float(ele) for ele in sample] for sample in self.data[1]])

        # normalize data
        right = []
        left = []
        for attr_id in range(len(data[1][0])):
            attr_list = [row[attr_id] for row in data[1]]
            right.append(max(attr_list))
            left.append(min(attr_list))
        
        for r_id in range(len(data[1])):
            for c_id in range(len(data[1][r_id])):
                data[1][r_id][c_id] = (data[1][r_id][c_id] - left[c_id]) / (right[c_id] - left[c_id])

        clas_list = list(set(self.data_label))
        new_label = []
        for label in self.data_label:
            new_label.append([0 for i in range(len(clas_list))])
            new_label[-1][clas_list.index(label)] = 1

        # split train data and test data
        train_data, test_data, train_data_label, test_data_label = self.randomSplit(train_ratio, data, new_label)

        # train
        nn = NN.BPNN()
        act = NN.Activition()
        
        # one input, one hidden, one softmax
        nn.deliverLayer(len(train_data[0]))
        nn.activeLayer(8, act.sigmoid)
        nn.activeLayer(len(clas_list), act.sigmoid)
        nn.softmaxLayer(len(clas_list))
        self.train(train_data[1], train_data_label, test_data, test_data_label, clas_list, epoches, batch, pace, nn)

        # test
        predictions = nn.predict(test_data[1])
        accuracy = sum([1 for label, pred in zip(test_data_label, predictions) if clas_list[label.index(1)] == clas_list[pred.index(1)]]) / len(predictions)
        # for label, pred in zip(test_data_label, predictions):
        #     print(str(clas_list[label.index(1)]) + " " + str(clas_list[pred.index(1)]))

        print("gengeral accuracy is: %f" %(accuracy))
        return accuracy