一、安装NNI和依赖

pip install nni
pip install sklearn
  • 不建议在Win10下面装NNI,因为需要c++14.0很麻烦。
  • 另外 nni==2.2

二、数据集

  • 下载地址:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/rcv1_train.binary.bz2
  • 下载好了之后改名为  train.bz2  和项目代码放一起。
  • 数据集介绍:
  1. 2000年,路透社提供了大量的路透新闻报道作为语料,用于研究和开发自然语言处理、信息检索和机器学习系统。 这个被称为“路透社语料库”(Volume 1)或文本分类语料库RCV1,语料库显着大于使用的较老的着名的Reuters-21578语料库。
  2. 这个数据集格式采用libsvm格式,libsvm使用的训练数据和检验数据文件格式如下: [label] [index1]:[value1] [index2]:[value2] …
  3. label  目标值,就是说class(属于哪一类),就是你要分类的种类,通常是一些整数。

    index 是有顺序的索引,通常是连续的整数。就是指特征编号,必须按照升序排列

    value 就是特征值,用来train的数据,通常是一堆实数组成。

  4. 第一条数据:1 440:0.033906222568727 730:0.0424739279722748 1523:0.0773048148348295 1893:0.0433930684646909 1897:0.0693077934377529 2120:0.0500434655722085 2152:0.0379679538790946 ... 41223:0.0342446433523316 41709:0.0563111582566908 42277:0.0501888700990041 42362:0.0326486741382873 42706:0.122234412472576 42841:0.0375664880419366 42906:0.109509410770845 43205:0.0610532846234059 43636:0.056725029701754 44009:0.120520739490107 44381:0.0976587689376341 44439:0.0575502822534226 44599:0.0405391139806316 44882:0.10476728440413 44947:0.0651191808876015 46200:0.0641547693610176 46545:0.0253966925710639 46694:0.027156420977038 47148:0.0933512261048991

三、代码

# 文件原名叫sklearn_test.py 包含在nni/examples/feature_engineering/fradient_feature_selector/sklearn)test.py
# 现在nni升级到了2.2版本一些函数存在变化,我将示例代码做了如下修改,且删掉了sklearn部分的自动特征工程代码
import bz2
import urllib.request
import numpy as npfrom sklearn.datasets import load_svmlight_file
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression
# 新版引用
from nni.algorithms.feature_engineering.gradient_selector import FeatureGradientSelectordef test():f_svm = open('train.svm', 'wt')with bz2.open('train.bz2', 'rb') as f_zip:data = f_zip.read()f_svm.write(data.decode('utf-8'))f_svm.close()# 读取svm格式数据集X, y = load_svmlight_file('train.svm')# 划分训练集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)# n_epochs来着官方说明的表格(下面有),这个数据集全部特征共计47236个,全用上会是准确率最高的,verbose以最详细的显示训练过程,device可以使用显卡,会快上不少,不过依旧需要好几个小时pipeline = make_pipeline(FeatureGradientSelector(n_epochs=20242, n_features=47236, verbose=2, device="cuda"), LogisticRegression())pipeline.fit(X_train, y_train)print("Pipeline Score: ", pipeline.score(X_train, y_train))if __name__ == "__main__":test()

四、附加资料

Baseline 表示没有进行特征选择,直接将数据传入 LogisticRegression。 此基准测试中,仅用了 10% 的训练数据作为测试数据。 对于 GradientFeatureSelector,仅使用了前 20 个特征。 下列指标是在给定测试数据和标签上的平均精度。

数据集

所有特征 + LR (acc, time, memory)

GradientFeatureSelector + LR (acc, time, memory)

TreeBasedClassifier + LR (acc, time, memory)

#训练次数

#特征数量

colon-cancer

0.7547, 890ms, 348MiB

0.7368, 363ms, 286MiB

0.7223, 171ms, 1171 MiB

62

2,000

gisette

0.9725, 215ms, 584MiB

0.89416, 446ms, 397MiB

0.9792, 911ms, 234MiB

6,000

5,000

avazu

0.8834, N/A, N/A

N/A, N/A, N/A

N/A, N/A, N/A

40,428,967

1,000,000

rcv1

0.9644, 557ms, 241MiB

0.7333, 401ms, 281MiB

0.9615, 752ms, 284MiB

20,242

47,236

news20.binary

0.9208, 707ms, 361MiB

0.6870, 565ms, 371MiB

0.9070, 904ms, 364MiB

19,996

1,355,191

real-sim

0.9681, 433ms, 274MiB

0.7969, 251ms, 274MiB

0.9591, 643ms, 367MiB

72,309

20,958

五、训练结果

.........

[Minibatch: 263138/ Epoch: 18795/ t: 0.101 s] Loss: 0.099
[Minibatch: 263140/ Epoch: 18795/ t: 0.105 s] Loss: 0.098
[Minibatch: 263142/ Epoch: 18795/ t: 0.107 s] Loss: 0.101
[Minibatch: 263144/ Epoch: 18796/ t: 0.101 s] Loss: 0.094
[Minibatch: 263146/ Epoch: 18796/ t: 0.103 s] Loss: 0.097
Pipeline Score:  0.9786167231971685
因为官方只用了前20个特征,所以准确率高很多也是正常的~

