PCA,SVD原理介绍及python下的具体实现及包的调用

  • 1. PCA原理介绍
  • 2. PCA+SVD原理介绍
  • 3. python下编写代码实现PCA+SVD
  • 4. python里如何使用成熟的现有PCA包
    • 整体调用函数:
    • 预处理函数:
    • 调用sklearn的包:

1. PCA原理介绍

详情参见我的上一篇博客:PCA原理介绍

2. PCA+SVD原理介绍

详情参见我的上一篇博客:PCA+SVD原理介绍

3. python下编写代码实现PCA+SVD

详情参见我的上一篇博客:python下编写代码实现PCA+SVD

4. python里如何使用成熟的现有PCA包

整体调用函数:
data, dataTest = get_data()  # 获取训练集data 准备PCAprint(len(data), '个样本', len(data.columns), '个属性')print('----------------------------- PCA my data ...  ------------------------------------- ')dataY = data[['allcase']]  # 去除训练集的结果属性dataX = data.drop('allcase', axis=1, inplace=False)  #  保留训练集的普通属性 用于PCAdataTestY = dataTest[['allcase']]  # 去除测试集的结果属性dataTestX = dataTest.drop('allcase', axis=1, inplace=False)  # 保留测试集的普通属性 用于PCA# 用训练集的平均数,方差去归一化测试集dataX, dataTestX = NormalizeData(dataX, dataTestX)# PCA降维dataAfterPca, newColLen, dataTestAfterPca = myPCA(per, dataX, dataTestX)
预处理函数:
def NormalizeData(data, dataTest):scaler = StandardScaler()   # 建立标准化模型dataAttr = scaler.fit_transform(data)  # fit_transform:采用训练集fit 模型,保存均值,方差 然后对训练集进行标准化dataTestAttr = scaler.transform(dataTest)   # transform:采用训练集的均值,方差 然后对测试集进行标准化return dataAttr, dataTestAttr
调用sklearn的包:
from sklearn.decomposition import PCAdef myPCA(mcomponent, dataAttr, dataTestAttr):pca = PCA(n_components=mcomponent, copy=True, whiten=False)  # 建立pca model#  copy表示在数据副本上进行pca降维dataAttrAfterPca = pd.DataFrame(pca.fit_transform(dataAttr))  # fit拟合数据,transform返回降维后的数据矩阵dataTestAttrAfterPca = pd.DataFrame(pca.transform(dataTestAttr))  # transform用训练好的投影矩阵去降维测试集print('降维后新特征的方差百分比: ', pca.explained_variance_ratio_,'\n在保持mcomponent达到', mcomponent,   '后共有', len(pd.DataFrame(pca.explained_variance_ratio_)), '个新属性')dataAttrAfterPca = pd.DataFrame(dataAttrAfterPca.iloc[:, :len(pd.DataFrame(pca.explained_variance_ratio_))])# 把降维后的属性名改为str字符型的 便于存储成csvfor each in dataAttrAfterPca.columns:dataAttrAfterPca.rename(columns={each: str(each)}, inplace=True)dataTestAttrAfterPca = dataTestAttrAfterPca.iloc[:, :len(pd.DataFrame(pca.explained_variance_ratio_))]for each in dataTestAttrAfterPca.columns:dataTestAttrAfterPca.rename(columns={each: str(each)}, inplace=True)return dataAttrAfterPca, len(pd.DataFrame(pca.explained_variance_ratio_)), dataTestAttrAfterPca

