当前位置: 首页 > news >正文

帮客户做网站内容如何学习做网站

帮客户做网站内容,如何学习做网站,h5免费制作平台八图,一起做网店潮汕站#x1f3a9; 欢迎来到技术探索的奇幻世界#x1f468;‍#x1f4bb; #x1f4dc; 个人主页#xff1a;一伦明悦-CSDN博客 ✍#x1f3fb; 作者简介#xff1a; C软件开发、Python机器学习爱好者 #x1f5e3;️ 互动与支持#xff1a;#x1f4ac;评论 … 欢迎来到技术探索的奇幻世界‍ 个人主页一伦明悦-CSDN博客 ✍ 作者简介 C软件开发、Python机器学习爱好者 ️ 互动与支持评论      点赞      收藏     关注 如果文章有所帮助欢迎留下您宝贵的评论 点赞加收藏支持我点击关注一起进步 引言 主成分分析Principal Component Analysis, PCA是一种常用的机器学习和数据分析技术用于降低数据维度、识别数据中的模式、发现变量之间的关系等。以下是PCA技术的详细介绍 基本概念 PCA旨在通过线性变换将原始数据投影到一个新的坐标系中新坐标系中的坐标轴称为主成分。这些主成分按照方差大小递减的顺序排列第一主成分具有最大的方差第二主成分具有第二大的方差依此类推。 数学原理 PCA通过计算数据的协方差矩阵或相关矩阵然后对其进行特征值分解或奇异值分解以获得主成分和对应的特征向量。这些特征向量定义了新的坐标系而数据投影到这些特征向量上形成的新坐标即为主成分。 应用步骤 数据标准化对原始数据进行标准化处理使得不同维度的数据具有相同的尺度。计算协方差矩阵计算标准化后的数据的协方差矩阵。特征值分解对协方差矩阵进行特征值分解或奇异值分解得到特征值和特征向量。选择主成分按照特征值的大小选择前k个主成分这些主成分对应的特征向量构成了新的特征空间。 降维和数据压缩 PCA通过保留最重要的主成分即方差较大的主成分来实现数据的降维从而减少数据的复杂度和存储空间同时保留数据中的关键信息。 PCA的应用领域 数据可视化通过降维将高维数据可视化到二维或三维空间帮助分析人员理解数据的结构。特征提取在机器学习中PCA可以用来提取数据中最重要的特征以便于后续的分类、回归或聚类任务。噪声过滤PCA可以过滤掉数据中的噪声成分提高数据的质量和后续分析的准确性。 正文 01-对数据集进行主成分分析并计算各主成分的方差贡献率 这段代码主要进行了以下操作 导入所需的模块 导入了numpynp、pandaspd和matplotlib.pyplotplt等常用的数据处理和可视化模块。导入了Axes3D和cm模块用于创建3D图形和设置颜色映射。使用warnings模块过滤警告信息避免在程序运行过程中输出警告。设置matplotlib绘图显示中文字符的字体和解决负号显示问题。导入了make_regression、make_circles、make_s_curve等数据集生成函数以及train_test_split等模型选择相关函数。导入FactorAnalyzer用于因子分析。 创建子图及设置图形参数 使用plt.subplots创建1行2列的子图设置子图的大小为15x6。 生成数据并进行可视化 对于noise取30和10两种情况分别生成包含50个样本观测点的数据集。使用make_regression生成具有线性关系的数据集其中包括一个特征和一个目标变量同时受到指定程度的噪声干扰。将生成的数据集绘制为散点图分布在两个子图中。设置子图标题、横纵坐标标签、显示网格线并在图中添加标注显示各特征的离散程度。 保存图形 使用plt.savefig将绘制的图形保存为文件文件名为…/4.png分辨率为500dpi。 总体来说这段代码通过生成具有线性关系的带有噪声的数据集并通过散点图可视化展示了各个特征的分布情况同时对数据的离散程度进行了说明。并最终将绘制的图形保存为文件。 #本章需导入的模块 import numpy as np import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from pylab import * import matplotlib.cm as cm import warnings warnings.filterwarnings(action ignore) %matplotlib inline plt.rcParams[font.sans-serif][SimHei] #解决中文显示乱码问题 plt.rcParams[axes.unicode_minus]False from sklearn.datasets import make_regression,make_circles,make_s_curve from sklearn.model_selection import train_test_split from scipy.stats import multivariate_normal from sklearn import decomposition from factor_analyzer import FactorAnalyzerfig,axesplt.subplots(nrows1,ncols2,figsize(15,6)) N50 for i,noise in enumerate([30,10]): X,Ymake_regression(n_samplesN,n_features1,random_state123,noisenoise,bias0)Xnp.hstack((X,Y.reshape(len(X),1)))axes[i].scatter(X[:,0],X[:,1],markero,s50)axes[i].set_title(%d个样本观测点的分布%N)axes[i].set_xlabel(X1)axes[i].set_ylabel(X2)axes[i].grid(True,linestyle-.)axes[i].text(-3,75,离散程度:X1%.2f;\n X2%.2f;%(np.std(X[:,0])/np.mean(X[:,0]),np.std(X[:,1])/np.mean(X[:,1])),fontdict{size:12,color:b}) plt.savefig(../4.png, dpi500) 运行结果如下图所示  这段代码的作用是使用主成分分析PCA对生成的带有噪声的数据集进行降维并可视化降维后的结果。 具体解释如下 创建子图及设置图形参数 fig, axes plt.subplots(nrows1, ncols2, figsize(15, 6))创建包含1行2列的子图每个子图的大小为15x6英寸。 PCA模型的应用 pca decomposition.PCA(n_components2, random_state1)初始化PCA对象指定降维后保留的主成分数量为2并设置随机种子以确保结果的可重复性。 生成数据并进行降维 for i, noise in enumerate([30, 10]):循环两次分别处理噪声为30和10的情况。X, Y make_regression(n_samplesN, n_features1, random_state123, noisenoise, bias0)生成包含50个样本观测点的数据集其中特征数为1同时受指定程度的噪声影响。X np.hstack((X, Y.reshape(len(X), 1)))将生成的特征X和目标变量Y合并成一个数组。pca.fit(X)对数据集X进行PCA拟合计算主成分和其它相关参数。 获取PCA结果并绘图 pca.singular_values_获取PCA模型中的奇异值即主成分的特征值。pca.components_获取PCA模型的主成分特征向量。y pca.transform(X)将原始数据集X转换到主成分空间得到降维后的数据y。axes[i].scatter(y[:, 0], y[:, 1], markero, s50)在第i个子图中绘制降维后的数据y的散点图x轴为第一个主成分y轴为第二个主成分。axes[i].set_title(%d个样本观测点的分布(方差贡献率:y1%.3f,y2%.3f)\n系数:%s%(N, p1, p2, a))设置子图标题显示样本数量、每个主成分的方差贡献率、以及主成分系数。axes[i].set_xlabel(y1) 和 axes[i].set_ylabel(y2)设置子图的x轴和y轴标签。axes[i].grid(True, linestyle-.)显示子图的网格线。 保存图形 plt.savefig(../4.png, dpi500)将绘制的子图保存为文件文件名为…/4.png分辨率为500dpi。 总体来说这段代码通过PCA将高维数据降至二维并展示降维后的数据分布情况及主成分的贡献率和系数最后将结果保存为图片文件。 fig,axesplt.subplots(nrows1,ncols2,figsize(15,6)) pcadecomposition.PCA(n_components2,random_state1) for i,noise in enumerate([30,10]): X,Ymake_regression(n_samplesN,n_features1,random_state123,noisenoise,bias0)Xnp.hstack((X,Y.reshape(len(X),1)))pca.fit(X) p1pca.singular_values_[0]/sum(pca.singular_values_) #p1pca.explained_variance_ratio_[0]p2pca.singular_values_[1]/sum(pca.singular_values_) #p2pca.explained_variance_ratio_[1] apca.components_ypca.transform(X)axes[i].scatter(y[:,0],y[:,1],markero,s50)axes[i].set_title(%d个样本观测点的分布(方差贡献率:y1%.3f,y2%.3f)\n系数:%s%(N,p1,p2,a))axes[i].set_xlabel(y1)axes[i].set_ylabel(y2)axes[i].grid(True,linestyle-.) plt.savefig(../4.png, dpi500) 运行结果如下图所示 02-核主成分分析 这段代码的作用是生成并可视化两个不同维度的数据集包括二维平面和三维空间的样本分布。 具体解释如下 导入必要的库 import numpy as np: 导入数值计算库numpy。import pandas as pd: 导入数据处理库pandas未在代码中使用。import matplotlib.pyplot as plt: 导入绘图库matplotlib。from mpl_toolkits.mplot3d import Axes3D: 导入用于绘制3D图形的模块。from pylab import *: 导入pylab模块中的所有内容未在代码中使用。import matplotlib.cm as cm: 导入颜色映射模块。import warnings: 导入警告处理模块。warnings.filterwarnings(actionignore): 设置忽略警告。%matplotlib inline: 在Jupyter Notebook中使用matplotlib绘图时需要的魔法命令用于在输出单元格中显示图形。plt.rcParams[font.sans-serif][SimHei] 和 plt.rcParams[axes.unicode_minus]False设置matplotlib以显示中文和解决负号显示问题。from sklearn.datasets import make_regression, make_circles, make_s_curve: 导入生成数据集的模块。from sklearn.model_selection import train_test_split: 导入数据集划分模块。from scipy.stats import multivariate_normal: 导入多元正态分布模块。from sklearn import decomposition: 导入降维算法PCA的模块。from factor_analyzer import FactorAnalyzer: 导入因子分析模块未在代码中使用。 设置常量和生成二维数据 N 100: 设置生成数据集的样本数量为100。X, Y make_circles(n_samplesN, noise0.2, factor0.5, random_state123): 生成包含100个样本观测点的圆环形数据集噪声为0.2因子为0.5。 绘制二维数据分布 fig plt.figure(figsize(18, 6)): 创建图形对象设置图形大小为18x6英寸。markers [^, o]: 定义两种不同的标记样式。ax fig.add_subplot(121): 创建第一个子图将其添加到图形中。循环绘制两个类别的数据点根据类别使用不同的标记样式。ax.set_title(100个样本观测点在二维空间中的分布): 设置子图标题。ax.set_xlabel(y1) 和 ax.set_ylabel(y2): 设置x轴和y轴标签。ax.grid(True, linestyle-.): 显示子图的网格线。 生成三维数据并绘制分布 ax fig.add_subplot(122, projection3d): 创建第二个子图使用3D投影。var multivariate_normal(mean[0,0], cov[[1,0],[0,1]]): 定义二维正态分布的参数。将二维数据与正态分布的概率密度函数值结合形成一个包含三个特征的数据集。使用循环绘制两个类别的数据点根据类别使用不同的标记样式。ax.set_xlabel(X1), ax.set_ylabel(X2), ax.set_zlabel(X3): 设置三维坐标轴的标签。ax.set_title(三维空间下100个样本观测点的分布): 设置子图标题。 保存图形 plt.savefig(../4.png, dpi500): 将绘制的整个图形保存为文件文件名为…/4.png分辨率为500dpi。 总体来说这段代码通过使用make_circles生成二维数据和multivariate_normal生成三维数据展示了不同维度空间下数据分布的可视化效果并保存为图片文件。 #本章需导入的模块 import numpy as np import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from pylab import * import matplotlib.cm as cm import warnings warnings.filterwarnings(action ignore) %matplotlib inline plt.rcParams[font.sans-serif][SimHei] #解决中文显示乱码问题 plt.rcParams[axes.unicode_minus]False from sklearn.datasets import make_regression,make_circles,make_s_curve from sklearn.model_selection import train_test_split from scipy.stats import multivariate_normal from sklearn import decomposition from factor_analyzer import FactorAnalyzerN100 X,Ymake_circles(n_samplesN,noise0.2,factor0.5,random_state123) fig plt.figure(figsize(18,6)) markers[^,o] ax fig.add_subplot(121) for k,m in zip([1,0],markers):ax.scatter(X[Yk,0],X[Yk,1],markerm,s50) ax.set_title(100个样本观测点在二维空间中的分布) ax.set_xlabel(y1) ax.set_ylabel(y2) ax.grid(True,linestyle-.) ax fig.add_subplot(122, projection3d) var multivariate_normal(mean[0,0], cov[[1,0],[0,1]])Znp.zeros((len(X),)) for i,x in enumerate(X):Z[i]var.pdf(x) Xnp.hstack((X,Z.reshape(len(X),1))) for k,m in zip([1,0],markers):ax.scatter(X[Yk,0],X[Yk,1],X[Yk,2],markerm,s40) ax.set_xlabel(X1) ax.set_ylabel(X2) ax.set_zlabel(X3) ax.set_title(三维空间下100个样本观测点的分布) plt.savefig(../4.png, dpi500) 运行结果如下图所示 这段代码实现了核主成分分析Kernel PCA并将结果可视化。下面是详细解释 设置图形大小 plt.figure(figsize(15, 6)): 创建一个新的图形对象并设置图形大小为15x6英寸。 定义核函数类型 kernels [linear, rbf]: 定义了两种核函数类型线性核和径向基函数RBF核。 进行核主成分分析和可视化 for i, kernel in enumerate(kernels):: 循环处理每种核函数类型。 kpca decomposition.KernelPCA(n_components2, kernelkernel): 创建一个核主成分分析对象指定将数据映射到2维空间并选择当前循环的核函数类型。kpca.fit(X): 对原始数据 X 进行核主成分分析拟合。y kpca.transform(X): 将原始数据映射到降维后的2维空间。 输出方差贡献率 print(方差贡献率(%s)%s%(kernel,kpca.lambdas_/sum(kpca.lambdas_))): 输出每种核函数类型下每个主成分的方差贡献率。 绘制子图 plt.subplot(1, 2, i1): 在1x2的子图中选择第i1个子图进行绘制。for k, m in zip([1, 0], markers):: 循环绘制两个类别的数据点。 plt.scatter(y[Yk, 0], y[Yk, 1], markerm, s50): 根据降维后的数据 y 和类别 Y绘制散点图使用不同的标记样式 m 表示不同的类别。plt.grid(True, linestyle-.): 显示子图的网格线。plt.title(核主成分分析结果(核函数:%s) % kernel): 设置子图的标题指明当前使用的核函数类型。 保存图形 plt.savefig(../4.png, dpi500): 将绘制的整个图形保存为文件文件名为…/4.png分辨率为500dpi。 这段代码通过核主成分分析对原始数据 X 进行降维并利用不同核函数类型线性和RBF展示了降维后的数据分布情况。每个子图显示了相应核函数下的数据点分布同时保存整个图形为文件。 plt.figure(figsize(15,6)) kernels[linear,rbf] for i,kernel in enumerate(kernels):kpcadecomposition.KernelPCA(n_components2,kernelkernel)kpca.fit(X)ykpca.transform(X)print(方差贡献率(%s)%s%(kernel,kpca.lambdas_/sum(kpca.lambdas_)))plt.subplot(1,2,i1)for k,m in zip([1,0],markers):plt.scatter(y[Yk,0],y[Yk,1],markerm,s50)plt.grid(True,linestyle-.)plt.title(核主成分分析结果(核函数:%s)%kernel) plt.savefig(../4.png, dpi500) 运行结果如下图所示 这段代码用于生成一个三维 S 形曲面数据集并将其可视化为三维散点图并保存为图片。 生成 S 形曲面数据集 X, t make_s_curve(n_samples8000, noise0, random_state123): 使用 make_s_curve 函数生成一个包含8000个样本的 S 形曲面数据集。X 是特征数据t 是对应的颜色标签在此处用来绘制不同颜色的数据点。 创建图形对象 fig plt.figure(figsize(12, 6)): 创建一个新的图形对象设置图形大小为12x6英寸。 添加三维子图 ax fig.add_subplot(111, projection3d): 在图形对象中添加一个三维子图使用投影类型为3D。 绘制三维散点图 color np.array(t): 将颜色标签 t 转换为numpy数组用于散点的颜色映射。ax.scatter(X[:, 0], X[:, 1], X[:, 2], s8, colorplt.cm.Spectral(color)): 绘制三维散点图。X[:, 0], X[:, 1], X[:, 2] 分别表示数据集中的三个特征维度s8 指定散点的大小colorplt.cm.Spectral(color) 根据颜色标签 t 使用彩色映射来绘制不同颜色的数据点。 设置坐标轴标签 ax.set_xlabel(X1), ax.set_ylabel(X2), ax.set_zlabel(X3): 设置三维子图的 x、y、z 轴标签为 “X1”、“X2”、“X3”。 保存图形 plt.savefig(../4.png, dpi500): 将绘制的三维散点图保存为文件文件名为…/4.png分辨率为500dpi。 这段代码通过使用 make_s_curve 函数生成的 S 形曲面数据集利用三维散点图展示了数据点的分布情况并将图形保存为文件。 X,tmake_s_curve(n_samples8000, noise0, random_state123) fig plt.figure(figsize(12,6)) #ax Axes3D(fig) ax fig.add_subplot(111, projection3d) colornp.array(t) ax.scatter(X[:,0],X[:,1],X[:,2],s8,colorplt.cm.Spectral(color)) ax.set_xlabel(X1) ax.set_ylabel(X2) ax.set_zlabel(X3) plt.savefig(../4.png, dpi500) 运行结果如下图所示 这段代码创建了一个包含三个子图的图形并在每个子图中绘制了二维散点图展示了数据集在不同维度的投影关系。最终将整个图形保存为文件。 创建包含三个子图的图形 fig, axes plt.subplots(nrows1, ncols3, figsize(20, 6)): 创建一个具有一行三列的子图布局总共包含三个子图设置图形大小为20x6英寸。fig 是整个图形对象axes 是包含三个子图的数组。 在第一个子图绘制 X1-X2 的散点图 axes[0].scatter(X[:, 0], X[:, 1], s8, colorplt.cm.Spectral(color)): 在第一个子图中绘制 X1-X2 的二维散点图。数据集的第一列作为X轴第二列作为Y轴s8 指定散点的大小colorplt.cm.Spectral(color) 根据颜色标签 t 使用彩色映射来绘制不同颜色的数据点。axes[0].set_xlabel(X1): 设置第一个子图的 x 轴标签为 “X1”。axes[0].set_ylabel(X2): 设置第一个子图的 y 轴标签为 “X2”。 在第二个子图绘制 X1-X3 的散点图 axes[1].scatter(X[:, 0], X[:, 2], s8, colorplt.cm.Spectral(color)): 在第二个子图中绘制 X1-X3 的二维散点图。数据集的第一列作为X轴第三列作为Y轴s8 指定散点的大小colorplt.cm.Spectral(color) 使用彩色映射来绘制不同颜色的数据点。axes[1].set_xlabel(X1): 设置第二个子图的 x 轴标签为 “X1”。axes[1].set_ylabel(X3): 设置第二个子图的 y 轴标签为 “X3”。 在第三个子图绘制 X2-X3 的散点图 axes[2].scatter(X[:, 1], X[:, 2], s8, colorplt.cm.Spectral(color)): 在第三个子图中绘制 X2-X3 的二维散点图。数据集的第二列作为X轴第三列作为Y轴s8 指定散点的大小colorplt.cm.Spectral(color) 使用彩色映射来绘制不同颜色的数据点。axes[2].set_xlabel(X2): 设置第三个子图的 x 轴标签为 “X2”。axes[2].set_ylabel(X3): 设置第三个子图的 y 轴标签为 “X3”。 保存图形 plt.savefig(../4.png, dpi500): 将包含三个子图的图形保存为文件文件名为…/4.png分辨率为500dpi。 这段代码将数据集在不同维度的投影关系通过三个二维散点图展示了出来并将整个图形保存为文件。 fig,axesplt.subplots(nrows1,ncols3,figsize(20,6)) axes[0].scatter(X[:,0],X[:,1],s8,colorplt.cm.Spectral(color)) axes[0].set_xlabel(X1) axes[0].set_ylabel(X2) axes[1].scatter(X[:,0],X[:,2],s8,colorplt.cm.Spectral(color)) axes[1].set_xlabel(X1) axes[1].set_ylabel(X3) axes[2].scatter(X[:,1],X[:,2],s8,colorplt.cm.Spectral(color)) axes[2].set_xlabel(X2) axes[2].set_ylabel(X3) plt.savefig(../4.png, dpi500) 运行结果如下图所示 这段代码执行了核主成分分析Kernel PCA并将结果可视化在三个不同的子图中每个子图使用不同的核函数进行分析。 数据准备 tmp X[:, [0, 2]]: 从原始数据集 X 中选择第1列和第3列特征作为新的数据集 tmp用于后续的主成分分析。 定义核函数列表 kernels [linear, rbf, poly]: 定义了三种核函数类型分别是线性核linear、高斯径向基函数核rbf、多项式核poly。 创建图形对象 plt.figure(figsize(15, 4)): 创建一个图形对象设置图形大小为15x4英寸。 循环执行主成分分析和可视化 for i, kernel in enumerate(kernels):遍历三种核函数类型。 核主成分分析 kpca decomposition.KernelPCA(n_components2, kernelkernel): 使用当前循环的核函数类型 kernel 创建一个 KernelPCA 对象指定将数据降至二维。kpca.fit(tmp): 对数据集 tmp 进行核主成分分析拟合模型。y kpca.transform(tmp): 将数据集 tmp 转换到降维后的二维空间结果存储在 y 中。 绘制子图 plt.subplot(1, 3, i1): 在图形对象中创建一个一行三列的子图布局并定位到当前循环的位置。plt.scatter(y[:, 0], y[:, 1], s8, colorplt.cm.Spectral(color)): 在当前子图中绘制主成分分析后的二维散点图。y[:, 0] 和 y[:, 1] 分别表示降维后的第一和第二主成分s8 指定散点的大小colorplt.cm.Spectral(color) 根据颜色标签 t 使用彩色映射来绘制不同颜色的数据点。plt.title(核主成分分析核函数%s) % kernel): 设置当前子图的标题显示当前使用的核函数类型。plt.xlabel(第1主成分): 设置当前子图的 x 轴标签。plt.ylabel(第2主成分): 设置当前子图的 y 轴标签。 打印方差贡献率 print(方差贡献率(%s)%s % (kernel, kpca.lambdas_ / sum(kpca.lambdas_)))计算并打印出当前核函数下每个主成分的方差贡献率kpca.lambdas_ 包含了每个主成分的方差。 这段代码的目的是比较不同核函数在核主成分分析下的效果通过降维后的二维散点图展示数据在主成分空间的分布情况并输出每个主成分的方差贡献率。 tmpX[:,[0,2]] kernels[linear,rbf,poly] plt.figure(figsize(15,4)) for i,kernel in enumerate(kernels):kpcadecomposition.KernelPCA(n_components2,kernelkernel)kpca.fit(tmp)ykpca.transform(tmp)plt.subplot(1,3,i1)plt.scatter(y[:,0],y[:,1],s8,colorplt.cm.Spectral(color))plt.title(核主成分分析核函数%s)%kernel)plt.xlabel(第1主成分)plt.ylabel(第2主成分) print(方差贡献率(%s)%s%(kernel,kpca.lambdas_/sum(kpca.lambdas_))) 运行结果如下图所示 这段代码是进行不同核函数下的核主成分分析Kernel PCA并将结果可视化在一个包含四个子图的图形中。 设置图形大小 plt.figure(figsize(12, 8)): 创建一个图形对象设置图形大小为12x8英寸。 定义核函数列表 kernels [linear, rbf, poly, sigmoid]: 定义了四种核函数类型包括线性核linear、高斯径向基函数核rbf、多项式核poly和sigmoid核。 循环执行主成分分析和可视化 for i, kernel in enumerate(kernels):遍历四种核函数类型。 核主成分分析 kpca decomposition.KernelPCA(n_components2, kernelkernel): 使用当前循环的核函数类型 kernel 创建一个 KernelPCA 对象指定将数据降至二维。kpca.fit(X): 对完整的原始数据集 X 进行核主成分分析拟合模型。y kpca.transform(X): 将整个数据集 X 转换到降维后的二维空间结果存储在 y 中。 绘制子图 plt.subplot(2, 2, i1): 在图形对象中创建一个两行两列的子图布局并定位到当前循环的位置。plt.scatter(y[:, 0], y[:, 1], s8, colorplt.cm.Spectral(color)): 在当前子图中绘制主成分分析后的二维散点图。y[:, 0] 和 y[:, 1] 分别表示降维后的第一和第二主成分s8 指定散点的大小colorplt.cm.Spectral(color) 根据颜色标签 t 使用彩色映射来绘制不同颜色的数据点。plt.title(不同核函数下的主成分分析核函数%s\n方差贡献率%s % (kernel, kpca.lambdas_ / sum(kpca.lambdas_))): 设置当前子图的标题显示当前使用的核函数类型以及每个主成分的方差贡献率。plt.subplots_adjust(hspace0.5): 调整子图之间的垂直间距增加可读性。 通过这段代码可以直观地比较不同核函数在核主成分分析下的效果了解数据在主成分空间中的分布情况以及各主成分的贡献率。 plt.figure(figsize(12,8)) kernels[linear,rbf,poly,sigmoid] for i,kernel in enumerate(kernels):kpcadecomposition.KernelPCA(n_components2,kernelkernel)kpca.fit(X)ykpca.transform(X)plt.subplot(2,2,i1)plt.scatter(y[:,0],y[:,1],s8,colorplt.cm.Spectral(color))plt.title(不同核函数下的主成分分析核函数%s\n方差贡献率%s%(kernel,kpca.lambdas_/sum(kpca.lambdas_)))plt.subplots_adjust(hspace0.5) 运行结果如下图所示 03-基于主成分分析的因子分析 这段代码执行了基于主成分分析的因子分析并进行了可视化。让我来详细解释每个步骤 导入必要的模块 导入了用于数学计算和数据操作的模块如NumPy和Pandas。导入了用于绘图的Matplotlib模块和其子模块以及设置中文显示的相关配置。导入了生成数据和模型选择所需的模块如make_s_curve用于生成S形曲线样本数据。导入了用于因子分析的FactorAnalyzer类。 生成数据集 X, t make_s_curve(n_samples8000, noise0, random_state123): 生成了包含8000个样本的S形曲线数据集t是每个样本的颜色标签。 数据预处理 color np.array(t): 将颜色标签转换为NumPy数组。X pd.DataFrame(X): 将数据集转换为DataFrame格式可选。R X.corr(): 计算数据集的样本相关性矩阵R。 计算因子载荷矩阵 eig_value, eigvector np.linalg.eig(R): 计算样本相关性矩阵R的特征值和特征向量。对特征值进行排序和处理得到因子载荷矩阵factorM它是特征向量与特征值开平方的乘积。 计算因子值系数 score np.linalg.inv(R) * factorM: 计算因子值系数即特征值的逆乘以因子载荷矩阵。 因子分析 fa FactorAnalyzer(methodprincipal, n_factors2, rotationNone): 使用主成分法进行因子分析设定因子数量为2。fa.fit(X): 拟合因子分析模型获取因子载荷矩阵和相关统计信息。输出因子载荷矩阵、变量共同度以及因子的方差贡献率等。 可视化 y fa.transform(X): 将原始数据集X转换到由两个主成分构成的因子空间中。plt.scatter(y.T[0], y.T[1], s8, colorplt.cm.Spectral(color)): 绘制因子空间中的散点图其中每个点的颜色根据color数组确定。添加标题和轴标签并保存图像到文件中。 这段代码的主要目的是展示如何通过主成分分析进行因子分析分析数据集中变量之间的关系并将结果可视化以便观察数据在因子空间中的分布情况。 #本章需导入的模块 import numpy as np import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from pylab import * import matplotlib.cm as cm import warnings warnings.filterwarnings(action ignore) %matplotlib inline plt.rcParams[font.sans-serif][SimHei] #解决中文显示乱码问题 plt.rcParams[axes.unicode_minus]False from sklearn.datasets import make_regression,make_circles,make_s_curve from sklearn.model_selection import train_test_split from scipy.stats import multivariate_normal from sklearn import decomposition from factor_analyzer import FactorAnalyzerX,tmake_s_curve(n_samples8000, noise0, random_state123) colornp.array(t) Xpd.DataFrame(X) RX.corr() #样本相关性矩阵 eig_value, eigvector np.linalg.eig(R)#求矩阵R的全部特征值特征向量。 sortkey,eiglist(eig_value.argsort()),list(eig_value) #按升序排序 eig.sort() eig.reverse() sortkey.reverse()A np.zeros((eigvector.shape[1],eigvector.shape[1])) for i,e in enumerate(eig):A[i,:]np.sqrt(e)*eigvector[:,sortkey[i]] factorMA.T print(因子载荷矩阵\n{0}.format(factorM)) scorenp.linalg.inv(R)*factorM print(因子值系数\n{0}.format(score))fa FactorAnalyzer(methodprincipal,n_factors2,rotationNone) fa.fit(X) print(因子载荷矩阵:\n, fa.loadings_) print(\n变量共同度:\n, fa.get_communalities()) tmpfa.get_factor_variance() print(因子的方差贡献:{0}.format(tmp[0])) print(因子的方差贡献率:{0}.format(tmp[1])) print(因子的累计方差贡献率:{0}.format(tmp[2])) yfa.transform(X) plt.scatter(y.T[0],y.T[1],s8,colorplt.cm.Spectral(color)) plt.title(基于主成分分析的因子分析) plt.xlabel(因子f1) plt.ylabel(因子f2) plt.savefig(../4.png, dpi500) plt.show() 运行结果如下图所示 这段代码是在之前基于主成分分析的因子分析基础上进行了旋转后的因子分析并对结果进行了可视化。让我来详细解释每个步骤 旋转后的因子分析设置 fa FactorAnalyzer(methodprincipal, n_factors2, rotationvarimax): 创建一个因子分析对象 fa使用主成分法进行因子分析设定因子数量为2并选择了Varimax旋转方法 (rotationvarimax)用于旋转因子载荷矩阵以提高解释性。 拟合模型 fa.fit(X): 将数据集 X 应用于因子分析模型拟合模型以获取旋转后的因子载荷矩阵和相关统计信息。 输出结果 print(\n变量共同度:\n, fa.get_communalities()): 打印出变量的共同度即每个变量与所有因子的相关性的平方和。print(旋转后的因子载荷矩阵:\n, fa.loadings_): 打印旋转后的因子载荷矩阵显示了每个变量与每个因子的载荷相关性。 因子方差贡献分析 tmp fa.get_factor_variance(): 计算因子的方差贡献率相关统计信息。print(因子的方差贡献:{0}.format(tmp[0])): 打印因子的方差贡献。print(因子的方差贡献率:{0}.format(tmp[1])): 打印因子的方差贡献率即每个因子解释的总方差的百分比。print(因子的累计方差贡献率:{0}.format(tmp[2])): 打印因子的累计方差贡献率即所有因子累计解释的总方差的百分比。 数据转换和可视化 y fa.transform(X): 将原始数据集 X 转换为因子空间中的坐标即每个样本在新的因子空间中的位置。plt.scatter(y.T[0], y.T[1], s8, colorplt.cm.Spectral(color)): 绘制因子空间中的散点图其中每个点的颜色由 color 数组确定。plt.title(基于主成分分析的因子分析旋转): 设置图像标题。plt.xlabel(因子f1): 设置X轴标签。plt.ylabel(因子f2): 设置Y轴标签。plt.savefig(../4.png, dpi500): 将图像保存为文件分辨率为500dpi。plt.show(): 显示图像。 这段代码的主要目的是展示在应用Varimax旋转后的因子分析中如何解释数据集中变量之间的结构并通过可视化观察数据在旋转后因子空间中的分布情况。 fa FactorAnalyzer(methodprincipal,n_factors2,rotationvarimax) fa.fit(X) print(\n变量共同度:\n, fa.get_communalities()) print(旋转后的因子载荷矩阵:\n, fa.loadings_) tmpfa.get_factor_variance() print(因子的方差贡献:{0}.format(tmp[0])) print(因子的方差贡献率:{0}.format(tmp[1])) print(因子的累计方差贡献率:{0}.format(tmp[2])) yfa.transform(X) plt.scatter(y.T[0],y.T[1],s8,colorplt.cm.Spectral(color)) plt.title(基于主成分分析的因子分析旋转) plt.xlabel(因子f1) plt.ylabel(因子f2) plt.savefig(../4.png, dpi500) plt.show() 运行结果如下图所示 04-基于主成分分析对空气质量监测数据进行分析 这段代码的作用是进行因子分析Factor Analysis并输出相关统计结果。下面是详细解释 数据导入和预处理 import 语句导入所需的库和模块包括数据处理、可视化和警告管理的工具。从Excel文件中读取数据并进行一些预处理步骤如将0值替换为NaN然后删除包含NaN的行确保数据的完整性和质量。 数据准备和因子分析 X data.iloc[:, 3:-1]选择数据中的特征变量列通常排除了非预测变量和目标变量。fa FactorAnalyzer(methodprincipal, n_factors2, rotationvarimax)创建一个因子分析对象指定使用主成分方法、2个因子并应用Varimax旋转以促进因子的解释性。 因子分析模型拟合和结果输出 fa.fit(X)对选择的数据进行因子分析拟合。打印输出以下统计量 因子载荷矩阵 (fa.loadings_)显示每个变量与每个因子之间的相关性强度。变量共同度 (fa.get_communalities())给出每个变量的共同度即它们可以通过公共因子解释的方差比例。因子的方差贡献 (tmp[0])描述因子解释的总方差。因子的方差贡献率 (tmp[1])各个因子解释的方差比例。因子的累计方差贡献率 (tmp[2])前几个因子累计解释的总方差比例用于评估模型解释数据变异程度的能力。 综上所述这段代码的目的是利用因子分析技术来探索数据集中潜在的因子结构并提供关于每个因子及其解释能力的详细统计信息。 #本章需导入的模块 import numpy as np import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from pylab import * import matplotlib.cm as cm import warnings warnings.filterwarnings(action ignore) %matplotlib inline plt.rcParams[font.sans-serif][SimHei] #解决中文显示乱码问题 plt.rcParams[axes.unicode_minus]False from sklearn.datasets import make_regression,make_circles,make_s_curve from sklearn.model_selection import train_test_split from scipy.stats import multivariate_normal from sklearn import decomposition from factor_analyzer import FactorAnalyzerdatapd.read_excel(北京市空气质量数据.xlsx) datadata.replace(0,np.NaN) datadata.dropna() Xdata.iloc[:,3:-1] print(X.columns) fa FactorAnalyzer(methodprincipal,n_factors2,rotationvarimax) fa.fit(X) print(因子载荷矩阵\n,fa.loadings_) print(变量共同度:\n, fa.get_communalities()) tmpfa.get_factor_variance() print(因子的方差贡献:{0}.format(tmp[0])) print(因子的方差贡献率:{0}.format(tmp[1])) print(因子的累计方差贡献率:{0}.format(tmp[2])) 运行结果如下图所示  总结 PCA作为一种无监督学习方法广泛应用于数据预处理、特征选择、模式识别和数据压缩等领域是理解和分析高维数据的重要工具之一。
http://www.hkea.cn/news/14535529/

