孪生支持向量回归是基于支持向量回归算法的一种改进方法。求Python的孪生支持向量回归代码,万分感谢
1条回答 默认 最新
- 懒羊羊的南瓜屋 2022-06-08 10:49关注
TSVR.py
import numpy as np from sklearn import preprocessing from sklearn.base import BaseEstimator, RegressorMixin import KernelFunction as kf import TwinPlane1 import TwinPlane2 #__copyright__ = "" #__license__ = "GPL" # __version__ = "1.1" # __maintainer__ = "Arnav Kansal" # __email__ = "ee1130440@ee.iitd.ac.in" # __status__ = "Production" class TwinSVMRegressor(BaseEstimator, RegressorMixin): def __init__(self,Epsilon1=0.1, Epsilon2=0.1, C1=1, C2=1,kernel_type=0,kernel_param=1,regulz1=0.0001, regulz2=0.0001,_estimator_type="regressor"): self.Epsilon1=Epsilon1 self.Epsilon2=Epsilon2 self.C1=C1 self.C2=C2 self.regulz1 = regulz1 self.regulz2 = regulz2 self.kernel_type=kernel_type self.kernel_param=kernel_param def fit(self, X, Y): Y=Y.values.reshape(len(Y),1) assert (type(self.Epsilon1) in [float,int,long]) assert (type(self.Epsilon2) in [float,int,long]) assert (type(self.C1) in [float,int,long]) assert (type(self.C2) in [float,int,long]) assert (type(self.regulz1) in [float,int,long]) assert (type(self.regulz2) in [float,int,long]) assert (type(self.kernel_param) in [float,int,long]) assert (self.kernel_type in [0,1,2,3]) r_x,c=X.shape r_y=Y.shape[0] assert (r_x==r_y) r=r_x e=np.ones((r,1)) if(self.kernel_type==0): # no need to cal kernel H = np.hstack((X,e)) else: H = np.zeros((r,r)) for i in range(r): for j in range(r): H[i][j] = kf.kernelfunction(self.kernel_type,X[i],X[j],self.kernel_param) H = np.hstack((H,e)) #####################Calculation of Function Parameters(Equation of planes) print H [w1,b1] = TwinPlane1.Twin_plane_1(H,Y,self.C1,self.Epsilon1,self.regulz1) [w2,b2] = TwinPlane2.Twin_plane_2(H,Y,self.C2,self.Epsilon2,self.regulz2) self.plane1_coeff_ = w1 self.plane1_offset_ = b1 self.plane2_coeff_ = w2 self.plane2_offset_ = b2 self.data_ = X np.savetxt("w1.txt",w1) np.savetxt("b1.txt",b1) np.savetxt("w2.txt",w2) np.savetxt("b2.txt",b2) return self def get_params(self, deep=True): return {"Epsilon1": self.Epsilon1, "Epsilon2": self.Epsilon2, "C1": self.C1, "C2": self.C2, "regulz1": self.regulz1, "regulz2":self.regulz2, "kernel_type": self.kernel_type, "kernel_param": self.kernel_param} def set_params(self, **parameters): for parameter, value in parameters.items(): #self.setattr(parameter, value) setattr(self,parameter, value) return self def predict(self, X): #X_test = preprocessing.scale(X) if(self.kernel_type==0): # no need to cal kernel S = X else: S = np.zeros((X.shape[0],self.data_.shape[0])) for i in range(X.shape[0]): for j in range(self.data_.shape[0]): S[i][j] = kf.kernelfunction(self.kernel_type,X[i],self.data_[j].T,self.kernel_param) y1 = np.dot(S,self.plane1_coeff_)+ ((self.plane1_offset_)*(np.ones((X.shape[0],1)))) y2 = np.dot(S,self.plane2_coeff_)+ ((self.plane2_offset_)*(np.ones((X.shape[0],1)))) ###############Compute test data predictions return (y1+y2)/2
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 宇视监控服务器无法登录
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥15 DruidDataSource一直closing
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据