在构建机器学习模型之前,您需要将数据加载到内存中。
在本帖中,您将了解如何使用 Scikit-Learn 在 Python 中加载机器学习数据。
通过我的新书《Python 机器学习精通》快速启动您的项目,其中包含分步教程和所有示例的Python 源代码文件。
让我们开始吧。
- 2018年3月更新:添加了替代链接以下载数据集,因为原始链接似乎已被删除。

加载 CSV 数据
照片来源:Jim Makos,保留部分权利
打包数据集
Scikit-Learn 库附带了数据集。这些数据集对于在您自己的工作中学习某个机器学习算法或库功能很有用。
本示例演示了如何加载著名的 鸢尾花数据集。
1 2 3 4 |
# 加载打包的鸢尾花数据集 # 鸢尾花数据集(4x150,实数,多标签分类) iris = load_iris() print(iris) |
从 CSV 加载
在本地工作站或远程服务器上,数据集通常以 CSV 文件形式存在。
本示例向您展示了如何从 URL 加载 CSV 文件,在此情况下为 Pima 印第安人糖尿病分类数据集。
你可以在此处了解更多关于此数据集的信息:
您可以从准备好的 X 和 y 变量训练机器学习模型。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 从 CSV URL 加载 Pima 印第安人糖尿病数据集 import numpy as np import urllib # Pima 印第安人糖尿病数据集的 URL(UCI 机器学习存储库) url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" # 下载文件 raw_data = urllib.urlopen(url) # 将 CSV 文件加载为 numpy 矩阵 dataset = np.loadtxt(raw_data, delimiter=",") print(dataset.shape) # 将数据与目标属性分开 X = dataset[:,0:7] y = dataset[:,8] |
总结
在本帖中,您了解了 Scikit-Learn 方法附带了包括鸢尾花数据集在内的打包数据集。这些数据集可以轻松加载,并用于探索和试验不同的机器学习模型。
您还了解了如何使用 Scikit-Learn 加载 CSV 数据。您学习了一种使用 urllib 库从网络打开 CSV 文件的方法,以及如何将这些数据读取为 NumPy 矩阵以供 Scikit-Learn 使用。
很高兴看到如何从 URL 加载数据。您有如何实际加载文本文件的示例吗?
我认为有一个小错误。
当代码将特征分隔到 X 数组时,它缺少第 8 个特征。
所以第十二行应该是:X = dataset[:,0:8]
这样,它将包含数据集中的最后一个特征,就在目标之前。
您好,谢谢。请注意,对于 Python 3*,应该是“import urllib.request”,然后是“raw_data = urllib.request.urlopen(url)”,而对于 Python 2*,应该是“import urllib2”,然后是“raw_data = urllib2.urlopen(url)”。
我正在准备一个用于 Scikit-Learn 的文件,我想知道如何构建这个文件,我有我的实例、特征和类别。我不确定如何制作 Scikit-Learn 加载的文件。您能澄清一下吗?
我也不知道。您现在知道如何构建 Scikit-Learn 的文件了吗?… 我真的很需要您的帮助…
很棒的博客!非常感谢,非常有帮助
谢谢。
您好,先生,我是数据科学的新手,我读了您写的书,比如《机器学习精通》、《从零开始的机器学习算法》和《机器学习算法大师》。我读完了这些书,下一步我需要遵循什么?请指导我。
也许可以专注于开发一个包含已完成项目的作品集
https://machinelearning.org.cn/build-a-machine-learning-portfolio/
很高兴收到您的回复,先生,非常感谢
先生,您能否为初学者推荐一些 Python 数据科学项目?
是的,请看这里
https://machinelearning.org.cn/practice-machine-learning-with-small-in-memory-datasets-from-the-uci-machine-learning-repository/
谢谢您,先生。非常有帮助。
不客气。
非常感谢您,先生
亲爱的 Jason,
很棒的博文,谢谢!但是,Tarik 的评论(见上文)似乎是正确的。因为我应用了您的代码,所以我可能犯了一个错误。检查此操作的输出确实是好的。不知何故,当您像这样指定数组时:
X = dataset[:,0:8] 最后一个列实际上不包含在结果数组中!所以它实际上是从 0-7(这正是您想要的!)。如果您写 X = dataset[:,0:7],那么您就缺少了第 8 列!下一行是正确的 y = dataset[:,8],这是第 9 列!
请考虑编辑代码。
祝好
Yuliyan
我相信代码是正确的。范围 0:8 选择列 0 到 7(在 8 之前停止)。通过打印结果进行确认。
您可以在这里了解更多关于切片和范围的信息
https://machinelearning.org.cn/index-slice-reshape-numpy-arrays-machine-learning-python/
有没有什么方法可以不用 URL 来学习这些鸢尾花数据集的教程?我理想情况下想将它换成本地自定义数据集来更好地理解代码,任何帮助都将不胜感激。
是的,您可以将数据集下载到您的工作站,然后以相同的方式加载本地文件。
另外,这可能会有帮助
https://machinelearning.org.cn/load-machine-learning-data-python/