人工智能和机器学习之降维算法:主成分分析(PCA):PCA的Python实现_第1页
人工智能和机器学习之降维算法:主成分分析(PCA):PCA的Python实现_第2页
人工智能和机器学习之降维算法:主成分分析(PCA):PCA的Python实现_第3页
人工智能和机器学习之降维算法:主成分分析(PCA):PCA的Python实现_第4页
人工智能和机器学习之降维算法:主成分分析(PCA):PCA的Python实现_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人工智能和机器学习之降维算法:主成分分析(PCA):PCA的Python实现1引言:PCA的概念和重要性主成分分析(PrincipalComponentAnalysis,PCA)是一种广泛应用于数据预处理和特征提取的统计方法,尤其在人工智能和机器学习领域中,PCA被用来降维,即减少数据的维度,同时尽可能保留数据的原始信息。这一过程不仅能够简化数据模型,提高计算效率,还能帮助我们更好地理解和可视化高维数据。1.1PCA的概念PCA通过线性变换将原始数据转换到一个新的坐标系统中,这个新坐标系统由数据的主成分构成。主成分是数据的线性组合,它们是数据方差最大的方向。第一主成分具有最大的方差,第二主成分在与第一主成分正交的条件下具有次大的方差,以此类推。通过选择前k个主成分,我们可以将数据从n维空间投影到k维空间,从而实现降维。1.2PCA的重要性数据压缩:在保持大部分信息的同时,减少数据的维度,节省存储空间和计算资源。去除冗余:高维数据中往往存在冗余特征,PCA能够识别并去除这些冗余,提高模型的效率和准确性。数据可视化:将高维数据降维到2D或3D空间,便于数据的可视化分析。特征提取:PCA能够提取数据中的关键特征,这些特征可能对后续的机器学习模型训练至关重要。1.3PCA的Python实现在Python中,我们可以使用scikit-learn库中的PCA类来实现PCA算法。下面是一个使用PCA进行数据降维的示例,我们将使用一个简单的数据集来演示这一过程。1.3.1数据准备首先,我们创建一个简单的数据集,它包含两个特征,但这两个特征之间存在一定的相关性,这在实际数据中是常见的。importnumpyasnp

fromsklearn.decompositionimportPCA

#创建一个简单的数据集

X=np.array([[1,2],[2,3],[3,4],[4,5],[5,6],[6,7],[7,8],[8,9]])

#打印原始数据

print("原始数据:")

print(X)1.3.2PCA应用接下来,我们使用PCA将数据从2维降维到1维。我们将创建一个PCA对象,并设置n_components参数为1,表示我们只保留一个主成分。#创建PCA对象,保留一个主成分

pca=PCA(n_components=1)

#拟合数据

pca.fit(X)

#转换数据

X_pca=pca.transform(X)

#打印降维后的数据

print("降维后的数据:")

print(X_pca)1.3.3结果解释降维后的数据X_pca是一个一维数组,它表示原始数据在第一主成分上的投影。PCA通过找到数据方差最大的方向,将数据投影到这个方向上,从而保留了数据的大部分信息。1.3.4可视化为了更好地理解PCA的效果,我们可以将原始数据和降维后的数据可视化。importmatplotlib.pyplotasplt

#可视化原始数据

plt.figure(figsize=(12,6))

plt.subplot(1,2,1)

plt.scatter(X[:,0],X[:,1])

plt.title('原始数据')

plt.xlabel('特征1')

plt.ylabel('特征2')

#可视化降维后的数据

plt.subplot(1,2,2)

plt.scatter(X_pca[:,0],np.zeros_like(X_pca[:,0]))#降维后的数据只有一维,所以y坐标为0

plt.title('降维后的数据')

plt.xlabel('第一主成分')

plt.show()通过上述代码,我们可以看到原始数据和降维后的数据的可视化表示。原始数据在二维空间中分布,而降维后的数据则被投影到一维空间中,这有助于我们理解PCA如何通过保留数据的主要变化方向来实现降维。1.4结论PCA是一种强大的降维工具,它在数据预处理和特征提取中扮演着重要角色。通过使用Python的scikit-learn库,我们可以轻松地将PCA应用于实际数据,实现数据压缩、去除冗余、数据可视化和特征提取等目标。在处理高维数据时,PCA能够帮助我们更高效地进行数据分析和模型训练。2人工智能和机器学习之降维算法:主成分分析(PCA)的Python实现2.1PCA理论基础2.1.1数据的中心化在进行PCA分析之前,数据需要进行中心化处理,即对每个特征减去其平均值,使得特征的均值为0。这是PCA算法的一个关键步骤,因为PCA寻找数据的主成分,而这些主成分是基于数据的方差来确定的。如果数据没有中心化,那么计算出的协方差矩阵将受到数据均值的影响,从而导致PCA结果的偏差。示例代码importnumpyasnp

