Ejemplo n.º 1
0
 def __init__(self, n_dims, kernel="linear", copy=True):
     self.n_dims = n_dims
     self.copy = copy
     self.kernel = kernels.KERNEL_TYPES[kernel]   # 将字符串转化为相应的核函数
     self.X = None   # 样本要保存 因为这是核方法
     self.alphas = None
     self.lambdas = None
     self.centerer = KernelCenterer()
Ejemplo n.º 2
0
class KernelPCA:
    def __init__(self, n_dims, kernel="linear", copy=True):
        self.n_dims = n_dims
        self.copy = copy
        self.kernel = kernels.KERNEL_TYPES[kernel]   # 将字符串转化为相应的核函数
        self.X = None   # 样本要保存 因为这是核方法
        self.alphas = None
        self.lambdas = None
        self.centerer = KernelCenterer()

    def fit(self, X, y=None):
        self._fit(X)
        return self

    def transform(self, X):
        K = self.kernel(X, self.X)
        K = self.centerer.transform(K)
        return np.dot(K, self.alphas) / np.sqrt(self.lambdas)

    def fit_transform(self, X, y=None):
        self._fit(X)
        return self.alphas * np.sqrt(self.lambdas)

    def _fit(self, X):
        self.X = X
        # 计算核矩阵
        K = self.kernel(X, X)
        # 中心化核矩阵 目的是为了隐式地让转换后的特征是归一化的!
        K = self.centerer.fit_transform(K)
        # 求核矩阵的特征值,特征向量
        self.lambdas, self.alphas = scipy.linalg.eigh(K, eigvals=(K.shape[0] - self.n_dims, K.shape[0] - 1))
        # 对特征值,特征向量进行处理
        indices = self.lambdas.argsort()[::-1]
        self.lambdas = self.lambdas[indices]
        self.alphas = self.alphas[:, indices]
        # 去除特征值等于0的特征向量
        self.alphas = self.alphas[:, self.lambdas > 0]
        self.lambdas = self.lambdas[self.lambdas > 0]
Ejemplo n.º 3
0
def test_center_kernel():
    """Test that KernelCenterer is equivalent to StandardScaler
       in feature space"""
    rng = np.random.RandomState(0)
    X_fit = rng.random_sample((5, 4))
    scaler = StandardScaler(with_std=False)
    scaler.fit(X_fit)
    X_fit_centered = scaler.transform(X_fit)
    K_fit = np.dot(X_fit, X_fit.T)

    # center fit time matrix
    centerer = KernelCenterer()
    K_fit_centered = np.dot(X_fit_centered, X_fit_centered.T)
    K_fit_centered2 = centerer.fit_transform(K_fit)
    assert_array_almost_equal(K_fit_centered, K_fit_centered2)

    # center predict time matrix
    X_pred = rng.random_sample((2, 4))
    K_pred = np.dot(X_pred, X_fit.T)
    X_pred_centered = scaler.transform(X_pred)
    K_pred_centered = np.dot(X_pred_centered, X_fit_centered.T)
    K_pred_centered2 = centerer.transform(K_pred)
    assert_array_almost_equal(K_pred_centered, K_pred_centered2)
Ejemplo n.º 4
0
def test_center_kernel():
    """Test that KernelCenterer is equivalent to StandardScaler
       in feature space"""
    rng = np.random.RandomState(0)
    X_fit = rng.random_sample((5, 4))
    scaler = StandardScaler(with_std=False)
    scaler.fit(X_fit)
    X_fit_centered = scaler.transform(X_fit)
    K_fit = np.dot(X_fit, X_fit.T)

    # center fit time matrix
    centerer = KernelCenterer()
    K_fit_centered = np.dot(X_fit_centered, X_fit_centered.T)
    K_fit_centered2 = centerer.fit_transform(K_fit)
    assert_array_almost_equal(K_fit_centered, K_fit_centered2)

    # center predict time matrix
    X_pred = rng.random_sample((2, 4))
    K_pred = np.dot(X_pred, X_fit.T)
    X_pred_centered = scaler.transform(X_pred)
    K_pred_centered = np.dot(X_pred_centered, X_fit_centered.T)
    K_pred_centered2 = centerer.transform(K_pred)
    assert_array_almost_equal(K_pred_centered, K_pred_centered2)
Ejemplo n.º 5
0
			'GaussianProcessRegressor':GaussianProcessRegressor(),
			'GaussianRandomProjection':GaussianRandomProjection(),
			'GenericUnivariateSelect':GenericUnivariateSelect(),
			'GradientBoostingClassifier':GradientBoostingClassifier(),
			'GradientBoostingRegressor':GradientBoostingRegressor(),
			'GraphLasso':GraphLasso(),
			'GraphLassoCV':GraphLassoCV(),
			'HuberRegressor':HuberRegressor(),
			'Imputer':Imputer(),
			'IncrementalPCA':IncrementalPCA(),
			'IsolationForest':IsolationForest(),
			'Isomap':Isomap(),
			'KMeans':KMeans(),
			'KNeighborsClassifier':KNeighborsClassifier(),
			'KNeighborsRegressor':KNeighborsRegressor(),
			'KernelCenterer':KernelCenterer(),
			'KernelDensity':KernelDensity(),
			'KernelPCA':KernelPCA(),
			'KernelRidge':KernelRidge(),
			'LSHForest':LSHForest(),
			'LabelPropagation':LabelPropagation(),
			'LabelSpreading':LabelSpreading(),
			'Lars':Lars(),
			'LarsCV':LarsCV(),
			'Lasso':Lasso(),
			'LassoCV':LassoCV(),
			'LassoLars':LassoLars(),
			'LassoLarsCV':LassoLarsCV(),
			'LassoLarsIC':LassoLarsIC(),
			'LatentDirichletAllocation':LatentDirichletAllocation(),
			'LedoitWolf':LedoitWolf(),