大数据,机器学习,人工智能程序员机器学习与数据挖掘

降维——PCA、LDA

2019-03-26  本文已影响3人  dreampai

一、 PCA

PCA 属于一种线性、非监督、全局的降维算法,旨在找到数据的主成分,并利用这些主成分表征原始数据,从而达到降维的目的。

二、LDA

线性判别分析是一种有监督学习算法,在 PCA 中,算法没有考虑数据的标签(类别),只是把原数据映射到一些方差比较大的方向上而已;LDA 算法首先是为了分类服务的,因此只要找到一个投影方向使得投影后的样本尽可能按照原始类别分开,其思想是最大化类间距离和最小化类内距离。

三、PCA 和 LDA 区别

四、coding

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets.samples_generator import make_classification

# 生成数据与展示
X,y=make_classification(n_samples=1000, n_features=3, n_redundant=0, n_classes=3, n_informative=2,
                           n_clusters_per_class=1,class_sep =0.5, random_state =10)
fig=plt.figure()
ax=Axes3D(fig,rect=[0,0,1,1],elev=30,azim=20)
ax.scatter(X[:,0],X[:,1],X[:,2],marker='o',c=y)
plt.show()

# PCA 降维
from sklearn.decomposition import PCA
pca=PCA(n_components=2)
pca.fit(X)
# 方差比例
print(pca.explained_variance_ratio_)
# 方差
print(pca.explained_variance_)
X_new=pca.transform(X)
plt.scatter(X_new[:,0],X_new[:,1],marker='o',c=y)
plt.show()

# LDA 降维
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda=LinearDiscriminantAnalysis(n_components=2)
lda.fit(X,y)
X_new=lda.transform(X)
plt.scatter(X_new[:,0],X_new[:,1],marker='o',c=y)
plt.show()

参考链接

上一篇 下一篇

猜你喜欢

热点阅读