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跳出循环语句continue与break的区别
Aug 25 Python
使用python实现个性化词云的方法
Jun 16 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
python学习之matplotlib绘制散点图实例
Dec 09 Python
python Celery定时任务的示例
Mar 13 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
Selenium之模拟登录铁路12306的示例代码
Jul 31 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
python 实现"神经衰弱"翻牌游戏
Nov 09 Python
PyQt5实现多张图片显示并滚动
Jun 11 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学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
javascript 数组的方法集合
2008/06/05 Javascript
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
小程序文字跑马灯效果
2018/12/28 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
用Python编写web API的教程
2015/04/30 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
python魔法方法-自定义序列详解
2016/07/21 Python
浅述python中深浅拷贝原理
2018/09/18 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Python学习笔记之装饰器
2020/08/06 Python
PyTorch安装与基本使用详解
2020/08/31 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
采购部岗位职责
2013/11/24 职场文书
戒赌保证书
2015/05/11 职场文书
十月围城观后感
2015/06/08 职场文书
nginx lua 操作 mysql
2022/05/15 Servers
python中validators库的使用方法详解
2022/09/23 Python