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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
Python中协程用法代码详解
Feb 10 Python
CentOS7安装Python3的教程详解
Apr 10 Python
Python后台开发Django会话控制的实现
Apr 15 Python
pip安装python库的方法总结
Aug 02 Python
python图片二值化提高识别率代码实例
Aug 24 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 Python
500行python代码实现飞机大战
Apr 24 Python
python 实现Requests发送带cookies的请求
Feb 08 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中__get()和__set()的用法实例详解
2013/06/04 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
2016/12/06 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
python集合类型用法分析
2015/04/08 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
Python中正则表达式详解
2017/05/17 Python
pyqt5简介及安装方法介绍
2018/01/31 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
python 装饰器的基本使用
2021/01/13 Python
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
JMS中Topic和Queue有什么区别
2013/05/15 面试题
幼儿园教师辞职信
2019/06/21 职场文书
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技