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 相关文章推荐
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
Python中的map、reduce和filter浅析
Apr 26 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
微信跳一跳辅助python代码实现
Jan 05 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
python 整数越界问题详解
Jun 27 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
使用tqdm显示Python代码执行进度功能
Dec 08 Python
python 求10个数的平均数实例
Dec 16 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
Pytest参数化parametrize使用代码实例
Feb 22 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
正则表达式语法
2006/10/09 Javascript
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
比较完整的微信开发php代码
2016/08/02 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
JS控件的生命周期介绍
2012/10/22 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
详解JS函数重载
2014/12/04 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
Python中删除文件的程序代码
2011/03/13 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
基于Python的OCR实现示例
2020/04/03 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
水污染治理专业毕业生推荐信
2013/11/14 职场文书
项目合作计划书
2014/01/09 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
美容院经理岗位职责
2014/04/03 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
个人作风建设自查报告
2014/10/22 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书