FukuML/PLA.py
def train(self):

        '''
        Train Perceptron Learning Algorithm
        From f(x) = WX
        Find best h(x) = WX similar to f(x)
        Output W
        '''

        if (self.status != 'init'):
            print("Please load train data and init W first.")
            return self.W

        self.status = 'train'

        if (self.loop_mode is 'random'):
            data_check_order = range(self.data_num)
            data_check_order = random.sample(data_check_order, self.data_num)
        elif (self.loop_mode is 'naive_cycle'):
            data_check_order = range(self.data_num)
        else:
            data_check_order = range(self.data_num)

        self.tune_times = 0
        k = 0
        flag = True

        while True:
            if (self.tune_times > (2 * self.data_num)):
                print("Dataset not linear separable.")
                break

            if k == self.data_num:
                if flag:
                    break
                k = 0
                flag = True

            point_wise_i = data_check_order[k]

            if self.error_function(self.score_function(self.train_X[point_wise_i], self.W), self.train_Y[point_wise_i]):
                flag = False
                self.tune_times += 1
                self.W = self.W + self.step_alpha * (self.train_Y[point_wise_i] * self.train_X[point_wise_i])
            k += 1

        return self.W
def train(self):

        '''
        Train Perceptron Learning Algorithm
        From f(x) = WX
        Find best h(x) = WX similar to f(x)
        Output W
        '''

        if (self.status != 'init'):
            print("Please load train data and init W first.")
            return self.W

        self.status = 'train'

        if (self.loop_mode is 'random'):
            data_check_order = range(self.data_num)
            data_check_order = random.sample(data_check_order, self.data_num)
        elif (self.loop_mode is 'naive_cycle'):
            data_check_order = range(self.data_num)
        else:
            data_check_order = range(self.data_num)

        self.tune_times = 0
        k = 0
        flag = True

        while True:
            if (self.tune_times > (2 * self.data_num)):
                print("Dataset not linear separable.")
                break

            if k == self.data_num:
                if flag:
                    break
                k = 0
                flag = True

            point_wise_i = data_check_order[k]

            if self.error_function(self.score_function(self.train_X[point_wise_i], self.W), self.train_Y[point_wise_i]):
                flag = False
                self.tune_times += 1
                self.W = self.W + self.step_alpha * (self.train_Y[point_wise_i] * self.train_X[point_wise_i])
            k += 1

        return self.W
def train ( self ) : if ( self . status != 'init' ) : print ( "Please load train data and init W first." ) return self . W self . status = 'train' if ( self . loop_mode is 'random' ) : data_check_order = range ( self . data_num ) data_check_order = random . sample ( data_check_order , self . data_num ) elif ( self . loop_mode is 'naive_cycle' ) : data_check_order = range ( self . data_num ) else : data_check_order = range ( self . data_num ) self . tune_times = 0 k = 0 flag = True while True : if ( self . tune_times > ( 2 * self . data_num ) ) : print ( "Dataset not linear separable." ) break if k == self . data_num : if flag : break k = 0 flag = True point_wise_i = data_check_order [ k ] if self . error_function ( self . score_function ( self . train_X [ point_wise_i ] , self . W ) , self . train_Y [ point_wise_i ] ) : flag = False self . tune_times += 1 self . W = self . W + self . step_alpha * ( self . train_Y [ point_wise_i ] * self . train_X [ point_wise_i ] ) k += 1 return self . W
Train Perceptron Learning Algorithm
        From f(x) = WX
        Find best h(x) = WX similar to f(x)
        Output W
Train Perceptron Learning Algorithm From f ( x ) = WX Find best h ( x ) = WX similar to f ( x ) Output W