机器学习sklearn无监督学习降维算法pca(代码片段)

404detective 404detective     2022-12-04     347

关键词:







import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets import make_blobs

from sklearn.decomposition import PCA


# X为样本特征,Y为样本簇类别, 共1000个样本,每个样本3个特征,共4个簇
X, y = make_blobs(n_samples=10000, n_features=3, centers=[[3, 3, 3], [0, 0, 0], [1, 1, 1], [2, 2, 2]],
                  cluster_std=[0.2, 0.1, 0.2, 0.2], random_state=9)
fig = plt.figure()
ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=30, azim=20)
plt.scatter(X[:, 0], X[:, 1], X[:, 2], marker='o')
plt.show()


pca = PCA(n_components=2)
# pca = PCA(n_components=0.95)
# pca = PCA(n_components=0.99)
pca = PCA(n_components='mle', svd_solver='full')
pca.fit(X)

print(pca.explained_variance_ratio_)  
# [0.98318212 0.00850037 0.00831751]
print(pca.explained_variance_)  
# [3.78521638 0.03272613 0.03202212]

X_new = pca.transform(X)
# plt.scatter(X_new[:, 0], X_new[:, 1], marker='o')
plt.scatter(X_new[:], X_new[:], marker='o')
plt.show()

观察生成的样本


降为二维

算法自动降为一维,因为此维度算法认为最优

我们可以指定降维后的主成分方差,阈值大于0.98318212则会用第二特征维度。

应用

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets import make_blobs
from sklearn.decomposition import PCA

from sklearn.datasets import load_iris
import pandas as pd
from pandas import DataFrame



iris = load_iris()
iris_X = iris.data   #x有4个属性,共有150个样本点
iris_y = iris.target #y的取值有3个,分别是0,1,2

pca = PCA(n_components=4)
pca.fit(iris_X)
#返回所保留的n个成分各自的方差百分比
print(pca.explained_variance_ratio_)
print(pca.explained_variance_)
#[0.92461872 0.05306648 0.01710261 0.00521218]
#[4.22824171 0.24267075 0.0782095  0.02383509]

#修改维度1,2,3观察效果
pca1 = PCA(n_components=2)
pca1.fit(iris_X)
print(pca1.explained_variance_ratio_)
print(pca1.explained_variance_)

X_new = pca1.transform(iris_X)

#输出一维数据n_components=1
# plt.scatter(X_new[:], X_new[:], marker='o',c=iris_y)
# plt.show()

#输出二维数据n_components=2
plt.scatter(X_new[:, 0], X_new[:, 1], marker='o',c=iris_y)

#输出三维数据n_components=3
#fig = plt.figure()
#ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=30, azim=20)
#plt.scatter(X_new[:, 0], X_new[:, 1], X_new[:, 2], marker='o',c=iris_y)

plt.show()

降为一维

算法自动降为二维

降为三维

由于样本点太少,看得不清楚,放大仔细观察可以分出三类。
(不知道怎么改样本点大小,用makersize会报错 ‘PathCollection’ object has no property ‘makersize’)

机器学习sklearn无监督学习降维算法nmfnon-negativematrixfactorization(代码片段)

importmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportAxes3Dfromsklearn.datasetsimportmake_blobsfromsklearn.decompositionimportNMFfromsklearn.datasetsimportload_irisiris=load_iris()iris_X= 查看详情

机器学习sklearn无监督学习降维算法nmfnon-negativematrixfactorization(代码片段)

importmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportAxes3Dfromsklearn.datasetsimportmake_blobsfromsklearn.decompositionimportNMFfromsklearn.datasetsimportload_irisiris=load_iris()iris_X= 查看详情

有监督学习和无监督学习算法怎么理解?