#假设我们有以下数据集

data=np.array([[1,2],[3,4],[5,6]])

#计算数据的平均值

mean=np.mean(data,axis=0)

#数据中心化

centered_data=data-mean

#打印中心化后的数据

print(centered_data)2.1.2协方差矩阵与相关矩阵协方差矩阵描述了数据集中特征之间的线性关系。对于中心化后的数据,协方差矩阵的计算公式为:C,其中X是中心化后的数据矩阵,N是样本数量。相关矩阵是协方差矩阵的一种标准化形式,它消除了特征尺度的影响,使得每个特征的方差为1。相关矩阵的计算公式为:R,其中D是协方差矩阵的对角矩阵,其元素为协方差矩阵的特征值。示例代码#继续使用中心化后的数据

cov_matrix=np.cov(centered_data,rowvar=False)

#打印协方差矩阵

print("协方差矩阵:\n",cov_matrix)

#计算相关矩阵

std_dev=np.std(centered_data,axis=0)

std_dev_matrix=np.diag(1/std_dev)

corr_matrix=np.dot(np.dot(std_dev_matrix,cov_matrix),std_dev_matrix)

#打印相关矩阵

print("相关矩阵:\n",corr_matrix)2.1.3特征值与特征向量特征值和特征向量是PCA算法的核心。特征值表示了数据在对应特征向量方向上的方差大小,而特征向量则指出了数据的主成分方向。在PCA中,我们通常选择最大的几个特征值对应的特征向量作为降维后的主成分。示例代码#计算协方差矩阵的特征值和特征向量

eigenvalues,eigenvectors=np.linalg.eig(cov_matrix)

#打印特征值和特征向量

print("特征值:\n",eigenvalues)

print("特征向量:\n",eigenvectors)

#选择最大的两个特征值对应的特征向量

sorted_indices=np.argsort(eigenvalues)[::-1]

top_eigenvectors=eigenvectors[:,sorted_indices[:2]]

#打印选择的特征向量

print("选择的特征向量:\n",top_eigenvectors)2.2PCA的Python实现在实际应用中,我们可以使用scikit-learn库中的PCA类来实现PCA算法,这将大大简化我们的工作。2.2.1示例代码fromsklearn.decompositionimportPCA

#创建PCA对象,指定保留的主成分数量

pca=PCA(n_components=2)

#使用PCA对象对数据进行降维

reduced_data=pca.fit_transform(centered_data)

#打印降维后的数据

print("降维后的数据:\n",reduced_data)

#也可以直接使用PCA对象对原始数据进行中心化和降维

pca_direct=PCA(n_components=2)

reduced_data_direct=pca_direct.fit_transform(data)

#打印直接降维后的数据

print("直接降维后的数据:\n",reduced_data_direct)通过上述代码,我们不仅了解了PCA算法的理论基础,还学会了如何在Python中使用scikit-learn库来实现PCA,从而对数据进行有效的降维处理。3人工智能和机器学习之降维算法:主成分分析(PCA)的Python实现3.1PCA算法步骤3.1.1计算协方差矩阵PCA的第一步是计算数据集的协方差矩阵。协方差矩阵描述了数据集中特征之间的线性关系。对于一个具有多个特征的数据集,协方差矩阵是一个对称矩阵,其中对角线元素是每个特征的方差,非对角线元素是特征之间的协方差。示例代码假设我们有一个数据集X,其中每一行代表一个样本,每一列代表一个特征。importnumpyasnp

#示例数据集

X=np.array([[1,2,3],

[4,5,6],

[7,8,9],

[10,11,12]])

#计算协方差矩阵

cov_matrix=np.cov(X,rowvar=False)

print(cov_matrix)3.1.2求解特征值和特征向量协方差矩阵的特征值和特征向量揭示了数据集的主成分方向。特征值的大小表示了在对应特征向量方向上的数据方差。特征向量则指出了数据分布的主要方向。示例代码#求解协方差矩阵的特征值和特征向量

