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实现国外赌场热门游戏Craps(双骰子)
Mar 31 Python
再谈Python中的字符串与字符编码(推荐)
Dec 14 Python
python矩阵的转置和逆转实例
Dec 12 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
python numpy 反转 reverse示例
Dec 04 Python
Python列表去重复项的N种方法(实例代码)
May 12 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
用python绘制樱花树
Oct 09 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 Python
PyQt5中QSpinBox计数器的实现
Jan 18 Python
matplotlib阶梯图的实现(step())
Mar 02 Python
python实现网络五子棋
Apr 11 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清除字符串中所有无用标签的方法
2014/12/01 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
php构造函数的继承方法
2015/02/09 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
jquery动画1.加载指示器
2012/08/24 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
使用python获取电脑的磁盘信息方法
2018/11/01 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
如何基于python实现脚本加密
2019/12/28 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
python 实现表情识别
2020/11/21 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
2014年学校卫生工作总结
2014/11/20 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书