Python:Kernel based PCA手工代码实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python:Kernel based PCA手工代码实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1429字,纯文字阅读大概需要3分钟。
内容图文
'''
Auther: DeniuHe
Date:2021-03-16
'''
import numpy as np
from sklearn import datasets
from sklearn.metrics.pairwise import rbf_kernel
from sklearn.decomposition import KernelPCA
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
class Kernel_PCA():
def __init__(self,X):
self.X = X
self.N = self.X.shape[0]
self.K = rbf_kernel(X=self.X,gamma=15)
self.In = np.ones((self.N,self.N)) * (1/self.N)
self.K_hat = self.K - self.K @ self.In - self.In @ self.K + self.In @ self.K @ self.In
self.L, self.U = np.linalg.eig(self.K_hat)
# dimensionality reduction
def DR(self,n_component):
a = [i for i in range(n_component)]
ord_ids = np.flipud(np.argsort(self.L))
tar_ids = ord_ids[a]
trans_X = self.K_hat @ self.U[:,tar_ids] / np.sqrt(self.L[tar_ids])
return trans_X
if __name__ == '__main__':
X, y = datasets.make_moons(noise=0.1,n_samples=300,random_state=100)
# plt.scatter(X[:,0],X[:,1],c=y)
# plt.show()
# X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.1,random_state=100)
kpca = Kernel_PCA(X=X)
trans_X = kpca.DR(n_component=2)
plt.scatter(trans_X[:,0],trans_X[:,1],c=y)
plt.show()
X, y = datasets.make_moons(noise=0.1, n_samples=300, random_state=100)
diaobao = KernelPCA(kernel='rbf',n_components=2,gamma=15)
X_diao = diaobao.fit_transform(X)
plt.scatter(X_diao[:,0],X_diao[:,1],c=y)
plt.show()
两个月亮
本文代码效果 (gamma=15)
sklearn调包效果(参数保持相同,即gamma=15)
结果方向貌似反了,不过不要紧。
内容总结
以上是互联网集市为您收集整理的Python:Kernel based PCA手工代码实现全部内容,希望文章能够帮你解决Python:Kernel based PCA手工代码实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。