本例展示怎样在一个管道中使用FunctionTransformer.如果你知道你的数据集的第一主成分与分类任务无关,你可以使用FunctionTransformer选取除PCA转化的数据的第一列之外的全部数据.



  1. # coding:utf-8
  2. from pylab import *
  3. import numpy as np
  4. from sklearn.model_selection import train_test_split
  5. from sklearn.decomposition import PCA
  6. from sklearn.pipeline import make_pipeline
  7. from sklearn.preprocessing import FunctionTransformer
  8. myfont = matplotlib.font_manager.FontProperties(fname="Microsoft-Yahei-UI-Light.ttc")
  9. mpl.rcParams['axes.unicode_minus'] = False
  10. def _generate_vector(shift=0.5, noise=15):
  11. return np.arange(1000) + (np.random.rand(1000) - shift) * noise
  12. def generate_dataset():
  13. """
  14. 本数据集是两条斜率为1的直线,一个截距为0,一个截距为100
  15. """
  16. return np.vstack((
  17. np.vstack((
  18. _generate_vector(),
  19. _generate_vector() + 100,
  20. )).T,
  21. np.vstack((
  22. _generate_vector(),
  23. _generate_vector(),
  24. )).T,
  25. )), np.hstack((np.zeros(1000), np.ones(1000)))
  26. def all_but_first_column(X):
  27. return X[:, 1:]
  28. def drop_first_component(X, y):
  29. """
  30. 创建一个具有PCA(主成分分析)和列选择器的管道,
  31. 并使用它转换数据集
  32. """
  33. pipeline = make_pipeline(
  34. PCA(), FunctionTransformer(all_but_first_column),
  35. )
  36. X_train, X_test, y_train, y_test = train_test_split(X, y)
  37. pipeline.fit(X_train, y_train)
  38. return pipeline.transform(X_test), y_test
  39. if __name__ == '__main__':
  40. X, y = generate_dataset()
  41. lw = 0
  42. plt.figure()
  43. plt.scatter(X[:, 0], X[:, 1], c=y, lw=lw)
  44. plt.title(u"FunctionTransformer选择数据列",fontproperties=myfont)
  45. plt.figure()
  46. X_transformed, y_transformed = drop_first_component(*generate_dataset())
  47. plt.scatter(
  48. X_transformed[:, 0],
  49. np.zeros(len(X_transformed)),
  50. c=y_transformed,
  51. lw=lw,
  52. s=60
  53. )
  54. plt.title(u"FunctionTransformer选择数据列",fontproperties=myfont)
  55. plt.show()

scikit-learn预处理实例之一:使用FunctionTransformer选择列的更多相关文章

  1. Scikit Learn: 在python中机器学习

    转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...

  2. (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探

    目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...

  3. scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)

    scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...

  4. (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探

    一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...

  5. Scikit Learn

    Scikit Learn Scikit-Learn简称sklearn,基于 Python 语言的,简单高效的数据挖掘和数据分析工具,建立在 NumPy,SciPy 和 matplotlib 上.

  6. 调用函数的ALV、面向对象的ALV设置带选择列

    这个就是通过对应的选择列,实现对ALV数据的选择,在调用函数的ALV和面向对象的ALV实现方法存在差异,下面讲两者的方法:1)调用函数的ALV.   通过 SLIS_LAYOUT_ALV-BOX_FI ...

  7. jqGrid选择列控件向右拖拽超出边界处理

    jqGrid选择列控件向右拖拽超出边界处理 $("#tb_DeviceInfo").jqGrid('navButtonAdd', '#jqGridPager', {         ...

  8. Devexpress GridControl中 repositoryItemCheckEdit作为选择列以及作为显示列的使用方法

    一.在gridcontrol列表控件中使用单选框作为选择列,这里有两种方式. 方式一:选择gridcontrol控件的Run Designer按钮,添加一列,设置该列的ColumnEdit为check ...

  9. 面向对象ALV选择列

    通过  gs_layout-box_fname  = 'SEL'.设置选择行,不能取到 SEL列的值 找资料:作者:f122300349 来源:CSDN 原文:https://blog.csdn.ne ...

随机推荐

  1. OpenCASCADE Shape Location

    OpenCASCADE Shape Location eryar@163.com Abstract. The TopLoc package of OpenCASCADE gives resources ...

  2. HTML块级元素

    前面的话   在HTML5出现之前,人们一般把元素分为块级.内联和内联块元素.本文将详细介绍HTML块级元素 h   标题(Heading)元素有六个不同的级别,<h1>是最高级的,而&l ...

  3. redis集成到Springmvc中及使用实例

    redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...

  4. Java中用得比较顺手的事件监听

    第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...

  5. 常用 meta 整理

    <!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 --> <meta name="HandheldFriendly" con ...

  6. mysql删除重复记录语句的方法

    例如: id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii id是主键 要求得到这样的结果 id name ...

  7. Linux实战教学笔记02:计算机系统硬件核心知识

    标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 互联网企业常见服务器介绍 1.1 互联网公司服务器品牌 - DELL(大多数公司,常用) - HP - IBM(百度在用) 浪潮 联想 航天联 ...

  8. 【python之路3】if 语句

    1.if语句用法(if....else....) #!/usr/bin/env python # -*- coding:utf-8 -*- my_name = raw_input("plea ...

  9. Python3中的字符串函数学习总结

    这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...

  10. 机器指令翻译成 JavaScript —— No.2 跳转处理

    上一篇,我们发现大多数 6502 指令都可以直接 1:1 翻译成 JS 代码,但除了「跳转指令」. 跳转指令,分无条件跳转.条件跳转.从另一个角度,也可分: 静态跳转:目标地址已知 动态跳转:目标地址 ...