特征选择原因

冗余:部分特征的相关度高,容易消耗计算性能
噪声:部分特征对预测结果有负影响

特征选择是什么

特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,

特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯

定比选择前小,毕竟我们只选择了其中的一部分特征。

主要方法(三大武器):Filter(过滤式):VarianceThreshold

Embedded(嵌入式):正则化、决策树

Wrapper(包裹式)

sklearn特征选择API

sklearn.feature_selection.VarianceThreshold

VarianceThreshold语法

VarianceThreshold(threshold = 0.0)
删除所有低方差特征
Variance.fit_transform(X,y)
X:numpy array格式的数据[n_samples,n_features]
返回值:训练集差异低于threshold的特征将被删除。
默认值是保留所有非零方差特征,即删除所有样本
中具有相同值的特征。

VarianceThreshold流程(代码演示)

sklearn降维API

sklearn. decomposition

PCA(主成分分析)

PCA是什么

本质:PCA是一种分析、简化数据集的技术

目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。

作用:可以削减回归分析或者聚类分析中特征的数量

高维度数据容易出现的问题:特征之间通常是线性相关的

PCA语法

PCA(n_components=None)
将数据分解为较低维数空间
PCA.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:转换后指定维度array

PCA流程(代码演示)

from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from sklearn.preprocessing import MinMaxScaler, StandardScaler, Imputer
from sklearn.feature_selection import VarianceThreshold
from sklearn.decomposition import PCA
import jieba
import numpy as np# 特征抽取
#
# 导入包
# from sklearn.feature_extraction.text import CountVectorizer
#
# # 实例化CountVectorizer
#
# vector = CountVectorizer()
#
# # 调用fit_transform输入并转换数据
#
# res = vector.fit_transform(["life is short,i like python","life is too long,i dislike python"])
#
# # 打印结果
# print(vector.get_feature_names())
#
# print(res.toarray())def dictvec():"""字典数据抽取:return: None"""# 实例化dict = DictVectorizer(sparse=False)# 调用fit_transformdata = dict.fit_transform([{'city': '北京','temperature': 100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature': 30}])print(dict.get_feature_names())print(dict.inverse_transform(data))print(data)return Nonedef countvec():"""对文本进行特征值化:return: None"""cv = CountVectorizer()data = cv.fit_transform(["人生 苦短,我 喜欢 python", "人生漫长,不用 python"])print(cv.get_feature_names())print(data.toarray())return Nonedef cutword():con1 = jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。")con2 = jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")con3 = jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")# 转换成列表content1 = list(con1)content2 = list(con2)content3 = list(con3)# 吧列表转换成字符串c1 = ' '.join(content1)c2 = ' '.join(content2)c3 = ' '.join(content3)return c1, c2, c3def hanzivec():"""中文特征值化:return: None"""c1, c2, c3 = cutword()print(c1, c2, c3)cv = CountVectorizer()data = cv.fit_transform([c1, c2, c3])print(cv.get_feature_names())print(data.toarray())return Nonedef tfidfvec():"""中文特征值化:return: None"""c1, c2, c3 = cutword()print(c1, c2, c3)tf = TfidfVectorizer()data = tf.fit_transform([c1, c2, c3])print(tf.get_feature_names())print(data.toarray())return Nonedef mm():"""归一化处理:return: NOne"""mm = MinMaxScaler(feature_range=(2, 3))data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])print(data)return Nonedef stand():"""标准化缩放:return:"""std = StandardScaler()data = std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])print(data)return Nonedef im():"""缺失值处理:return:NOne"""# NaN, nanim = Imputer(missing_values='NaN', strategy='mean', axis=0)data = im.fit_transform([[1, 2], [np.nan, 3], [7, 6]])print(data)return Nonedef var():"""特征选择-删除低方差的特征:return: None"""var = VarianceThreshold(threshold=1.0)data = var.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])print(data)return Nonedef pca():"""主成分分析进行特征降维:return: None"""pca = PCA(n_components=0.9)data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])print(data)return Noneif __name__ == "__main__":pca()

