机器学习2

import numpy as np

X = np.array([
[1, 3, 6],
[5, 7, 9],
[4, 5, 9]
])
def myPCA(X, k):
# m_sample :m个样本, n_feature:n个特征
m_sample, n_feature = X.shape
# 一。去中心化
# 1.计算 每一个 属性的均值
mean = np.mean(X, axis=0)
# 2. 去中心化
X = X - mean
# 二。构造协方差矩阵
cov_mat = np.dot(X.T, X)
# 三 。求出 协方差矩阵 cov_mat,特征值lmd s 和对应的 特征向量us
lmd_s, us = np.linalg.eig(cov_mat) # lmd_s = [入1,入2,入3] ,us = [u1,u2,u3]
# print(lmd_s,'\n',us)
us = us.T
# print(lmd_s, '\n', us)
# [(λ1,us1),(λ2,us2),(λ3,us3)]
# 四。绑定 特征值 和 特征向量
eig_pair = []
for i in range(n_feature):
pair = (lmd_s[i], us[i])
eig_pair.append(pair)
# 五。对 eig_pair 从大到小排序
eig_pair.sort(reverse=True)
# 六。拼接k列的U矩阵
# print(eig_pair)
'''
[(21.73098264032146, array([0.63112622, 0.58851165, 0.50530559])),
(0.9356840263451855, array([ 0.10731153, -0.71141623, 0.69452947])),
(1.008137404897603e-15, array([ 0.76822128, -0.38411064, -0.51214752]))]
'''
U = eig_pair[0][1]
# U = np.c_(U,eig_pair[1][1])
# U = np.c_(U,eig_pair[2][1])
for i in range(1, k):
U = np.c_[U, eig_pair[i][1]]
# 七.将 协方差 矩阵 进行 降维
return np.dot(X, U)


# 进行函数调用
print(myPCA(X, 2))

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值