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 随机生成中文验证码的实例代码
Mar 20 Python
python字典排序实例详解
May 20 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
python3 property装饰器实现原理与用法示例
May 15 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
python实现七段数码管和倒计时效果
Nov 23 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
Python如何将函数值赋给变量
Apr 28 Python
Python中可变和不可变对象的深入讲解
Aug 02 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
php SQL Injection with MySQL
2011/02/27 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
Jquery实现简单的动画效果代码
2012/03/18 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
使用Python的判断语句模拟三目运算
2015/04/24 Python
浅谈python数据类型及类型转换
2017/12/18 Python
python3安装speech语音模块的方法
2018/12/24 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
python各层级目录下import方法代码实例
2020/01/20 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
旅游项目开发策划书
2014/01/18 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
篮球赛口号
2014/06/18 职场文书
民用住房租房协议书
2014/10/29 职场文书
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技