Python实现的特征提取操作示例


Posted in Python onDecember 03, 2018

本文实例讲述了Python实现的特征提取操作。分享给大家供大家参考,具体如下:

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 21 10:57:29 2017
@author: 飘的心
"""
#过滤式特征选择
#根据方差进行选择,方差越小,代表该属性识别能力很差,可以剔除
from sklearn.feature_selection import VarianceThreshold
x=[[100,1,2,3],
  [100,4,5,6],
  [100,7,8,9],
  [101,11,12,13]]
selector=VarianceThreshold(1) #方差阈值值,
selector.fit(x)
selector.variances_ #展现属性的方差
selector.transform(x)#进行特征选择
selector.get_support(True) #选择结果后,特征之前的索引
selector.inverse_transform(selector.transform(x)) #将特征选择后的结果还原成原始数据
                         #被剔除掉的数据,显示为0
#单变量特征选择
from sklearn.feature_selection import SelectKBest,f_classif
x=[[1,2,3,4,5],
  [5,4,3,2,1],
  [3,3,3,3,3],
  [1,1,1,1,1]]
y=[0,1,0,1]
selector=SelectKBest(score_func=f_classif,k=3)#选择3个特征,指标使用的是方差分析F值
selector.fit(x,y)
selector.scores_ #每一个特征的得分
selector.pvalues_
selector.get_support(True) #如果为true,则返回被选出的特征下标,如果选择False,则
              #返回的是一个布尔值组成的数组,该数组只是那些特征被选择
selector.transform(x)
#包裹时特征选择
from sklearn.feature_selection import RFE
from sklearn.svm import LinearSVC #选择svm作为评定算法
from sklearn.datasets import load_iris #加载数据集
iris=load_iris()
x=iris.data
y=iris.target
estimator=LinearSVC()
selector=RFE(estimator=estimator,n_features_to_select=2) #选择2个特征
selector.fit(x,y)
selector.n_features_  #给出被选出的特征的数量
selector.support_   #给出了被选择特征的mask
selector.ranking_   #特征排名,被选出特征的排名为1
#注意:特征提取对于预测性能的提升没有必然的联系,接下来进行比较;
from sklearn.feature_selection import RFE
from sklearn.svm import LinearSVC
from sklearn import cross_validation
from sklearn.datasets import load_iris
#加载数据
iris=load_iris()
X=iris.data
y=iris.target
#特征提取
estimator=LinearSVC()
selector=RFE(estimator=estimator,n_features_to_select=2)
X_t=selector.fit_transform(X,y)
#切分测试集与验证集
x_train,x_test,y_train,y_test=cross_validation.train_test_split(X,y,
                  test_size=0.25,random_state=0,stratify=y)
x_train_t,x_test_t,y_train_t,y_test_t=cross_validation.train_test_split(X_t,y,
                  test_size=0.25,random_state=0,stratify=y)
clf=LinearSVC()
clf_t=LinearSVC()
clf.fit(x_train,y_train)
clf_t.fit(x_train_t,y_train_t)
print('origin dataset test score:',clf.score(x_test,y_test))
#origin dataset test score: 0.973684210526
print('selected Dataset:test score:',clf_t.score(x_test_t,y_test_t))
#selected Dataset:test score: 0.947368421053
import numpy as np
from sklearn.feature_selection import RFECV
from sklearn.svm import LinearSVC
from sklearn.datasets import load_iris
iris=load_iris()
x=iris.data
y=iris.target
estimator=LinearSVC()
selector=RFECV(estimator=estimator,cv=3)
selector.fit(x,y)
selector.n_features_
selector.support_
selector.ranking_
selector.grid_scores_
#嵌入式特征选择
import numpy as np
from sklearn.feature_selection import SelectFromModel
from sklearn.svm import LinearSVC
from sklearn.datasets import load_digits
digits=load_digits()
x=digits.data
y=digits.target
estimator=LinearSVC(penalty='l1',dual=False)
selector=SelectFromModel(estimator=estimator,threshold='mean')
selector.fit(x,y)
selector.transform(x)
selector.threshold_
selector.get_support(indices=True)
#scikitlearn提供了Pipeline来讲多个学习器组成流水线,通常流水线的形式为:将数据标准化,
#--》特征提取的学习器————》执行预测的学习器,除了最后一个学习器之后,
#前面的所有学习器必须提供transform方法,该方法用于数据转化(如归一化、正则化、
#以及特征提取
#学习器流水线(pipeline)
from sklearn.svm import LinearSVC
from sklearn.datasets import load_digits
from sklearn import cross_validation
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
def test_Pipeline(data):
  x_train,x_test,y_train,y_test=data
  steps=[('linear_svm',LinearSVC(C=1,penalty='l1',dual=False)),
      ('logisticregression',LogisticRegression(C=1))]
  pipeline=Pipeline(steps)
  pipeline.fit(x_train,y_train)
  print('named steps',pipeline.named_steps)
  print('pipeline score',pipeline.score(x_test,y_test))
if __name__=='__main__':
  data=load_digits()
  x=data.data
  y=data.target
  test_Pipeline(cross_validation.train_test_split(x,y,test_size=0.25,
                  random_state=0,stratify=y))

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python实现股市信息下载的方法
Jun 15 Python
Python实现SVN的目录周期性备份实例
Jul 17 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
Python实现的概率分布运算操作示例
Aug 14 Python
Selenium的使用详解
Oct 19 Python
python3在同一行内输入n个数并用列表保存的例子
Jul 20 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
python代码打印100-999之间的回文数示例
Nov 24 Python
python从内存地址上加载python对象过程详解
Jan 08 Python
python 轮询执行某函数的2种方式
May 03 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 Python
python BeautifulSoup库的安装与使用
Dec 17 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 #Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 #Python
python 实现语音聊天机器人的示例代码
Dec 02 #Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 #Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 #Python
PyCharm配置mongo插件的方法
Nov 30 #Python
对python自动生成接口测试的示例讲解
Nov 30 #Python
You might like
PHP4实际应用经验篇(1)
2006/10/09 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
YII实现分页的方法
2014/07/09 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
JS实现星星海特效
2019/12/24 Javascript
在Django中创建动态视图的教程
2015/07/15 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
会计出纳岗位职责
2013/12/25 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
电力安全事故反思
2014/04/27 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
大学军训的体会
2014/11/08 职场文书
计划生育责任书
2015/05/09 职场文书