4. python里如何使用成熟的现有PCA包
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包相关推荐
- Python里的dict和set的背后小秘密
Python里的dict和set的效率有多高? 为什么它们是无序的? 为什么并不是所有的Python对象都可以当作dict的键或set里的元素? 为什么dict的键和set的元素的顺序是根据它们被添加 ...
- 一篇长文带你在python里玩转Json数据
Json简介 Json(JavaScript Object Notation) 很多网站都会用到Json格式来进行数据的传输和交换. 这因为Json是一种轻量级的数据交换格式,具有数据格式简单,读写方 ...
- 下列哪个不是目前python里的内置模块-python中那些小众但有用的内置模块
今天带来的是python里一些小众但是却比较实用的python库,一起来看看吧! pprint:更清晰的打印 pprint 是 pretty printer 的缩写,用来打印 Python 数据结构, ...
- python中的format什么意思中文-python里format什么意思
format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型(推荐学习:Python视频教程) ...
- python能绘制统计图吗-特征锦囊:常用的统计图在Python里怎么画?
今日锦囊 常用的统计图在Python里怎么画? 这里的话我们介绍几种很简单但也很实用的统计图绘制方法,分别有条形图.饼图.箱体图.直方图以及散点图,关于这几种图形的含义这边就不多做解释了. 今天用到两 ...
- python装饰器类-PYTHON里的装饰器能装饰类吗
扩展回答 如何理解python里的装饰器 通常可以理解它是一个hook 的回调函数. 或者是理解成python 留给二次开发的一个内置API. 一般是用回调和hook 方式实现的. 如何理解Pytho ...
- python里unexpected eof while parsing_使用Python编程时的10个注意事项
01初始变化量 在Python里,一个表达式中的名字在它被赋值之前是没法使用的.这是有意而为的:这样能避免一些输入失误,同时也能避免默认究竟应该是什么类型的问题(0,None,"" ...
- python nlp包_StanfordNLP,让你在 Python 里一手掌握 53 种自然语言分析
发表日期:2019-06-12 StanfordNLP,让你在 Python 里一手掌握 53 种自然语言分析 -- 不久之前,斯坦福大学公开了它最新的自然语言处理代码库-- StanfordNLP. ...
- 为什么在Python里推荐使用多进程而不是多线程?(为什么python多线程无法增加CPU使用率?)...
最近在看Python的多线程,经常我们会听到老手说:"Python下多线程是鸡肋,推荐使用多进程!",但是为什么这么说呢? 要知其然,更要知其所以然.所以有了下面的深入研究: 首先 ...
最新文章
- WP8:Unity3D之间的值传递
- php监听input,jQuery如何实时监听获取input输入框的值
- 七、朴素贝叶斯中文文本分类
- Vim 命令行快捷键
- 迷宫问题(寻路)和状态空间搜索
- 20172325 2018-2019-1 蓝墨云班课实验--哈夫曼树的编码
- html中加入点击事件,html中的点击事件
- iTunes修改备份文件路径
- jupyter notebook修改黑色背景和字体大小
- Excel —— 相对引用录制宏(附视频)
- Hark的数据结构与算法练习之冒泡排序
- win10下,扩展屏不清晰模糊。
- 华为emui10.0系统是鸿蒙吗,暂时忘记鸿蒙!华为EMUI 10.0发布时间确认:这才是主角...
- Qualcomm 音频学习一
- 计算机专业就业方向小结
- 华为会用鸿蒙系统吗,华为P40会用鸿蒙系统是真的吗 华为p40上市时间介绍
- 英语学习笔记(二)语法
- 2021/11/16 定时器Timer和cron表达式
- 用c语言做判断题题库及答案,河南工业大学C语言题库判断题
- 邦纳LTF12KC2LDQ激光传感器