概述
几种简单的数据降维方法以及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数据处理】数据降维所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复