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 相关文章推荐
window下eclipse安装python插件教程
Apr 24 Python
基于python指定包的安装路径方法
Oct 27 Python
解决Django生产环境无法加载静态文件问题的解决
Apr 23 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
python离线安装外部依赖包的实现
Feb 13 Python
Python作用域与名字空间原理详解
Mar 21 Python
python实现处理mysql结果输出方式
Apr 09 Python
python字典key不能是可以是啥类型
Aug 04 Python
Python之字典对象的几种创建方法
Sep 30 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
matplotlib grid()设置网格线外观的实现
Feb 22 Python
python如何将mat文件转为png
Jul 15 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
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
smarty简单入门实例
2014/11/28 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
Python collections模块实例讲解
2014/04/07 Python
python实现微信自动回复功能
2018/04/11 Python
Python读取指定日期邮件的实例
2019/02/01 Python
解决Python二维数组赋值问题
2019/11/28 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
Django中的session用法详解
2020/03/09 Python
Python气泡提示与标签的实现
2020/04/01 Python
Django如何使用redis作为缓存
2020/05/21 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
生产车间主任的个人自我鉴定
2013/10/25 职场文书
绩效考核实施方案
2014/03/18 职场文书
电信营业员岗位职责
2015/04/14 职场文书