svd分解
创始人
2024-03-26 14:26:45

 sklearn中svd分解

class sklearn.decomposition.TruncatedSVD(n_components=2, *, algorithm='randomized', n_iter=5, random_state=None, tol=0.0)

参数:

n_components整数,默认=2

输出数据的所需维度。必须严格小于特征数。默认值对可视化很有用。对于 LSA,建议值为 100。

algorithm{‘arpack’, ‘randomized’},默认='随机'

要使用的 SVD 求解器。 “arpack” 用于 SciPy (scipy.sparse.linalg.svds) 中的 ARPACK 包装器,或 “randomized” 用于 Halko (2009) 中的随机算法。

n_iter整数,默认=5

随机 SVD 求解器的迭代次数。 ARPACK 不使用。默认值大于 randomized_svd 中的默认值,以处理可能具有大的缓慢衰减频谱的稀疏矩阵。

random_stateint,RandomState 实例或无,默认=无

在随机 svd 期间使用。传递一个 int 以获得跨多个函数调用的可重现结果。请参阅词汇表。

tol浮点数,默认=0.0

ARPACK 的容差。 0 表示机器精度。被随机 SVD 求解器忽略。

属性:

components_ndarray 形状(n_components,n_features)

输入数据的右奇异向量。

explained_variance_ndarray 形状 (n_components,)

通过投影变换到每个分量的训练样本的方差。

explained_variance_ratio_ndarray 形状 (n_components,)

每个选定组件解释的方差百分比。

singular_values_ndarray od 形状(n_components,)

对应于每个选定组件的奇异值。奇异值等于 lower-dimensional 空间中 n_components 变量的 2 范数。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

方法

fit(X[, y])

Fit model on training data X.(在训练数据上拟合模型x)

fit_transform(X[, y])

Fit model to X and perform dimensionality reduction on X.

get_feature_names_out([input_features])

Get output feature names for transformation.(获取转换的输出特征名称)

get_params([deep])

Get parameters for this estimator.(获取此估算器的参数)

inverse_transform(X)

Transform X back to its original space.(将X转换回原始空间)

set_params(**params)

Set the parameters of this estimator.

transform(X)

Perform dimensionality reduction on X.

from sklearn.decomposition import TruncatedSVD
from scipy.sparse import csr_matrix
import numpy as np
np.random.seed(0)X_dense = np.random.rand(10, 10)
X_dense[:, 2 * np.arange(5)] = 0X = csr_matrix(X_dense)
print('稀疏矩阵\n',X)
#定义svd模型
svd = TruncatedSVD(n_components=3, n_iter=7, random_state=42)
#训练模型
svd.fit(X)print('所选特征方差百分比',svd.explained_variance_ratio_)
print('方差百分比',svd.explained_variance_ratio_.sum())
print('每个特征的奇异值',svd.singular_values_)
print('模型的参数',svd.get_params(deep=True))
x=np.random.rand(1, 10)
print('之前的数据',x)
print('转换后的数据',svd.transform(x))

from sklearn.decomposition import TruncatedSVD
from scipy.sparse import random as r
import numpy as np
# 假设数据是5*10的
x=np.random.randint(1,10,size=[5,10])
# print("原始数据\n",x)
print('原始数据维度',x.shape)svd=TruncatedSVD(n_components=5)
svd.fit(x)
new_x=svd.transform(x)
print('新的数据维度',new_x.shape)# 手工降维,right即为svd分解后的右矩阵
right=svd.components_
print(right.shape)
# 计算
print('手工降维',np.dot(x,right[:,:].T))# sklearn可以直接复原
print(svd.inverse_transform(new_x))

使用numpy进行降维和复原

import numpy as np
# 假设数据是5*10的
x=np.random.randint(1,10,size=[5,10])
# print("原始数据\n",x)
print('原始数据维度',x.shape)# 可以得到三个矩阵
u,s,v=np.linalg.svd(x)
print("u,s,v的形状:")
print("u:",u.shape)
print("s:",s.shape)
print("v:",v.shape)

降维,利用x,v实现降维

import numpy as np
# 假设数据是5*10的
x=np.random.randint(1,10,size=[5,10])
# print("原始数据\n",x)
print('原始数据维度',x.shape)# 可以得到三个矩阵
u,s,v=np.linalg.svd(x)
print("u,s,v的形状:")
print("u:",u.shape)
print("s:",s.shape)
print("v:",v.shape)# 降维结果与sklearn基本一致,假设降维到n_com=5
print(np.dot(x,v[:5,:].T))

利用u,s,v复原

import numpy as np
# 假设数据是5*10的
x=np.random.randint(1,10,size=[5,10])
print("原始数据\n",x)
print('原始数据维度',x.shape)# 可以得到三个矩阵
u,s,v=np.linalg.svd(x)
print("u,s,v的形状:")
print("u:",u.shape)
print("s:",s.shape)
print("v:",v.shape)# 降维结果与sklearn基本一致,假设降维到n_com=5
print(np.dot(x,v[:5,:].T))# m为原始行数,n为原始列数
m = 5
n = 10
# 将u、v、s三个矩阵进行运算,将结果累加到a中并返回
a = np.zeros([m, n])for i in range(0,5):# 依次取出u和v矩阵的对应数据,并reshapeui = u[:, i].reshape(m, 1)vi = v[i].reshape(1, n)# 将其按照s的权重进行累加a += s[i] * np.dot(ui, vi)
# 结果与原始数据基本一致
print(a)

参考文献

用截断奇异值分解(Truncated SVD)降维_纸上得来终觉浅~的博客-CSDN博客_截断奇异值分解

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...