eigenvalues,eigenvectors=np.linalg.eig(cov_matrix)

print("特征值:",eigenvalues)

print("特征向量:",eigenvectors)3.1.3选择主成分根据特征值的大小,我们可以选择最重要的主成分。通常,我们会选择具有最大特征值的特征向量,因为它们代表了数据方差最大的方向。选择的主成分数量取决于我们希望保留多少数据的方差。示例代码假设我们希望保留前两个主成分。#选择前两个主成分

n_components=2

sorted_indices=np.argsort(eigenvalues)[::-1]

selected_eigenvectors=eigenvectors[:,sorted_indices[:n_components]]

print("选择的主成分:",selected_eigenvectors)3.1.4数据投影最后一步是将原始数据集投影到我们选择的主成分上。这将减少数据的维度,同时保留大部分的方差。示例代码#将数据投影到选择的主成分上

projected_data=X.dot(selected_eigenvectors)

print("投影后的数据:",projected_data)3.2使用sklearn进行PCA虽然我们可以手动实现PCA的步骤,但在实际应用中,使用像sklearn这样的库可以更方便地进行PCA。3.2.1示例代码fromsklearn.decompositionimportPCA

#创建PCA实例

pca=PCA(n_components=2)

#拟合数据并进行变换

projected_data=pca.fit_transform(X)

print("使用sklearn进行PCA后的数据:",projected_data)3.3总结通过以上步骤,我们不仅理解了PCA算法的基本原理,还学会了如何使用Python和sklearn库来实现PCA,从而有效地进行数据降维。在实际应用中,PCA可以帮助我们处理高维数据,减少计算复杂度,同时保持数据的关键信息。请注意,上述示例使用了一个简单的数据集,实际应用中,数据集可能包含更多样本和特征,协方差矩阵也可能更大。此外,PCA在处理数据前通常需要对数据进行标准化处理,以确保所有特征在相同尺度上。4人工智能和机器学习之降维算法:主成分分析(PCA)的Python实现4.1Python实现PCA4.1.1使用NumPy库实现PCA主成分分析(PCA)是一种统计方法,用于识别数据中的模式并以一种简化的方式表示数据。它通过将数据转换到一个新的坐标系统中,使得任何数据点都可以由一组正交的成分来表示。这些成分称为主成分,它们是原始数据的线性组合,且按方差大小排序。PCA可以用于数据可视化、特征提取和降维。原理与步骤数据预处理:对数据进行标准化处理,确保每个特征具有相同的尺度。计算协方差矩阵:协方差矩阵描述了数据中特征之间的关系。计算特征值和特征向量:特征值和特征向量是协方差矩阵的固有属性,它们帮助我们确定主成分的方向。选择主成分:根据特征值的大小选择主成分,通常选择具有最大特征值的特征向量作为主成分。转换数据:使用选定的主成分将原始数据转换到新的坐标系统中。示例代码importnumpyasnp

defPCA(data,n_components):

"""

使用NumPy实现PCA降维算法。

参数:

data:输入数据,形状为(n_samples,n_features)

n_components:保留的主成分数量

返回:

transformed_data:降维后的数据,形状为(n_samples,n_components)

"""

#数据预处理

data=data-np.mean(data,axis=0)

data=data/np.std(data,axis=0)

#计算协方差矩阵

cov_matrix=np.cov(data,rowvar=False)

#计算特征值和特征向量

eigenvalues,eigenvectors=np.linalg.eig(cov_matrix)

#选择主成分

idx=eigenvalues.argsort()[::-1]#从大到小排序

eigenvalues=eigenvalues[idx]

eigenvectors=eigenvectors[:,idx]

eigenvectors=eigenvectors[:,:n_components]

#转换数据

transformed_data=np.dot(data,eigenvectors)

returntransformed_data

#示例数据

data=np.array([[1,2],[1,4],[1,0],

[4,2],[4,4],[4,0]])

#应用PCA

transformed_data=PCA(data,1)

print(transformed_data)4.1.2使用Scikit-Learn库实现PCAScikit-Learn是一个用于Python编程语言的免费软件机器学习库,它包含各种分类、回归、聚类算法,以及数据预处理、模型选择、性能评估和集成学习等工具。Scikit-Learn中的PCA实现非常简单,只需几行代码即可完成。示例代码fromsklearn.decompositionimportPCA

importnumpyasnp

