交互式机器学习:再次让Python变得“活泼”

当使用交互式widget时,笔记本(notebook)就会活跃起来。用户可以可视化和控制数据和模型中的变化。学习变成一种沉浸式的、有趣的体验。

你已经在Jupyter上编写了代码,它是一个无处不在的笔记本平台,用于编写和测试几乎所有主要的编程语言。你喜欢它,并且经常使用它。

但是你想要更多的控制,你想要在鼠标的简单滑动中改变变量,而不是通过写入for循环来改变。你应该做什么呢? 你可以使用IPython widget。

Python widget是什么?

Jupyter于2014年在IPython项目中诞生,并迅速发展,以支持所有主要编程语言的交互数据科学和科学计算。毫无疑问,它已经对数据科学家如何快速地测试和原型化他们的想法并将其展示给同行和开源社区产生了最大的影响。

然而,当用户能够交互式地控制模型的参数并查看实时的效果时,学习和试验数据就会变得真正的沉浸在其中。Jupyter中的大多数常见呈现都是静态的。然而,名为ipywidgets的元素在Jupyter notebook上展示了有趣的和交互式的控件。

Widget是在浏览器中有一个表示形式的重要的python对象,通常是通过前端(HTML/java)呈现通道的控件,比如滑动条、文本框等等。

之前的文章演示了使用基本的widget控件进行简单的曲线拟合练习。请阅读这篇文章,了解有关安装这个widget包的说明。在本文中将进一步扩展到交互机器学习技术领域。

  • 之前的文章:https://towardsdatascience.com/a-very-simple-demo-of-interactive-controls-on-jupyter-notebook-4429cf46aabd

交互式线性回归

我们用交互控制元素来演示单变量的简单线性回归。注意,这个想法可以很容易地扩展到复杂的多变量、非线性的、基于核的回归。但是,为了简化可视化,我们在演示中只使用单个变量。

在我的Github库中,可以使用boiler plate代码。

  • Github库地址:https://github.com/tirthajyoti/Widgets

我们在两个阶段展示了交互性。首先,我们将数据生成过程作为输入变量和相关噪声的统计属性的函数。下面是这个过程的视频,用户可以使用简单的滑块控件动态地生成和绘制非线性函数。

  • 视频:http://imgcdn.atyun.com/2017/12/videoplayback-2.mp4?_=1

在这里,生成函数,又称“参考标准”(ground truth),它是一个四次多项式,噪声来自于高斯分布。接下来,我们将使用scikit-learn的多项式特性生成和pipeline方法来编写线性回归函数。一个机器学习pipeline流程的详细说明(参照:https://towardsdatascience.com/machine-learning-with-python-easy-and-robust-method-to-fit-nonlinear-data-19e8a1ddbd49)。在这里,我们将整个函数封装在另一个交互式控件widget中,以便能够动态地更改线性模型的各种参数。

我们为下面的超参数引入交互控制。

  • 模型复杂性(多项式级)
  • 正则化类型——LASSO或Ridge
  • 测试集的大小(测试中使用的总样本数据的一小部分)

下面的视频展示了用户与线性回归模型的交互。请注意,测试和训练分数如何动态更新,以显示在模型复杂性变化时,过度拟合或不适应的趋势。我们可以回到数据生成控制,并增加降低噪声的大小,以观察其对拟合质量和偏差/方差的影响。

  • 视频地址:http://imgcdn.atyun.com/2017/12/videopwdsWAlayback.mp4?_=2

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-12-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

工具 | Python 和 R 数据分析/挖掘工具互查

在此总结一些在数据分析/挖掘中可能用到的功能,方便大家索引或者从一种语言迁移到另一种。如果大家已经熟悉python和R的模块/包载入方式,那下面的表查找起来相对...

1837
来自专栏企鹅号快讯

如何对机器学习代码进行单元测试?

作者|Chase Roberts 译者|庄道玉 编辑|Emily 目前,关于神经网络代码,并没有一个特别完善的单元测试的在线教程。甚至像 OpenAI 这样的站...

21210
来自专栏BestSDK

Python 开发者提高效率的 10 个方法

Python有很多吸引程序员的功能 ,它易学,面向对象,字节码编译,免费且开源。还有运行时检查。完整快速的支持,可以执行各种任务的扩展。 高效的Python 在...

3399
来自专栏诸葛青云的专栏

C语言学到什么程度可以做项目?

都说编程学习是一个漫长的过程,会的东西越多,感觉懂的越少。要达到可以做项目的状态还是需要下些功夫的。但你非得说没有时间限制,懂一点点你就可以去做项目了。前提是你...

40
来自专栏web前端教室

js、jq的基础看的差不多了,接下来我该干嘛?

(昨天喝多了,断更一天,各位抱歉哈) 这个问题,是我们共进会里一个成员提出的,大四,计算机专业,记得他有些JAVA经历,感觉算是半个后端转前端吧。他学习还是很努...

1956
来自专栏AI科技大本营的专栏

10行代码实现目标检测,请收下这份教程

作为人工智能的一个重要领域,计算机视觉是一门可以识别并理解图像和场景的计算机及软件系统科学。该领域主要包括图像识别,目标检测,图像生成,图像超分辨率等多个方向。...

641
来自专栏计算机视觉与深度学习基础

【深度学习】使用tensorflow实现VGG19网络

转载注明出处:http://blog.csdn.net/accepthjp/article/details/70170217 接上一篇AlexNet,本文讲...

3819
来自专栏企鹅号快讯

输验证码输到崩溃?教你15分钟黑掉全球最流行的验证码插件

大数据文摘作品 编译:Katrine Ren、朝夕、钱天培 验证码这种东西真的是反人类。虽然它在保证账号安全、反作弊以及反广告有着至关重要的作用,但对于普通用户...

2098
来自专栏Python小屋

Python使用扩展库numpy计算矩阵加权平均值

本文介绍Python扩展库numpy的函数average()的用法。 >>> import numpy as np # 创建二维矩阵 >>> x = np.ma...

2635
来自专栏ATYUN订阅号

验证码,再见!利用机器学习在15分钟内破解验证码

每个人都讨厌验证码——只有输入了那些讨厌的图片上的文本,才能访问网站。验证码的设计是为了防止计算机自动填写表格,验证你是一个真实的“人”。但随着深度学习和计算机...

4185

扫描关注云+社区