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 文件操作api(文件操作函数)
Aug 28 Python
python表格存取的方法
Mar 07 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
python写日志文件操作类与应用示例
Jul 01 Python
Python的Lambda函数用法详解
Sep 03 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
Python列表倒序输出及其效率详解
Mar 04 Python
python在一个范围内取随机数的简单实例
Aug 16 Python
python实现文件分片上传的接口自动化
Nov 19 Python
python中 .npy文件的读写操作实例
Apr 14 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 Python
Golang Web 框架Iris安装部署
Aug 14 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程序?
2006/12/08 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
PHP可变变量学习小结
2015/11/29 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
Add a Table to a Word Document
2007/06/15 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
使用Pycharm分段执行代码
2020/04/15 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
介绍一下EJB的体系结构
2012/08/01 面试题
2014年师德师风学习材料
2014/05/16 职场文书
会员活动策划方案
2014/08/19 职场文书
亮剑精神观后感
2015/06/05 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
SQL语句多表联合查询的方法示例
2022/04/18 MySQL