通过python实现如何使用PCA进行特征筛选
时间: 2023-07-20 07:20:41 浏览: 101
基于Python实现一个PCA模型【100011011】
在Python中,可以使用scikit-learn库来实现PCA进行特征筛选。具体步骤如下:
1. 导入所需的库和数据
```python
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
# 导入数据
iris = load_iris()
X = iris.data
y = iris.target
```
2. 对数据进行标准化处理
```python
from sklearn.preprocessing import StandardScaler
# 标准化处理
X = StandardScaler().fit_transform(X)
```
3. 进行PCA特征提取
```python
# 实例化PCA对象
pca = PCA(n_components=2)
# 基于数据进行PCA降维
principalComponents = pca.fit_transform(X)
# 将主成分转换为DataFrame,方便可视化
principalDf = pd.DataFrame(data = principalComponents, columns = ['principal component 1', 'principal component 2'])
```
4. 查看主成分的方差贡献率
```python
print(pca.explained_variance_ratio_)
```
5. 可视化结果
```python
import matplotlib.pyplot as plt
# 可视化结果
finalDf = pd.concat([principalDf, pd.DataFrame(y, columns = ['target'])], axis = 1)
fig = plt.figure(figsize = (8,8))
ax = fig.add_subplot(1,1,1)
ax.set_xlabel('Principal Component 1', fontsize = 15)
ax.set_ylabel('Principal Component 2', fontsize = 15)
ax.set_title('2 Component PCA', fontsize = 20)
targets = [0, 1, 2]
colors = ['r', 'g', 'b']
for target, color in zip(targets,colors):
indicesToKeep = finalDf['target'] == target
ax.scatter(finalDf.loc[indicesToKeep, 'principal component 1']
, finalDf.loc[indicesToKeep, 'principal component 2']
, c = color
, s = 50)
ax.legend(targets)
ax.grid()
```
以上就是使用Python实现PCA进行特征筛选的基本步骤。通过PCA可以将高维数据压缩到低维,同时保留数据的主要特征,进而提高模型训练效率。
阅读全文