示例#1
0
	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)
示例#2
0
	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)
示例#3
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))
示例#4
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))