defapply_PCA(data,n_components):

"""

使用Scikit-Learn库实现PCA降维算法。

参数:

data:输入数据,形状为(n_samples,n_features)

n_components:保留的主成分数量

返回:

transformed_data:降维后的数据,形状为(n_samples,n_components)

"""

#创建PCA对象

pca=PCA(n_components=n_components)

#拟合数据

pca.fit(data)

#转换数据

transformed_data=pca.transform(data)

returntransformed_data

#示例数据

data=np.array([[1,2],[1,4],[1,0],

[4,2],[4,4],[4,0]])

#应用PCA

transformed_data=apply_PCA(data,1)

print(transformed_data)代码解释在上述代码中,我们首先从sklearn.decomposition模块导入PCA类。然后,我们定义一个函数apply_PCA,它接受数据和主成分数量作为参数。在函数内部,我们创建一个PCA对象,并设置n_components参数。接着,我们使用fit方法拟合数据,这一步骤计算了协方差矩阵的特征值和特征向量。最后,我们使用transform方法将数据转换到新的坐标系统中,即降维后的数据。数据样例在示例代码中,我们使用了一个简单的二维数据集data。这个数据集包含6个样本,每个样本有两个特征。通过PCA降维,我们将数据集从二维空间转换到一维空间,保留了数据的主要变化趋势。结果分析降维后的数据transformed_data将是一个一维数组,它表示原始数据在主成分方向上的投影。这个投影可以用于后续的机器学习任务,如分类或回归,因为降维后的数据通常具有更高的计算效率和更好的可视化效果。4.2总结通过上述两个示例,我们展示了如何使用Python中的NumPy库和Scikit-Learn库实现PCA降维算法。NumPy库提供了基础的数学运算和矩阵操作,而Scikit-Learn库则提供了一个更高级、更简洁的接口来执行PCA。在实际应用中,使用Scikit-Learn库通常更为方便,因为它已经处理了数据预处理和特征值排序等细节。然而,理解NumPy库的实现有助于深入理解PCA算法的工作原理。5人工智能和机器学习之降维算法:主成分分析(PCA)应用案例5.1手写数字识别5.1.1案例背景手写数字识别是机器学习中的一个经典问题,通常使用MNIST数据集进行训练和测试。MNIST数据集包含60000个训练样本和10000个测试样本,每个样本是一个28x28像素的灰度图像,代表0-9的数字。在高维空间中,原始图像数据可能包含大量冗余信息,使用PCA可以减少数据的维度,同时保留关键特征,从而提高模型的训练效率和预测性能。5.1.2实现步骤加载数据:使用sklearn.datasets中的fetch_openml函数加载MNIST数据集。数据预处理:将图像数据扁平化为一维数组,进行归一化处理。PCA降维:使用sklearn.decomposition.PCA进行降维,选择合适的主成分数量。模型训练:使用降维后的数据训练分类模型,如逻辑回归或支持向量机。模型评估:在测试集上评估模型的性能。5.1.3代码示例#导入必要的库

fromsklearn.datasetsimportfetch_openml

fromsklearn.decompositionimportPCA

fromsklearn.linear_modelimportLogisticRegression

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.pipelineimportmake_pipeline

fromsklearn.preprocessingimportStandardScaler

fromsklearn.metricsimportaccuracy_score

#加载MNIST数据集

mnist=fetch_openml('mnist_784',version=1)

X,y=mnist['data'],mnist['target']

#数据预处理

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)

scaler=StandardScaler()

X_train_scaled=scaler.fit_transform(X_train.astype(float))

X_test_scaled=scaler.transform(X_test.astype(float))

#PCA降维

pca=PCA(n_components=0.95)#保留95%的方差

X_train_reduced=pca.fit_transform(X_train_scaled)

X_test_reduced=pca.transform(X_test_scaled)

#模型训练

log_reg=LogisticRegression(max_iter=10000)

log_reg.fit(X_train_reduced,y_train)

#模型评估

y_pred=log_reg.predict(X_test_reduced)

