Python实现最小最大、零均值、小数定标规范化、pca降维

1.实现要求

对于一个含有N个记录和P个属性的数据集,以principal_component.xls为例,分别对每一个属性取值进行规范化,对原始的数据矩阵分别用最小—最大规范化、零-均值规范化,小数定标规范化进行预处理。并写出PCA降维代码。
原始数据:
原始数据

2.具体实现

0.读取数据:

#读取excel文件:
    data = pd.read_excel('./principal_component.xls',header=None)
    print(data) #打印查看是否正确

1.最小最大规范化:

这里不赘述数学原理,只讲解代码本身,如有疑问请自行查阅其他相关资料。

#----------最小-最大规范化--------------------------------------------
def MinMax_Normalize(data):
    text=(data - data.min())/(data.max() - data.min()) #最小-最大规范化
    text.to_excel ('./最小-最大规范化.xlsx',index=None) #另存为excel(删除索引
    return text

实现效果:
在这里插入图片描述

2.零均值规范化:

#----零-均值规范化--------------------------------------------
def ZeroAvg_Normalize(data):
    text=(data - data.mean())/data.std() 
    text.to_excel ('./零-均值规范化.xlsx',index=None)
    return text

实现效果:
在这里插入图片描述

3.小数定标规范化:

#-----小数定标规范化--------------------------------------------
def Float_Normalize(data):
    text=data/10**np.ceil(np.log10(data.abs().max())) 
    text.to_excel ('.小数定标规范化.xlsx',index=None)
    return (text)

实现效果:
在这里插入图片描述
4.PCA降维代码(并且绘制图形):

#------pca降维代码--------------------------------------------

def PCA(data):
#调用sklearn库实现PCA:
    pca = decomposition.PCA()
    pca.fit(data)    #X_arr是原始数据集,一行表示一个样本,一列表示一个feature
    pca.n_components = 1    #降为1维,可自由选择几维
    X_reduced = pca.fit_transform(data) #X_reduced是降维后的数据集
    plt.plot(X_reduced)#绘图模块
    plt.show()
    return(X_reduced) #这里的X_reduced根据自己选择是否返回,若不清楚是什么可以打印一下查看

实现效果:
在这里插入图片描述

在这里插入图片描述

3.完整代码:

"""
@author:  [YouYang Wang]
@version: [1.0]
@time: 2021/5/22
@factor: 对excel数据进行最大最小规范化、零均值规范化、小数定标规范化,PCA处理

"""
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import decomposition

#--------------------------------------------最小-最大规范化--------------------------------------------
def MinMax_Normalize(data):
    text=(data - data.min())/(data.max() - data.min())          #最小-最大规范化
    text.to_excel ('./最小-最大规范化.xlsx',index=None)   #另存为excel(删除索引
    return text

#--------------------------------------------零-均值规范化--------------------------------------------
def ZeroAvg_Normalize(data):
    text=(data - data.mean())/data.std() 
    text.to_excel ('./零-均值规范化.xlsx',index=None)
    return text

#--------------------------------------------小数定标规范化--------------------------------------------
def Float_Normalize(data):
    text=data/10**np.ceil(np.log10(data.abs().max())) 
    text.to_excel ('.小数定标规范化.xlsx',index=None)
    return (text)

#--------------------------------------------pca降维代码--------------------------------------------

def PCA(data):
#调用sklearn库实现PCA:
    pca = decomposition.PCA()
    pca.fit(data)                                         #X_arr是原始数据集,一行表示一个样本,一列表示一个feature
    pca.n_components = 1                        #降为1维
    X_reduced = pca.fit_transform(data) #X_reduced是降维后的数据集
    plt.plot(X_reduced)
    plt.show()
    return(X_reduced)

if __name__ == '__main__':
    #读取excel文件:
    data = pd.read_excel('./principal_component.xls',header=None)
    print(data)
    #规范化:
    M=MinMax_Normalize(data) 
    F=Float_Normalize(data)
    Z=ZeroAvg_Normalize(data)
    print(M)
    print(F)
    print(Z)
    #PCA降维:
    print(PCA(data))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值