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 相关文章推荐
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 Python
Python 16进制与中文相互转换的实现方法
Jul 09 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
Sep 25 Python
python for 循环获取index索引的方法
Feb 01 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
python安装scipy的步骤解析
Sep 28 Python
Python猜数字算法题详解
Mar 01 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 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 section简介与用法分析
2008/10/03 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
python Django批量导入不重复数据
2016/03/25 Python
Java及python正则表达式详解
2017/12/27 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
python3图片文件批量重命名处理
2019/10/31 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
Python如何批量生成和调用变量
2020/11/21 Python
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
毕业论文致谢部分怎么写
2015/05/14 职场文书
python井字棋游戏实现人机对战
2022/04/28 Python
小程序实现侧滑删除功能
2022/06/25 Javascript
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS