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 自动提交和抓取网页
Jul 13 Python
python中bisect模块用法实例
Sep 25 Python
Python标准库内置函数complex介绍
Nov 25 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
Python中函数参数调用方式分析
Aug 09 Python
python 异或加密字符串的实例
Oct 14 Python
用pycharm开发django项目示例代码
Jun 13 Python
pandas的排序和排名的具体使用
Jul 31 Python
python元组和字典的内建函数实例详解
Oct 22 Python
python scatter函数用法实例详解
Feb 11 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
java字符串格式化输出实例讲解
Jan 06 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 smarty的预保留变量总结
2008/12/04 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
使用URL传输SESSION信息
2015/07/14 PHP
php实现点击可刷新验证码
2015/11/07 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
简单实现Python爬取网络图片
2018/04/01 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
python numpy存取文件的方式
2020/04/01 Python
一文读懂Python 枚举
2020/08/25 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
给排水专业应届生求职信
2013/10/12 职场文书
退休感言
2014/01/28 职场文书
区优秀教师事迹材料
2014/02/10 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
政府信息公开实施方案
2014/05/09 职场文书
远程培训的心得体会
2014/09/01 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
幼师辞职信范文
2015/02/27 职场文书
教师节主持词开场白
2015/05/29 职场文书
在js中修改html body的样式
2021/11/11 Javascript
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