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分割和拼接字符串
Nov 01 Python
用Python实现命令行闹钟脚本实例
Sep 05 Python
matplotlib savefig 保存图片大小的实例
May 24 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
pandas 条件搜索返回列表的方法
Oct 30 Python
Django-Rest-Framework 权限管理源码浅析(小结)
Nov 12 Python
python异步实现定时任务和周期任务的方法
Jun 29 Python
如何基于Python创建目录文件夹
Dec 31 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
python 邮件检测工具mmpi的使用
Jan 04 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 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获取数组的键与值方法小结
2015/06/13 PHP
php身份证号码检查类实例
2015/06/18 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
js数组的操作指南
2014/12/28 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
Python3中的json模块使用详解
2018/05/05 Python
python代码 输入数字使其反向输出的方法
2018/12/22 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
电子商务专业个人的自我评价
2013/11/19 职场文书
家佳咖啡店创业计划书
2013/12/27 职场文书
会计电算化大学生职业规划书
2014/02/05 职场文书
大学生党员承诺书
2014/05/20 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
出纳工作检讨书
2014/10/18 职场文书
学术会议领导致辞
2015/07/29 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
golang json数组拼接的实例
2021/04/28 Golang
分享几个简单MySQL优化小妙招
2022/03/31 MySQL