def test_cost_function(self): self.X = np.concatenate([np.ones((self.m, 1)), self.X], axis=1) theta = np.zeros((self.n + 1, 1)) cost_loop = cost_function_loop(self.X, self.y, theta) cost = cost_function(self.X, self.y, theta) self.assertAlmostEqual(cost_loop, 0.693, places=3) self.assertAlmostEqual(cost, 0.693, places=3)
def lrm_descent(self): self.theta_values = [1] * (len(self.training_features[0])) X = self.training_features if not all(np.transpose(X)[0]) == 1: X = np.transpose( np.insert(np.transpose(X), 0, [1] * (len(self.training_values)), axis=0)) cj = utils.cost_function(self.theta_values, X, self.training_values) J = 999999999999999999999 while abs(J - cj) > self.min_diff: J = cj self.theta_values = utils.minimized_theta(self.theta_values, X, self.alpha, self.training_values) cj = utils.cost_function(self.theta_values, X, self.training_values) return J
def test_cost_function(self): initial_theta = np.ones(self.n + 1) lamda = 1.0 cost = cost_function(initial_theta, self.X, self.y, lamda) self.assertAlmostEqual(cost, 303.993, places=3)
idx += 1 if idx > 9: min_idx = assign_min_day() result.append((row.family_id, min_idx+1, row.n_people, idx, preference_cost(idx,row.n_people))) index.append(10) flag = True else: ch = choices[idx] f = pd.DataFrame(result, columns=['family_id','day','n','ch','pc']) f.sort_values('family_id', inplace=True) assign_day = f['day'].to_list() c = Counter(index) pen = f[f['ch'] > 0] pen.sort_values(['pc','ch'], ascending=False, inplace=True) pen = pen.merge(df, how='inner', on='family_id') #%% score, pcost, acost, daily_double, pc, ap = cost_function(assign_day, family_size_dict, choice_dict) print(f'Score = {score[0]:,.0f}') above = np.where(daily_double > 300,1,0).sum() below = np.where(daily_double < 125,1,0).sum() print(f'Above 300: {above} - max: {np.max(daily_double)}') print(f'Below 125: {below} - min: {np.min(daily_double)}') f.set_index('family_id', inplace=True) submission = f[['day']].copy() submission.columns = ['assigned_day'] assert submission.shape[0] == 5000 submission.to_csv('submission.csv')
def test_cost_function(self): initial_theta = np.ones(self.n+1) lamda = 1.0 cost = cost_function(initial_theta, self.X, self.y, lamda) self.assertAlmostEqual(cost, 303.993, places=3)