传智播客 机器学习之数据降维 学习笔记相关推荐

  1. 传智播客c/c++公开课学习笔记--Linux网络流媒体服务器的核心代码揭秘

    Xinetd 从守护进程的概念可以看出,对于系统所要通过的每一种服务,都必须运行一个监听某个端口连接所发生的守护进程, 这通常意味着资源浪费. 为了解决这个问题,Linux引进了"网络守护进 ...

  2. 【备忘】 传智播客云计算大数据Hadoop2014全套高清入门基础到项目实战

    [视频简介] 1,高清不加密. 3,基础(零基础)+中级+项目实战. 4,教学质量:注重方法,不拖泥带水,总之:非常好! 5,附件: 源码+就业指导面试资料. 下载地址:http://www.java ...

  3. SSH-Struts第三弹:传智播客视频教程第一天上午的笔记

    一. 框架概述 1.三大框架 : 是企业主流 JavaEE 开发的一套架构 Struts2 + Spring + Hibernate 2. 什么是框架?为什么要学框架 ? 框架 是 实现部分功能的代码 ...

  4. Ubuntu16.04 ROS 深度学习_传智播客 智能机器人软件开发 学习路线图出炉!首发优惠!!...

    黑马程序员 微信号:heiniu526 传智播客旗下互联网资讯,学习资源免费分享平台 智能机器人软件工程师学习计划 很多朋友对机器人软件开发和人工智能感兴趣,不知道怎么学习,传智播客武汉校区在今年3月 ...

  5. 深圳php就业,传智播客深圳校区PHP04期毕业15个工作日就业率67.74%

    近年来,随着PHP的应用更加广泛.全球有70%的站点在使用PHP开发,它与Linux/Mysql/Apache/Nginx等组成黄金搭档,无论是从成本投入还是从开发周期考虑,PHP都是一个不错的选择. ...

  6. 传智播客就是牛人培养牛人的地方!

    今天不经意间被朋友问了一下,我才突然意识到自己在传智播客培训已经快有三个月了,时间过得真快啊!         在这三个月左右的时间,仿佛是我目前人生中最最充实的三个月,也让我默默的有了很大的提高,回 ...

  7. 传智播客成都校区php学科收费标准

    继传智播客成都校区php第一期班圆满开班,说明php的火爆一点儿也不亚于java!经传智播客商讨决定,传智播客成都校区php学科收费标准如下: 采用以下任何一种方式都可以享受优惠价: 一.自带笔记本的 ...

  8. 2010-02-28 传智播客—Android(三)数据存储之三SQLite嵌入式数据库

    2010-02-28 传智播客-Android(三)数据存储之三SQLite嵌入式数据库 前两篇日志我已经总结了本地数据存储的前两种:文件和配置项.还剩下最后一种数据库存储--SQLite. 一.SQ ...

  9. python需要多久-在传智播客培训python需要多久?

    如今,python可以说是比较火的语言之一了,因为灵活以及在人工智能领域上的优势,不少人都转行去培训机构培训python,传智播客的官网上就每天有不少人都在咨询关于python的费用以及时长,今天传智 ...

  10. 与众不同 独树一帜,传智播客2018春季课程发布会在京举行

    2018年4月19日,"传智播客2018春季课程发布会"在北京77文创园召开,传智播客副总裁毕向东.教学研发总监朱景尧.研究院院长于洋.Python课程研发总监邢文鹏.博学谷运营总 ...

最新文章

  1. Zone.js 简介 抛砖引玉
  2. Silverlight游戏设计(Game Design):(五)面向对象的思想塑造游戏对象
  3. TypeScript 3.3来了!快看看有什么新功能
  4. 大众汽车和鸿蒙,鸿蒙系统下个月即将与大众见面,首发平台并非手机
  5. window 2008+apache2.4.4+php5.5+mysql-5.6.12+phpmyadmin4.0.4.1安装过程(参考他人文章基础上加上自己遇到的问题)...
  6. led计数电路实验报告_至简设计系列_状态机实现LED交通灯2
  7. python语言在命名上是什么敏感的_一文轻松掌握python语言命名规范规则
  8. 用自己数据集训练Mask_RCNN代码
  9. Redis的DMS管理工具treeNms
  10. python学习笔记爬虫——爬取网络表情包
  11. 基于RSA解题时yafu的使用
  12. 对称密码(共享秘钥密码)
  13. ai怎么做盒子效果图_仅需5步!手把手教你如何用AI绘制3D效果形象
  14. 《自拍教程48》Python_adb随机地图移图2小时
  15. 视频分割神器-MP4文件随意分割
  16. 汇率换算(android安卓版)
  17. img标签图片自适应的样式
  18. 微信小程序头像上传以及剪切(使用插件image-cropper)
  19. 基于Jeecg的权限获取
  20. 回顾12306 成长的烦恼

热门文章

  1. 在dom最前面插入_虚拟 DOM 到底是什么?
  2. python转换函数使用_Python基础学习之时间转换函数用法详解
  3. 联想计算机phoenix award bios,phoenix-Award BIOS
  4. CentOS7连接无线网络
  5. climbing-stairs-动态规划,爬楼梯的路径数
  6. IE浏览器url中带中文报错的问题;以及各种兼容以及浏览器问题总结
  7. Obj-C的hello,world 1
  8. 百度员工揭秘8月算法变动
  9. 将图片上传到数据库 因File.Open遭遇System.UnauthorizedAccessException
  10. Maya Mesh Relaxation Deformer