def poly_regr(self,deg=2): ''' Polynomial linear Regression ''' # Training t0 = time.time() phi = cm.naivePolyFeature(self.X,deg=deg,norm=True) U, s, V = np.linalg.svd(phi,full_matrices=False) r = np.dot(V.T,np.dot(U.T,self.y)/s[:,np.newaxis]) t_tr = time.time() - t0 # Predicting t0 = time.time() phi_pred = cm.naivePolyFeature(self.X_pred,deg=deg,norm=True) y_lr = np.dot(phi_pred,r) t_pr = time.time() - t0 eel = np.mean(np.maximum(self.Value0-self.c-np.sum(y_lr,axis=1),0)) return (eel, t_tr, t_pr)
def poly_ridge(self,deg=2): ''' Polynomial Ridge Regression ''' from sklearn import linear_model # Training t0 = time.time() phi = cm.naivePolyFeature(self.X,deg=deg,norm=True) lm = linear_model.RidgeCV(alphas=np.logspace(-10,-1,10)) lm.fit(phi,self.y) print lm.alpha_ t_tr = time.time() - t0 # Predicting t0 = time.time() phi_pred = cm.naivePolyFeature(self.X_pred,deg=deg,norm=True) y_lr = lm.predict(phi_pred) t_pr = time.time() - t0 eel = np.mean(np.maximum(self.Value0-self.c-np.sum(y_lr,axis=1),0)) return (eel, t_tr, t_pr)
def poly_regr(self,deg=2): ''' Polynomial Regression ''' y_lr = np.zeros((self.I_pred,self.groups)) for group in range(self.groups): X = self.X_all[:,group*10:(group+1)*10] y = self.y_all[:,group] X_pred = self.X_pred_all[:,group*10:(group+1)*10] # Training phi = cm.naivePolyFeature(X,deg=deg,norm=True) #rank = np.linalg.matrix_rank(phi) U, s, V = np.linalg.svd(phi,full_matrices=False) r = np.dot(V.T,np.dot(U.T,y[:,np.newaxis])/s[:,np.newaxis]) # Predicting phi_pred = cm.naivePolyFeature(X_pred,deg=deg,norm=True) y_lr[:,group,np.newaxis] = np.dot(phi_pred,r) print self.Value0-self.c-np.sum(y_lr,axis=1) print max(self.Value0-self.c-np.sum(y_lr,axis=1)) return np.mean(np.maximum(self.Value0-self.c-np.sum(y_lr,axis=1),0))
def poly_regr(self, deg=2): ''' Polynomial Regression ''' y_lr = np.zeros((self.I_pred, self.groups)) for group in range(self.groups): X = self.X_all[:, group * 10:(group + 1) * 10] y = self.y_all[:, group] X_pred = self.X_pred_all[:, group * 10:(group + 1) * 10] # Training phi = cm.naivePolyFeature(X, deg=deg, norm=True) #rank = np.linalg.matrix_rank(phi) U, s, V = np.linalg.svd(phi, full_matrices=False) r = np.dot(V.T, np.dot(U.T, y[:, np.newaxis]) / s[:, np.newaxis]) # Predicting phi_pred = cm.naivePolyFeature(X_pred, deg=deg, norm=True) y_lr[:, group, np.newaxis] = np.dot(phi_pred, r) print self.Value0 - self.c - np.sum(y_lr, axis=1) print max(self.Value0 - self.c - np.sum(y_lr, axis=1)) return np.mean( np.maximum(self.Value0 - self.c - np.sum(y_lr, axis=1), 0))