...什么是学习(learning)?一个成语就可概括:举一反三。机器学习的思路有点类似高考一套套做模拟试题,从而熟悉各种题型,能够面对陌生的问题时算出答案。简而言之,机器学习就是看能不能利用一些训练数据(已经做过的... 查看详情

python与机器学习

...学习的目标机器学习分类pythonscikit-learnscikit-learn常用函数sklearn库的简介无监督学习聚类clustering欧式距离曼哈顿距离马氏距离夹角余弦降维k-means聚类算法DBSCAN密度聚类PCA方法及其应用非负矩阵分解(NMF)基于聚类的“图... 查看详情

机器学习实战基础(二十六):sklearn中的降维算法pca和svd附录

          查看详情

机器学习sklearn无监督学习聚类算法dbscan(代码片段)

importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.clusterimportDBSCANfromsklearn.clusterimportKMeansfromsklearnimportdatasets#生成数据x1,y1=datasets.make_circles(n_samples=2000,factor=0.5 查看详情

机器学习sklearn无监督学习聚类算法dbscan(代码片段)

importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.clusterimportDBSCANfromsklearn.clusterimportKMeansfromsklearnimportdatasets#生成数据x1,y1=datasets.make_circles(n_samples=2000,factor=0.5 查看详情

机器学习实战基础(二十七):sklearn中的降维算法pca和svdpca对手写数字数据集的降维(代码片段)

PCA对手写数字数据集的降维1.导入需要的模块和库fromsklearn.decompositionimportPCAfromsklearn.ensembleimportRandomForestClassifierasRFCfromsklearn.model_selectionimportcross_val_scoreimportmatplotlib.pyplotaspltimportpandas 查看详情

1.2:无监督学习导学

...学习。无监督学习最常应用的场景是聚类和降维。聚类(sklearn.cluster模块)定义聚类(clustering),就是根据数据的“相似性”将数据分为多类的过程。评估两个不同样本之间的“相似性”,通常使用的方法就是计算两... 查看详情

机器学习sklearn无监督学习聚类算法k-means(代码片段)

importmatplotlib.pyplotaspltfromsklearn.datasets.samples_generatorimportmake_blobsfromsklearn.clusterimportKMeans#生成测试数据#X为样本特征,Y为样本簇类别,共1000个样本,每个样本2个特征,对应x和y轴,共4个簇 查看详情

机器学习实战基础(二十三):sklearn中的降维算法pca和svdpca与svd之pca中的svd(代码片段)

 PCA中的SVD1PCA中的SVD哪里来?细心的小伙伴可能注意到了,svd_solver是奇异值分解器的意思,为什么PCA算法下面会有有关奇异值分解的参数?不是两种算法么?我们之前曾经提到过,PCA和SVD涉及了大量的矩阵计算,两者都是运... 查看详情

machinelearning:机器学习算法

...https://riboseyim.github.io/2018/02/10/Machine-Learning-Algorithms/摘要机器学习算法分类:监督学习、半监督学习、无监督学习、强化学习基本的机器学习算法:线性回归、支持向量机(SVM)、最近邻居(KNN)、逻辑回归、决策树、k平均、随机森林... 查看详情

无监督学习——降维

...什么要降维?维数少可以使算法有更快的计算速度,减少机器内存占用等多个特征携带的“信息”有相同或类似的情况(冗余)用于数据可视化如何降维?简单的例子,对于二位数据可以找到一条线将所有的数据映射到这条线上... 查看详情

机器学习——降维(主成分分析pca线性判别分析lda奇异值分解svd局部线性嵌入lle)

机器学习——降维(主成分分析PCA、线性判别分析LDA、奇异值分解SVD、局部线性嵌入LLE)以下资料并非本人原创,因为觉得石头写的好,所以才转发备忘(主成分分析(PCA)原理总结)[https://mp.weixin.qq.com/s/XuXK4inb9Yi-4ELCe_i0EA]来源:?... 查看详情

python机器学习入门之导学+无监督学习

...效的工具集*依赖Python的NumPy,SciPy和matplotlib库*开源可复用sklearn库的安装DOS窗口中输入pipinstall**NumPy(开源科学计算库),SciPy(集成多种数学算法和函数模块)和matplotlib(提供大量绘图工具)库基础上开发的,因此需要先装这些依赖库安装... 查看详情

机器学习基础知识点

机器学习基础知识点文章目录机器学习基础知识点监督学习回归线性回归岭回归lasso回归分类k最近邻分类朴素贝叶斯分类logistic回归支持向量机其他随机梯度下降线性判别分析决策树无监督学习聚类k均值分层次聚类谱聚类高斯混... 查看详情

pca主成分分析算法专题python机器学习系列(十五)(代码片段)

...xff09;】文章目录1.PCA简介2.python实现鸢尾花数据集PCA降维3.sklearn库实现鸢尾花数据集PCA降维案例    🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿἳ 查看详情

机器学习sklearn监督学习回归算法岭回归ridgeregression(代码片段)

fromsklearn.linear_modelimportRidge,LinearRegressionfromsklearn.model_selectionimporttrain_test_splitimportmatplotlib.pyplotaspltimportnumpyasnp#导入数据data_x=[]data_y=[]f=open('E:\\Deskt 查看详情