4. python里如何使用成熟的现有PCA包相关推荐

  1. Python里的dict和set的背后小秘密

    Python里的dict和set的效率有多高? 为什么它们是无序的? 为什么并不是所有的Python对象都可以当作dict的键或set里的元素? 为什么dict的键和set的元素的顺序是根据它们被添加 ...

  2. 一篇长文带你在python里玩转Json数据

    Json简介 Json(JavaScript Object Notation) 很多网站都会用到Json格式来进行数据的传输和交换. 这因为Json是一种轻量级的数据交换格式,具有数据格式简单,读写方 ...

  3. 下列哪个不是目前python里的内置模块-python中那些小众但有用的内置模块

    今天带来的是python里一些小众但是却比较实用的python库,一起来看看吧! pprint:更清晰的打印 pprint 是 pretty printer 的缩写,用来打印 Python 数据结构, ...

  4. python中的format什么意思中文-python里format什么意思

    format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型(推荐学习:Python视频教程) ...

  5. python能绘制统计图吗-特征锦囊:常用的统计图在Python里怎么画?

    今日锦囊 常用的统计图在Python里怎么画? 这里的话我们介绍几种很简单但也很实用的统计图绘制方法,分别有条形图.饼图.箱体图.直方图以及散点图,关于这几种图形的含义这边就不多做解释了. 今天用到两 ...

  6. python装饰器类-PYTHON里的装饰器能装饰类吗

    扩展回答 如何理解python里的装饰器 通常可以理解它是一个hook 的回调函数. 或者是理解成python 留给二次开发的一个内置API. 一般是用回调和hook 方式实现的. 如何理解Pytho ...

  7. python里unexpected eof while parsing_使用Python编程时的10个注意事项

    01初始变化量 在Python里,一个表达式中的名字在它被赋值之前是没法使用的.这是有意而为的:这样能避免一些输入失误,同时也能避免默认究竟应该是什么类型的问题(0,None,"" ...

  8. python nlp包_StanfordNLP,让你在 Python 里一手掌握 53 种自然语言分析

    发表日期:2019-06-12 StanfordNLP,让你在 Python 里一手掌握 53 种自然语言分析 -- 不久之前,斯坦福大学公开了它最新的自然语言处理代码库-- StanfordNLP. ...

  9. 为什么在Python里推荐使用多进程而不是多线程?(为什么python多线程无法增加CPU使用率?)...

    最近在看Python的多线程,经常我们会听到老手说:"Python下多线程是鸡肋,推荐使用多进程!",但是为什么这么说呢? 要知其然,更要知其所以然.所以有了下面的深入研究: 首先 ...

最新文章

  1. WP8:Unity3D之间的值传递
  2. php监听input,jQuery如何实时监听获取input输入框的值
  3. 七、朴素贝叶斯中文文本分类
  4. Vim 命令行快捷键
  5. 迷宫问题(寻路)和状态空间搜索
  6. 20172325 2018-2019-1 蓝墨云班课实验--哈夫曼树的编码
  7. html中加入点击事件,html中的点击事件
  8. iTunes修改备份文件路径
  9. jupyter notebook修改黑色背景和字体大小
  10. Excel —— 相对引用录制宏(附视频)
  11. Hark的数据结构与算法练习之冒泡排序
  12. win10下,扩展屏不清晰模糊。
  13. 华为emui10.0系统是鸿蒙吗,暂时忘记鸿蒙!华为EMUI 10.0发布时间确认:这才是主角...
  14. Qualcomm 音频学习一
  15. 计算机专业就业方向小结
  16. 华为会用鸿蒙系统吗,华为P40会用鸿蒙系统是真的吗 华为p40上市时间介绍
  17. 英语学习笔记(二)语法
  18. 2021/11/16 定时器Timer和cron表达式
  19. 用c语言做判断题题库及答案,河南工业大学C语言题库判断题
  20. 邦纳LTF12KC2LDQ激光传感器

热门文章

  1. 1.动手编写自动编码器
  2. 到底什么是hash呢?hash碰撞?为什么HashMap的初始容量是16?
  3. 关于国密HTTPS 的那些事(三)
  4. 《可汗学院-线性代数小结》
  5. 将txt文本由utf-8转gbk
  6. 苹果触控笔有必要买吗?好用不贵主动式电容笔推荐
  7. python命名规则和标识符有哪些
  8. vue + vscode 插件
  9. vc中人脸识别数据导入mysql_虹软人脸识别 - 采用数据库存取人脸特征数据
  10. docker打包 python镜像