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操作MongoDB基础知识
Nov 01 Python
用实例说明python的*args和**kwargs用法
Nov 01 Python
python操作redis的方法
Jul 07 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
python实现的正则表达式功能入门教程【经典】
Jun 05 Python
python顺序的读取文件夹下名称有序的文件方法
Jul 11 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
Python中几种属性访问的区别与用法详解
Oct 10 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
python进程池实现的多进程文件夹copy器完整示例
Nov 27 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
Python面向对象之成员相关知识总结
Jun 24 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
Smarty Foreach 使用说明
2010/03/23 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
JS实现闪动的title消息提醒效果
2014/06/20 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
webpack4实现不同的导出类型
2019/04/09 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
python Django连接MySQL数据库做增删改查
2013/11/07 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
python 读取文件并替换字段的实例
2018/07/12 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
python实现对输入的密文加密
2019/03/20 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
医院搬迁方案
2014/06/14 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
个人租房协议书样本
2014/10/01 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
世界十大狙击步枪排行榜
2022/03/20 杂记