import numpy as np import pandas as pd class Loader: def load_data(): #df = pd.read_csv('data/sample.txt', delimiter=',', header=None).astype(np.float32) #df = pd.read_csv('data/ex1data1.txt', delimiter=',', header=None).astype(np.float32) df = pd.read_csv('data/train.csv', delimiter=',', comment='#').astype(np.float32) df[0] = df['x'] df[1] = df['y'] df[2] = pd.Series([1]*len(df[0])) df = df.reindex(columns=[1, 2, 0]) return df class Stepper: def __init__(self, print_gap=1.0e-4, break_gap=1.0e-9): self._prev_cost = 0 self._cost = 0 self._cost_diff = 0 self._serial_divergence_cnt = 0 self.accumulator = 0 self._print_gap = print_gap self._break_gap = break_gap self._b_print_turn = False self._b_break_turn = False def add_step(self, step): self._b_print_turn = False self._b_break_turn = False self._prev_cost = self._cost self._cost = step self._cost_diff = self._cost - self._prev_cost self.accumulator += abs(self._cost_diff) if self.accumulator >= self._print_gap: self.accumulator = 0 self._b_print_turn = True if self._prev_cost != 0 and (self._cost_diff > 0 or abs(self._cost_diff) < self._break_gap): self._serial_divergence_cnt += 1 if self._serial_divergence_cnt >= 5: self._b_break_turn = True else: self._serial_divergence_cnt = 0 def is_print_turn(self): return self._b_print_turn def is_break_turn(self): return self._b_break_turn