相关文章:

  • 南京网站制作千网站模版怎么编辑器
  • 北京网站建设制作哪家公司好惠城营销网站制作
  • 网站整体框架c 做的网站
  • 网站地址怎么做超链接阿里云做网站电话
  • 上海尚海整装官方网站网页版微信登录二维码
  • 外贸网站建设书籍wordpress 自定义插件开发
  • 网站退出率工程信息网站哪家做的较好
  • 网站备案 法人代表自己做的网站怎样链接数据库
  • 凡科建设网站别人能进去么wordpress做的论坛
  • 邢台建网站找谁apache 多网站
  • html5响应式网站模版计算机网络网站建设的实训总结6
  • 卖衣服的网站排名杭州响应式网站案例
  • 泰州企业建站程序产品的推广及宣传思路
  • 网站做全局搜索做效果图展板网站
  • 网站设计服务平台湛江手机建站模板
  • 郑州网站制作郑州网站制作案例网站建设实习收获
  • 杭州最好的网站设计公司2023营业执照年检入口官网
  • 如何找人做网站生活常识网站源码
  • 网站建设开发做网站吧网站建设竞争性磋商文件
  • 上海做网站服务商腾讯云wordpress博客
  • 不是网站可以用云主机吗重庆网站免费优化
  • 求做网站建设美食网站
  • 无锡企业网站设计凡客模板wordpress
  • 中国建设银行东莞市网站东营市住宅与房地产信息网
  • 网站域名实名认证查询怎样把个人介绍放到百度
  • 综合服务平台一站式服务平台网站开发wordpress邀请会员
  • 网站建设哪家有名阿里云商业网站建设视频
  • 建设银行观澜支行网站东莞网站建设快速排名
  • 菏泽网站获客网站建设公司html编辑器的程序怎么设置
  • 做网站一次付费线下营销方式主要有哪些