print(f'模型准确率:{accuracy_score(y_test,y_pred)}')5.1.4解释在上述代码中,我们首先加载了MNIST数据集,并将其分为训练集和测试集。接着,使用StandardScaler对数据进行归一化处理,以消除特征之间的量纲影响。然后,通过PCA将数据降维至保留95%方差的维度,这通常会显著减少特征数量,同时保持大部分信息。最后,使用逻辑回归模型在降维后的数据上进行训练,并在测试集上评估模型的准确率。5.2股票市场数据分析5.2.1案例背景股票市场数据分析通常涉及大量的历史价格、交易量和其他市场指标。这些数据往往具有高度相关性,使用PCA可以识别出这些指标中的主要趋势和模式,从而帮助投资者或分析师更好地理解市场动态,进行预测或制定策略。5.2.2实现步骤数据加载:从金融数据源加载股票价格数据,如YahooFinance。数据预处理:清洗数据,处理缺失值,将数据转换为适合PCA分析的格式。PCA分析:使用sklearn.decomposition.PCA进行PCA分析,确定主要成分。结果解释:分析PCA结果,识别市场的主要趋势和模式。5.2.3代码示例#导入必要的库

importpandasaspd

fromsklearn.decompositionimportPCA

importmatplotlib.pyplotasplt

importyfinanceasyf

#加载股票数据

tickers=['AAPL','GOOGL','MSFT','AMZN','FB']

data=yf.download(tickers,start='2010-01-01',end='2020-12-31')['AdjClose']

#数据预处理

returns=data.pct_change().dropna()

#PCA分析

pca=PCA()

pca.fit(returns)

#绘制解释方差比

plt.figure(figsize=(10,6))

plt.plot(range(1,len(tickers)+1),pca.explained_variance_ratio_.cumsum(),marker='o')

plt.title('解释方差比')

plt.xlabel('主成分数量')

plt.ylabel('累计解释方差')

plt.grid(True)

plt.show()5.2.4解释在股票市场数据分析的示例中,我们首先使用yfinance库从YahooFinance获取了五只股票的历史收盘价数据。然后,计算了每日的收益率,这是股票市场分析中常用的数据预处理步骤。接着,使用PCA对收益率数据进行分析,以确定哪些主成分解释了大部分的市场波动。最后,我们绘制了解释方差比的累积曲线,这有助于我们决定保留多少主成分以达到足够的解释力。通过这两个案例,我们可以看到PCA在不同领域的应用,它不仅可以帮助我们减少数据的维度,提高模型的训练效率,还可以揭示数据中的关键模式和趋势,为决策提供支持。6PCA的局限性和变种6.1PCA的局限性主成分分析(PCA)是一种广泛使用的线性降维技术,它通过寻找数据的线性组合来最大化方差,从而减少数据的维度。然而,PCA并非在所有情况下都是最佳选择,它存在一些局限性:线性假设:PCA假设数据的主成分是线性的,这意味着它可能无法捕捉到数据中的非线性结构。如果数据的内在结构是非线性的,PCA可能无法有效地进行降维。特征的独立性:PCA假设特征之间是独立的,但实际上,特征之间可能存在复杂的相互依赖关系。这种依赖关系可能在PCA的线性变换中丢失。对异常值敏感:PCA对数据集中的异常值非常敏感。一个或几个异常值可以显著地影响主成分的方向,从而影响降维的效果。解释性:虽然PCA可以有效地减少数据维度,但得到的主成分可能难以解释。主成分是原始特征的线性组合,可能没有直观的物理意义。6.2核PCA(KernelPCA)6.2.1原理核PCA是PCA的一种扩展,它通过使用核函数来处理非线性数据。核函数将数据从原始空间映射到一个更高维的空间,在这个空间中,数据可能变得线性可分。然后,PCA在这个高维空间中进行,找到数据的主成分。由于核函数的使用,核PCA能够捕捉到数据中的非线性结构,从而在非线性数据上提供更好的降维效果。6.2.2示例代码假设我们有以下非线性数据:importnumpyasnp

importmatplotlib.pyplotasplt

fromsklearn.decompositionimportKernelPCA

#生成非线性数据

np.random.seed(0)

X=np.random.rand(100,2)

X[:,1]=X[:,0]**2+np.random.normal(0,0.1,100)

#使用核PCA进行降维

kpca=KernelPCA(n_components=1,kernel='rbf')

X_kpca=kpca.fit_transform(X)

#绘制原始数据和降维后的数据

plt.figure(figsize=(12,6))

plt.subplot(1,2,1)

plt.scatter(X[:,0],X[:,1],c='r')

plt.title('原始数据')

plt.xlabel('特征1')

plt.ylabel('特征2')

plt.subplot(1,2,2)

