Python进行特征提取的示例代码


Posted in Python onOctober 15, 2020
#过滤式特征选择
#根据方差进行选择,方差越小,代表该属性识别能力很差,可以剔除
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 相关文章推荐
更改Python命令行交互提示符的方法
Jan 14 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
Python IDLE清空窗口的实例
Jun 25 Python
Python OpenCV处理图像之滤镜和图像运算
Jul 10 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
在IPython中执行Python程序文件的示例
Nov 01 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
TensorFlow保存TensorBoard图像操作
Jun 23 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
python中os.path.join()函数实例用法
May 26 Python
Python通过递归函数输出嵌套列表元素
Oct 15 #Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 #Python
Python return语句如何实现结果返回调用
Oct 15 #Python
python 进程池pool使用详解
Oct 15 #Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 #Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 #Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 #Python
You might like
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
2011/06/23 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
php实现微信扫码支付
2017/03/26 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
JavaScript 动态生成方法的例子
2009/07/22 Javascript
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
python 判断一个进程是否存在
2009/04/09 Python
python del()函数用法
2013/03/24 Python
进一步探究Python的装饰器的运用
2015/05/05 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
vue项目实现分页效果
2021/03/24 Vue.js
大学生职业生涯规划方案
2014/01/03 职场文书
优秀教师主要事迹
2014/02/01 职场文书
娱乐节目策划方案
2014/06/10 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
家长学校教学计划
2015/01/19 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技