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 BeautifulSoup库抓取58手机维修信息
Nov 21 Python
对于Python的Django框架部署的一些建议
Apr 09 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
python实现超市扫码仪计费
May 30 Python
kafka-python批量发送数据的实例
Dec 27 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
Python Numpy,mask图像的生成详解
Feb 19 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
python多线程semaphore实现线程数控制的示例
Aug 10 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
浅谈PHP的反射API
2017/02/26 PHP
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python 输出上个月的月末日期实例
2018/04/11 Python
python的sorted用法详解
2019/06/25 Python
django 消息框架 message使用详解
2019/07/22 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
openCV提取图像中的矩形区域
2020/07/21 Python
python线程里哪种模块比较适合
2020/08/02 Python
地理科学专业毕业生求职信
2013/10/15 职场文书
车间组长岗位职责
2013/12/20 职场文书
公司员工检讨书
2014/02/08 职场文书
十八大感想感言
2014/02/10 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
解放思想演讲稿
2014/09/11 职场文书
护士辞职信怎么写
2015/02/27 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
2015年女工委工作总结
2015/07/27 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
Python中递归以及递归遍历目录详解
2021/10/24 Python