class KPCA(object): # 核pca def __init__(self, n_components=None, kernel="linear", gamma=None, degree=3, coef0=1, kernel_params=None, alpha=1.0, fit_inverse_transform=False, eigen_solver='auto', tol=0, max_iter=None, remove_zero_eig=False, random_state=None, copy_x=True, n_jobs=None): """ :param n_components: # 想要降维的维度数 :param kernel: "linear/poly/rbf/sigmoid/cosine/preconputed" 默认为linear :param gamma: float 默认为1/n_features rbf, poly, sigmoid核系数,其他核忽略掉 :param degree: int 默认为3 poly核的度, 其他核全部忽略 :param coef0: float 默认为1 poly与sigmoid核的独立项目,其他核忽略掉 :param kernel_params: 默认为None :param alpha: int 默认为1.0 学习方向变换的脊回归超参数(fit_inverse_transform=True) :param fit_inverse_transform: bool 默认为False, 反向计算 :param eigen_solver: [‘auto’|’dense’|’arpack’] 默认为自动,选择要使用的特征转换器。如果n_分量远小 于训练样本的数量,arpack可能比密集的本征溶胶更有效。 :param tol: float default =0 对Arpack的收敛公差。如果为0,最优值将由arpack选择。 :param max_iter:int default =None arpack的最大迭代次数。如果没有,最优值将由arpack选择。 :param remove_zero_eig: 布尔型, 默认为False ,True时,去掉0特征。 输出的分量维度小于 n_components, 设为None时,不管n_components设为多少,0特征都会被删除 :param random_state: 随机种子, 可选项 默认为None :param copy_x: bool default=True 如果为真,则输入x由模型复制并存储在x_fit_属性中 :param n_jobs: int or None default =None 并行个数 """ self.model = KernelPCA(n_components=n_components, kernel=kernel, gamma=gamma, degree=degree, coef0=coef0, kernel_params=kernel_params, alpha=alpha, fit_inverse_transform=fit_inverse_transform, eigen_solver=eigen_solver, tol=tol, max_iter=max_iter, remove_zero_eig=remove_zero_eig, random_state=random_state, copy_X=copy_x, n_jobs=n_jobs) def fit(self, x, y): self.model.fit(X=x, y=y) def transform(self, x): return self.model.transform(X=x) def fit_transform(self, x, y): return self.model.fit_transform(X=x, y=y) def inverse_transform(self, x): return self.model.inverse_transform(X=x) def get_params(self): return self.model.set_params() def set_params(self, **params): self.model.set_params(**params) def get_attributes(self): lambdas = self.model.lambdas_ alphas = self.model.alphas_ dual_coef = self.model.dual_coef_ x_transformed_fit = self.model.X_transformed_fit_ x_fit = self.model.X_fit_ return lambdas, alphas, dual_coef, x_transformed_fit, x_fit