【Python数据处理】数据降维

几种简单的数据降维方法以及demo
PCA——主成分分析法
PCA是主成分分析法,为无监督的线性降维法。减去某些相对而言权重不那么高的特征。

from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn import datasets
digits = datasets.load_digits()
features = StandardScaler().fit_transform(digits.data)# 归一化加训练

# PCA做主成分分析,其中whiten是白化,判断每个特征的偏差是否一致;
# n_components的取值为0-1之间的浮点数时,表示希望保留的信息量的比例。
pca = PCA(n_components=0.99, whiten=True)
features_pca = pca.fit_transform(features)
print("Original number of features:", features.shape[1])# shape函数读取一维矩阵的长度
print("Reduced number of features:", features_pca.shape[1])

KPCA——线性不可分数据
线性不可分例如直线或者两个类之间的超平面。KPCA可以同时降维并且让数据线性可分,将数据映射到高维空间使其线性可分,

from sklearn.decomposition import PCA, KernelPCA
from sklearn.datasets import make_circles

# 生成数据集,形成一个二维的大圆,包含一个小圆,即线性不可分。
# noise越小越集中,factor是大小圆的比例因子
features, _ = make_circles(n_samples=1000, random_state=1, noise=0.1, factor=0.1)

# ‘rbf’:高斯核函数,可选linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘cosine’, ‘precomputed’
# gamma是rbf, poly和sigmoid核的核系数。
kpca = KernelPCA(kernel="rbf", gamma=15, n_components=1)
features_kpca = kpca.fit_transform(features)

print("Original number of features:", features.shape[1])
print("Reduced number of features:", features_kpca.shape[1])

LDA——最大化类可分性
和PCA相近,但是可以更加自由地选择分割地维度,并不是一味的局限于主成分。

from sklearn import datasets
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
iris = datasets.load_iris()# iris数据集是常用的分类实验数据集
features = iris.data
target = iris.target

lda = LinearDiscriminantAnalysis(n_components=1)
features_lda = lda.fit(features, target).transform(features)

NMF——矩阵分解法
NMF是无监督的线性降维方式,V=WH,V有n个样本和r个特征。

from sklearn import datasets
from sklearn.decomposition import NMF

digits = datasets.load_digits()
features = digits.data

nmf = NMF(n_components=10, random_state=1)
features_nmf = nmf.fit_transform(features)

TSVD——稀疏数据

from sklearn.preprocessing import StandardScaler
from sklearn import datasets
from sklearn.decomposition import TruncatedSVD
from scipy.sparse import csr_matrix

digits = datasets.load_digits()

features = StandardScaler().fit_transform(digits.data)
features_sparse = csr_matrix(features)
tsvd = TruncatedSVD(n_components=10)
features_sparse_tsvd = tsvd.fit(features_sparse).transform(features_sparse)
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值