我是靠谱客的博主 稳重钢笔,最近开发中收集的这篇文章主要介绍【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)

最后

以上就是稳重钢笔为你收集整理的【Python数据处理】数据降维的全部内容,希望文章能够帮你解决【Python数据处理】数据降维所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部