如何在Python中加载机器学习数据
在开始机器学习项目之前,你必须能够加载数据。
机器学习数据最常用的格式是CSV文件。在Python中加载CSV文件有多种方法。
在这篇文章中,你将发现在Python中加载机器学习数据的不同方法。
我们开始吧。
加载CSV数据时的注意事项
从CSV文件加载机器学习数据时有许多注意事项。
作为参考,你可以通过查看标题为逗号分隔值(CSV)文件的通用格式和MIME类型的CSV请求注释来了解有关CSV文件期望的更多信息。
CSV文件头
你的数据有文件头吗?
如果是这样的话,这有助于自动为每列数据指定名称。如果不是,你可能需要手动命名属性。
无论采用哪种方法,你都应该显式指定在加载数据时CSV文件是否有文件头。
注释
你的数据有注释吗?
CSV文件中的注释由行首的散列(“#”)表示。
如果文件中有注释,具体取决于用于加载数据的方法,则可能需要指示是否需要注释以及期望表示注释行的字符。
分隔符
分隔字段中的值的标准分隔符是逗号(“,”)字符。
你的文件可以使用不同的分隔符,如制表符(“\t”),在这种情况下,你必须显式指定它。
引用
有时字段值可以包含空格。在这些CSV文件中,值通常用引号引起来。
默认引号字符是双引号“\” ”。可以使用其他字符,并且你必须指定文件中使用的引号字符。
机器学习数据加载方案
每个方案都是独立的。
这意味着你可以将其复制并粘贴到项目中并立即使用。
如果你对这些方案或改进建议有任何疑问,请留言,我会尽力回答。
使用Python标准库加载CSV
Python API提供可用于加载CSV文件的模块CSV和函数读取器()。
加载后,将CSV数据转换为NumPy数组并将其用于机器学习。
例如,你可以将Pima Indians数据集下载到你的本地目录(从此处下载)。
所有字段都是数字,并且没有标题行。运行下面的配方将加载CSV文件并将其转换为NumPy数组。
# Load CSV (using python) import csv import numpy filename = 'pima-indians-diabetes.data.csv' raw_data = open(filename, 'rt') reader = csv.reader(raw_data, delimiter=',', quoting=csv.QUOTE_NONE) x = list(reader) data = numpy.array(x).astype('float') print(data.shape)
该示例加载一个对象,该对象可以遍历数据的每一行,并且可以很容易地转换为NumPy数组。运行该示例将打印数组的形状。
(768, 9)
有关csv.read()函数的详细信息,请参见Python API文档中的CSV文件读取和写入。
使用NumPy加载CSV文件
你可以使用NumPy和numpy.loadtxt()函数加载CSV数据。
此函数假定没有标题行,并且所有数据都具有相同的格式。下面的示例假设文件pia-Indians-diabetes.data.csv在你的当前工作目录中。
# Load CSV import numpy filename = 'pima-indians-diabetes.data.csv' raw_data = open(filename, 'rt') data = numpy.loadtxt(raw_data, delimiter=",") print(data.shape)
运行该示例将以numpy.ndarray形式加载文件,并打印数据的形状:
(768, 9)
可以修改此示例以直接从URL加载相同的数据集,如下所示:
注意:此示例假设你使用的是Python3。
# Load CSV from URL using NumPy from numpy import loadtxt from urllib.request import urlopen url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv' raw_data = urlopen(url) dataset = loadtxt(raw_data, delimiter=",") print(dataset.shape)
同样,运行该示例将生成相同的数据结果形状。
(768, 9)
有关numpy.loadtxt()函数的更多信息,请参阅API文档(numpy的1.10版)。
使用Pandas加载CSV文件
你可以使用Pandas和pandas.read_csv()函数加载CSV数据。
该函数非常灵活,可能是我推荐的加载机器学习数据的方法。该函数返回一个pandas.DataFrame,你可以立即开始汇总和绘制。
下面的示例假设‘pia-Indians-diabetes.data.csv’文件位于当前工作目录中。
# Load CSV using Pandas import pandas filename = 'pima-indians-diabetes.data.csv' names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = pandas.read_csv(filename, names=names) print(data.shape)
请注意,在本例中,我们将每个属性的名称显式指定给DataFrame。运行该示例将显示数据的形状:
(768, 9)
我们还可以修改此示例,以直接从URL加载CSV数据。
# Load CSV using Pandas from URL import pandas url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = pandas.read_csv(url, names=names) print(data.shape)
同样,运行该示例将下载CSV文件,对其进行分析并显示加载的DataFrame的形状。
(768, 9)
要了解有关pandas.read_csv()函数的更多信息,可以参考API文档。
摘要
在这篇文章中,你了解了如何在Python中加载机器学习数据。
你学习了三种可以使用的特定技术:
- 使用Python标准库加载CSV。
- 使用NumPy加载CSV文件。
- 使用Pandas加载CSV文件。
这篇文章的操作步骤是键入或复制粘贴每个方法,并熟悉在Python中加载机器学习数据的不同方式。