plt.scatter(X_kpca[:,0],np.zeros(100),c='b')

plt.title('核PCA降维后的数据')

plt.xlabel('主成分1')

plt.yticks([])

plt.show()6.2.3解释在这个例子中,我们首先生成了一个非线性的二维数据集,其中第二个特征是第一个特征的平方加上一些随机噪声。然后,我们使用KernelPCA类从sklearn.decomposition模块中,设置n_components=1和kernel='rbf'(高斯径向基核函数)来执行核PCA。最后,我们绘制了原始数据和降维后的数据。可以看到,核PCA能够有效地将非线性数据降维到一维空间。6.3稀疏PCA(SparsePCA)6.3.1原理稀疏PCA是PCA的一种变种,它试图找到数据的主成分,同时使这些主成分的权重尽可能稀疏。这意味着在每个主成分中,只有少数原始特征的权重是非零的。这种稀疏性使得主成分更容易解释,因为它们只依赖于少数特征。稀疏PCA通过在PCA的优化目标中加入稀疏性约束来实现这一点。6.3.2示例代码假设我们有以下数据集:importnumpyasnp

fromsklearn.decompositionimportSparsePCA

importmatplotlib.pyplotasplt

#生成数据

np.random.seed(0)

X=np.random.randn(100,10)

#使用稀疏PCA进行降维

spca=SparsePCA(n_components=3,alpha=1)

X_spca=spca.fit_transform(X)

#绘制稀疏PCA的主成分权重

plt.figure(figsize=(10,4))

foriinrange(3):

plt.bar(range(10),ponents_[i],label=f'主成分{i+1}')

plt.title('稀疏PCA的主成分权重')

plt.xlabel('特征')

plt.ylabel('权重')

plt.legend()

plt.show()6.3.3解释在这个例子中,我们首先生成了一个100x10的随机数据集。然后,我们使用SparsePCA类从sklearn.decomposition模块中,设置n_components=3和alpha=1(稀疏性参数)来执行稀疏PCA。最后,我们绘制了稀疏PCA的主成分权重。可以看到,每个主成分的权重都是稀疏的,即只有少数特征的权重是非零的。这表明稀疏PCA能够找到依赖于少数特征的主成分,从而提高主成分的解释性。7PCA在实际项目中的应用技巧7.1引言主成分分析(PrincipalComponentAnalysis,PCA)是一种广泛应用于数据预处理、特征提取和降维的统计方法。在实际项目中,PCA能够帮助我们理解数据的内在结构,减少数据维度,从而提高模型的训练效率和预测性能。本教程将通过具体的Python代码示例,展示PCA在实际项目中的应用技巧,包括数据预处理、PCA模型的构建与应用,以及如何评估PCA的效果。7.2数据预处理7.2.1标准化数据PCA对数据的尺度敏感,因此在应用PCA之前,通常需要对数据进行标准化处理,确保每个特征具有相同的尺度。这可以通过减去特征的均值并除以特征的标准差来实现。示例代码fromsklearn.preprocessingimportStandardScaler

fromsklearn.decompositionimportPCA

importnumpyasnp

importpandasaspd

#创建示例数据

data=pd.DataFrame({

'Feature1':[1,2,3,4,5],

'Feature2':[10,20,30,40,50],

'Feature3':[100,200,300,400,500]

})

#数据标准化

scaler=StandardScaler()

scaled_data=scaler.fit_transform(data)

#将标准化后的数据转换为DataFrame

scaled_data_df=pd.DataFrame(scaled_data,columns=data.columns)7.3构建PCA模型7.3.1选择主成分数量在构建PCA模型时,选择保留的主成分数量是一个关键步骤。通常,我们会选择能够解释数据大部分方差的主成分数量。示例代码#构建PCA模型,保留前2个主成分

pca=PCA(n_components=2)

principal_components=pca.fit_transform(scaled_data_df)

#将主成分转换为DataFrame

principal_df=pd.DataFrame(data=principal_components,columns=['PrincipalComponent1','PrincipalComponent2'])7.4评估PCA效果7.4.1解释方差比PCA的一个重要评估指标是解释方差比,它表示每个主成分解释的方差占总方差的比例。示例代码#输出解释方差比

explained_variance_ratio=pca.explained_variance_ratio_

print('ExplainedVarianceRatio:',explained_variance_ratio)

#累积解释方差比

cumulative_explained_variance=np.cumsum(expl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论