python 实现pca(主成分分析)降维处理

python 实现pca(主成分分析)降维处理

import numpy as np
from sklearn.decomposition import PCA
import sys
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def main():
    # test data
    #mat = [[-1,-1,0,2,1],[2,0,0,-1,-1],[2,0,1,1,0]]
    file1 = open("ssp_all.txt","r")
    list_row =file1.readlines()
    list_source = []
    for i in range(len(list_row)):
        column_list = list_row[i].strip().split("\t")  # 每一行split后是一个列表
        list_source.append(column_list)                # 在末尾追加到list_source
    for i in range(len(list_source)):  # 行数
        for j in range(len(list_source[i])):  # 列数
            list_source[i][j]=float(list_source[i][j])
    file1.close()
    pca = PCA(n_components=0.85)   #信息量为0.85,也可设定整型参数,那就是维度
    pca.fit(list_source)                  #训练
    newX=pca.fit_transform(list_source)   #降维后的数据
# PCA(copy=True, n_components=2, whiten=False)
    print(pca.explained_variance_ratio_)  #输出贡献率
    print(newX)     
    fig = plt.figure()
    ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=30, azim=20)
    plt.scatter(newX[:, 0], newX[:, 1],newX[:,2],marker='o')
    plt.show()
#因为降维后是3维数据所以后四行代码是画一个三维的图
main()

参数解释:

n_components: 我们可以利用此参数设置想要的特征维度数目,可以是int型的数字,也可以是阈值百分比,如95%,让PCA类根据样本特征方差来降到合适的维数,也可以指定为string类型,MLE。
copy: bool类型,TRUE或者FALSE,是否将原始数据复制一份,这样运行后原始数据值不会改变,默认为TRUE。
whiten:bool类型,是否进行白化(就是对降维后的数据进行归一化,使方差为1),默认为FALSE。如果需要后续处理可以改为TRUE。
explained_variance_: 代表降为后各主成分的方差值,方差值越大,表明越重要。
explained_variance_ratio_: 代表各主成分的贡献率。
inverse_transform(): 将降维后的数据转换成原始数据,X=pca.inverse_transform(newX)。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值