Python 主成分分析 (PCA) 筛选变量:从 Excel 数据到可视化
使用 Python 进行主成分分析 (PCA) 筛选变量
本教程将使用 Python 编写一个主成分分析 (PCA) 算法来筛选影响因素,并提供数据可视化。
步骤:
- 读取 Excel 表格:第 0 列为因变量,其余列为影响因素。
- 进行主成分分析 (PCA) 算法。
- 输出筛选得到的变量。
- 进行 PCA 算法常见的图形可视化展示。
代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
# 读取 Excel 表格
data = pd.read_excel('data.xlsx')
y = data.iloc[:, 0] # 因变量
x = data.iloc[:, 1:] # 影响因素
# 数据标准化
scaler = StandardScaler()
x = scaler.fit_transform(x)
# 主成分分析
pca = PCA()
pca.fit(x)
explained_var = pca.explained_variance_ratio_
n_components = len(explained_var)
cumulative_var = np.cumsum(explained_var)
# 输出筛选得到的变量
print('筛选得到的变量有:')
for i in range(n_components):
if cumulative_var[i] >= 0.8:
print(f'主成分{i+1}')
# 可视化展示
plt.figure(figsize=(8, 6))
plt.plot(range(1, n_components+1), cumulative_var, label='Cumulative explained variance')
plt.bar(range(1, n_components+1), explained_var, alpha=0.5, align='center', label='Explained variance')
plt.axhline(y=0.8, color='r', linestyle='--', label='80% explained variance')
plt.xlabel('Principal components')
plt.ylabel('Explained variance')
plt.legend(loc='best')
plt.show()
解释:
- 代码首先导入必要的库,包括 pandas、numpy、matplotlib、sklearn.decomposition 和 sklearn.preprocessing。
- 然后读取 Excel 表格,并使用
iloc属性将数据分为因变量 (y) 和影响因素 (x)。 - 使用
StandardScaler对数据进行标准化,确保每个变量具有相同的尺度。 - 使用
PCA对象进行主成分分析,并计算每个主成分的方差解释率。 - 筛选主成分:代码设置一个阈值 (0.8),如果累积方差解释率达到或超过该阈值,则表示该主成分已被选中。
- 使用
matplotlib库生成可视化图形,展示每个主成分的方差解释率和累积方差解释率。
注意:
- 代码中
data.xlsx为 Excel 文件名,请根据实际情况修改。 - 阈值 0.8 可以根据实际需求进行调整。
- 此代码仅用于演示目的,实际应用中可能需要进行进一步的调整和优化。
通过以上步骤,您可以使用 Python 编写一个主成分分析算法,筛选出重要的影响因素,并通过可视化图形更好地理解结果。
原文地址: https://www.cveoy.top/t/topic/lS8u 著作权归作者所有。请勿转载和采集!