sklearn pca expained_variance_ratio_
时间: 2023-07-21 19:10:18 浏览: 64
在PCA降维中,我们通常会关注降维后的每个新特征向量所能解释的原始数据方差的比例,即解释方差比例(explained variance ratio)。在sklearn中,可以通过PCA对象的`explained_variance_ratio_`属性来获取每个新特征向量所解释的方差比例。
具体使用方法如下:
1. 在进行PCA降维操作后,通过`pca.explained_variance_ratio_`获取每个新特征向量所解释的方差比例。
```python
pca = PCA(n_components=2)
new_data = pca.fit_transform(data)
var_ratio = pca.explained_variance_ratio_
```
2. 对方差比例进行解释。例如,如果新特征向量中第一个向量的方差比例为0.8,第二个向量的方差比例为0.2,则说明第一个向量能够解释80%的原始数据方差,第二个向量能够解释20%的原始数据方差。
通过解释方差比例,我们可以判断降维后的新特征向量是否能够很好地保留原始数据的信息。如果某个新特征向量的方差比例很小,说明该向量所包含的信息较少,降维后仍可能会丢失一些重要信息。反之,如果某个新特征向量的方差比例很大,说明该向量所包含的信息较多,降维后仍能够很好地保留原始数据的信息。
相关问题
explained_variance_ratio = pca.explained_variance_ratio_ print(explained_variance_ratio)将这个的输出结果行列互换
要将 `explained_variance_ratio` 输出结果的行列互换,您可以使用 NumPy 库中的 `transpose()` 函数。请按照以下步骤进行修改:
1. 导入所需的库:
```python
import numpy as np
```
2. 对数据进行转置:
```python
explained_variance_ratio_transposed = np.transpose(explained_variance_ratio)
```
这将对 `explained_variance_ratio` 进行转置操作,将行列互换。
3. 打印结果:
```python
print(explained_variance_ratio_transposed)
```
这将打印转置后的结果,其中行列已经互换。
请确保已正确导入所需的库,并在代码中添加转置操作。执行完上述代码后,将获得已经行列互换的输出结果 `explained_variance_ratio_transposed`。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from mpl_toolkits.mplot3d import Axes3D from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler data=pd.read_csv('H:/analysis_results/mean_HN.csv') data.head() x=data.iloc[:,1:7] y=data.iloc[:,6] scaler=StandardScaler() scaler.fit(x) x_scaler=scaler.transform(x) print(x_scaler.shape) pca=PCA(n_components=3) x_pca=pca.fit_transform(x_scaler) print(x_pca.shape) #查看各个主成分对应的方差大小和占全部方差的比例 #可以看到前2个主成分已经解释了样本分布的90%的差异了 print('explained_variance_:',pca.explained_variance_) print('explained_variance_ratio_:',pca.explained_variance_ratio_) print('total explained variance ratio of first 6 principal components:',sum(pca.explained_variance_ratio_)) #将分析的结果保存成字典 result={ 'explained_variance_:',pca.explained_variance_, 'explained_variance_ratio_:',pca.explained_variance_ratio_, 'total explained variance ratio:',np.sum(pca.explained_variance_ratio_)} df=pd.DataFrame.from_dict(result,orient='index',columns=['value']) df.to_csv('H:/analysis_results/Cluster analysis/pca_explained_variance_HN.csv') #可视化各个主成分贡献的方差 #fig1=plt.figure(figsize=(10,10)) #plt.rcParams['figure.dpi'] = 300#设置像素参数值 plt.rcParams['path.simplify'] = False#禁用抗锯齿效果 plt.figure() plt.plot(np.arange(1,4),pca.explained_variance_,color='blue', linestyle='-',linewidth=2) plt.xticks(np.arange(1, 4, 1))#修改X轴间隔为1 plt.title('PCA_plot_HN') plt.xlabel('components_n',fontsize=16) plt.ylabel('explained_variance_',fontsize=16) #plt.savefig('H:/analysis_results/Cluster analysis/pca_explained_variance_HN.png') plt.show()报错'numpy.float64' object is not iterable,如何修改
出现这个错误是因为在创建字典时,某些值被错误地设置为单个浮点数,而不是列表或数组。请将以下代码:
```
result={
'explained_variance_:',pca.explained_variance_,
'explained_variance_ratio_:',pca.explained_variance_ratio_,
'total explained variance ratio:',np.sum(pca.explained_variance_ratio_)
}
```
改为:
```
result={
'explained_variance_': [pca.explained_variance_],
'explained_variance_ratio_': [pca.explained_variance_ratio_],
'total explained variance ratio': [np.sum(pca.explained_variance_ratio_)]
}
```
这样就会将每个值包装在一个单元素列表中,以便字典能够正确地创建。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)