教你在Python中用Scikit生成测试数据集(附代码、学习资料)

简介:

测试数据集是一个小型的人工数据集,它可以让你测试机器学习算法或其它测试工具。

测试数据集的数据具有定义明确的性质,如线性或非线性,这允许您探索特定的算法行为。

scikit-learn Python库提供了一组函数,用于从结构化的测试问题中生成样本,用于进行回归和分类。

在本教程中,您将发现测试问题以及如何在Python中使用scikit学习。

完成本教程后,您将知道:

  • 如何生成多分类预测问题
  • 如何生成二分类预测问题
  • 如何生成线性回归预测测试问题

让我们开始吧

教程概述

本教程分为三个部分,分别是:

  • 测试数据集
  • 分类测试问题
  • 回归测试的问题

测试数据集

开发和实现机器学习算法遇到的问题是,您如何知道是否正确地实现了机器学习算法。

即使存在bug有些算法还是能执行。

测试数据集是一个较小的人为设计问题,它允许您测试和调试算法和测试工具。

它们还能帮助更好地理解算法的行为,以及超参数是如何在相应算法的执行过程进行改变的。

下面是测试数据集的一些理想属性:

它们可以快速且容易地生成。

它们包含“已知”或“理解”的结果与预测相比较。

它们是随机的,每次生成时都允许对同一个问题进行随机变量的变化。

它们很小,可以很容易在两个维度中进行可视化。

它们也可以被简单地放大。

我建议在开始使用新的机器学习算法或开发新的测试工具时使用测试数据集。

scikit-learn是一个用于机器学习的Python库,它提供了生成一系列测试问题的功能。

在本教程中,我们将介绍一些为分类和回归算法生成测试问题的例子。

分类测试问题

分类是把标签分配给观测样本的问题。

在这一节中,我们将讨论三种分类问题:斑点、月亮和圆圈。

  • 斑点分类问题

make_blob()函数可用于生成高斯分布的点。

您可以控制生成多少个斑点,以及生成的样本数量,以及其他一些属性。

如果这些斑点有线性可分的性质,那么这个问题适用于线性分类问题。

下面的例子生成一个带有三类斑点的二维数据集,作为一个多类分类预测问题。

每个观察都有两个输入和0、1或2个类值。

1b96104dfdc64bc326fe06066e57855dd7075e82

完整代码如下

f787e9690b3d66453ec514e477c480d811cf83db

运行这个示例会生成问题的输入和输出,然后创建一个方便的2D绘图,用不同的颜色显示不同的类。

注意,由于问题生成器的随机特性,您的特定数据集和结果图将会有所不同。

这是一个特性,而不是一个bug。

928748e48ed41c40e1186fbb59097868d875543b

测试分类问题的散点图


我们将在下面的示例中使用这个相同的示例结构。

  • 卫星分类问题

make_moons()函数是用于二分类问题的的,它将生成像漩涡一样,或者像月亮形状一样的数据集。

你可以控制月亮的形状和产生的样本数量。

这个测试问题适用于能够学习非线性类边界的算法。

下面的例子产生了一个带有中等噪声的月球数据集。

2ad5a0e8eddad77020d3ae0941cb4c8d07f3d8be

完整的代码如下

0c61f1f1062e34429019be6caed2bd65dc2aab9a

运行该示例将生成并绘制用于检查的数据集,再次为其指定的类着色。

7d3ab05c448943b7d0b26085a477a93f0dcf76ad

卫星测试分类问题散的点图

  • 圈分类问题

make_circles()函数会产生一个二分类问题,这个问题会出现在一个同心圆中。

再一次,就像卫星测试的问题一样,你可以控制形状中噪音的大小。

该测试问题适用于能够学习复杂非线性曲线的算法。

下面的示例生成一个带有一些噪声的圆形数据集。

4209c2a763a010b27b1389de99ebd24c695b65db

完整的代码如下

133c78798efdc875d276328e355d5bb0130f17f8


运行该示例将生成并绘制用于检查的数据集。

b61343020d02f48487f043414da8433003d86764

圆试验分类问题的散点问题

回归测试的问题

回归是预测某个观测量的问题。

make_regression()函数将创建一个带有输入和输出之间线性关系的数据集。

您可以配置示例的数量、输入特性的数量、噪声级别,等等。

这个数据集适用于能够学习线性回归函数的算法。

下面的示例将生成100个示例,其中包含一个输入特性和一个输出特性,它的噪声很低。

034b5224052f7ebe7143373b473c768b42401f8e

完整的代码如下。

f6f5074b899bca298f59ab572c9f0edbd9cf9d7e

运行该示例将生成数据,并绘制X和y关系图,由于该关系是线性的,因此非常无趣。

112c6365c1b0bb98408bc549e45ad99e39ce209f

回归测试问题的散点图

延伸

本节列出了一些扩展您可能希望探索的教程的想法。

比较算法

选择一个测试问题,并对问题的算法进行比较,并报告性能。

扩大的问题

选择一个测试问题,并探索扩大它的规模,使用改进的方法来可视化结果,或者探索给定的算法的模型技巧和问题深度。

额外的问题

这个库提供了一系列额外的测试问题;

为每个人编写一个代码示例来演示它们是如何工作的。

如果您探究这些扩展的任何一个,我很想知道。

进一步的阅读

如果您希望深入研究,本节将提供更多关于主题的参考资料。

  • 学习用户指南:数据集加载实用程序(http://scikit-learn.org/stable/datasets/index.html)
  • scikit-learn API:sklearn - 数据集(http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets)

总结

在本教程中,您发现了测试问题,以及如何在Python中使用scikit库。

具体来说,你学会了:

  • 如何生成多分类预测问题
  • 如何生成二分类预测问题
  • 如何生成线性回归预测测试问题

原文发布时间为:2018-01-30
本文作者:Jason Brownlee
本文来自云栖社区合作伙伴“ 数据派THU”,了解相关信息可以关注“ 数据派THU”微信公众号
相关文章
|
4天前
|
存储 JSON API
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。
|
4天前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
13天前
|
存储 API 数据安全/隐私保护
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
51 6
|
13天前
|
C语言 Python
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
|
20天前
|
存储 算法 API
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
137 82
|
21天前
|
Python
python pandas学习(一)
该代码段展示了四个主要操作:1) 删除指定列名,如商品id;2) 使用正则表达式模糊匹配并删除列,例如匹配订单商品名称1的列;3) 将毫秒级时间戳转换为带有时区调整的日期时间格式,并增加8小时以适应本地时区;4) 将列表转换为DataFrame后保存为Excel文件,文件路径和名称根据变量拼接而成。
24 3
|
2月前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
3月前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。
|
3月前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
419 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
3月前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。

热门文章

最新文章

推荐镜像

更多