Neural Network Intelligence (NNI) | 自动特征工程AutoFE示例程序相关推荐

  1. Neural Network Intelligence (NNI) | PyTorch-CiFar10 项目示例+常用pytorch版本模型全家福

    一.环境 NNI version: 2.1 Python version: 3.8.3 Pytorch version: 1.6.0 二.代码 1.main.py '''Train CIFAR10 w ...

  2. 自动特征工程、NAS、超参调优和模型压缩,微软开源的NNI一库搞定!

    点击我爱计算机视觉标星,更快获取CVML新技术 2018年9月,微软亚洲研究院发布了第一版 NNI (Neural Network Intelligence) ,目前已在 GitHub 上获得 3.8 ...

  3. 自动特征工程在推荐系统中的研究

    在先荐推荐系统学院 | 第1期的分享中,第四范式资深研究员罗远飞针对推荐系统中的高维稀疏数据,介绍了如何在指数级搜索空间中,高效地自动生成特征和选择算法:以及如何结合大规模分布式机器学习系统,在显著降 ...

  4. 特征工程与自动特征工程

    目录 1. 什么是特征工程 2. 什么是自动特征工程 2.1 自动方法有哪些 3. 文献说明 4.参考文献 1. 什么是特征工程 特征工程,是指用一系列工程化的方式从原始数据中提取出更好的数据特征,以 ...

  5. 罗远飞:自动特征工程在推荐系统中的研究

    第四范式资深研究员罗远飞针对推荐系统中的高维稀疏数据,介绍了如何在指数级搜索空间中,高效地自动生成特征和选择算法:以及如何结合大规模分布式机器学习系统,在显著降低计算.存储和通信代价的情况下,从数据中 ...

  6. 手把手教你用Python实现自动特征工程

    任何参与过机器学习比赛的人,都能深深体会特征工程在构建机器学习模型中的重要性,它决定了你在比赛排行榜中的位置. 特征工程具有强大的潜力,但是手动操作是个缓慢且艰巨的过程.Prateek Joshi,是 ...

  7. Auto ML自动特征工程

    Auto ML自动特征工程 特征工程是在做机器学习训练的过程中必不可少的环节,特征工程就是找出对模型结果有益的特征交叉关系,通常特征工程需要耗费算法工程师大量的精力去尝试.针对这样的场景,PAI推出智 ...

  8. 手动特征工程已经OUT了!自动特征工程才是改进机器学习的方式

    作者 | William Koehrsen 译者 | linstancy 编辑 | Jane 出品 | AI科技大本营 [导读]近年来,我们在自动模型选择和超参数调优方面取得了进展,但机器学习流程中最 ...

  9. 基于Python的自动特征工程——教你如何自动创建机器学习特征

    作者 | William Koehrsen 译者 | 王天宇 编辑 | Jane 出品 | AI科技大本营 [导读]如今机器学习正在从人工设计模型更多地转移到自动优化工作流中,如 H20.TPOT 和 ...

最新文章

  1. Open***+AD+Google authenticator 安装、配置
  2. java axis2小实例_java webservice axis2简单开发实例
  3. 一文弄懂什么是Istio
  4. 区块链矿池(pool)汇总(不定期更新,欢迎评论区留言)
  5. swagger如何屏蔽某些接口,不对外公开--使用@ApiIgnore
  6. monkeytest方法-20171113
  7. 如何把RAR文件改成ZIP格式
  8. python二手房课程设计_基于python爬取链家二手房信息代码示例
  9. 经纬财富:开封如何炒现货白银
  10. centos8修改主机名称
  11. Heterogeneous Treatment Effect
  12. Web用户控件开发--分页控件
  13. Vite 使用TSX/JSX
  14. 百度paddlepaddle入门讲解第一周内容
  15. 使用redis实现缓存_用下一个js实现一个简单的redis缓存
  16. 好嗨游戏:LPL春季赛决赛在即,黑8传奇JDG迎战S8冠军IG
  17. ubuntu安装与卸载搜狗输入法
  18. mysql_connect()不支持解决方法
  19. Android 4.1 (Jelly Bean) 源码编译过程总结
  20. 免费的档案管理系统介绍

热门文章

  1. ResNet家族:ResNet、ResNeXt、SE Net、SE ResNeXt
  2. 安卓应用程序配置文件存放位置
  3. Vue3+ElementPlus 表格分页组件封装
  4. 数字图像处理:什么是数字图像(一)
  5. 一个初级运维工程师对于运维工作的一些浅显认知
  6. html图片背景属性,css 背景(background)属性、背景图定位
  7. js如何实现拆分字符串并依次输出
  8. STM32 AT24C64 Hal库写入错误
  9. java GUI实现用户管理系统
  10. 第三方微信+支付宝个人免签支付源码