- 使用 Python 进行机器学习
- 家
- 基本
- Python生态系统
- 机器学习方法
- ML 项目的数据加载
- 通过统计了解数据
- 通过可视化了解数据
- 准备数据
- 数据特征选择
- 机器学习算法 - 分类
- 介绍
- 逻辑回归
- 支持向量机(SVM)
- 决策树
- 朴素贝叶斯
- 随机森林
- 机器学习算法 - 回归
- 随机森林
- 线性回归
- 机器学习算法 - 聚类
- 概述
- K均值算法
- 均值平移算法
- 层次聚类
- ML 算法 - KNN 算法
- 寻找最近的邻居
- 性能指标
- 自动工作流程
- 提高机器学习模型的性能
- 提高 ML 模型的性能(续……)
- 使用 Python 进行机器学习 - 资源
- 使用 Python 进行机器学习 - 快速指南
- 使用 Python 进行机器学习 - 资源
- 使用 Python 进行机器学习 - 讨论
ML 项目的数据加载
假设如果您想启动一个机器学习项目,那么您需要的第一个也是最重要的东西是什么?这是我们启动任何 ML 项目所需加载的数据。就数据而言,ML 项目最常见的数据格式是 CSV(逗号分隔值)。
基本上,CSV 是一种简单的文件格式,用于存储表格数据(数字和文本),例如纯文本的电子表格。在Python中,我们可以通过不同的方式加载CSV数据,但在加载CSV数据之前我们必须注意一些注意事项。
加载 CSV 数据时的注意事项
CSV 数据格式是 ML 数据最常见的格式,但在将其加载到 ML 项目中时,我们需要注意以下主要考虑因素 -
文件头
在 CSV 数据文件中,标题包含每个字段的信息。我们必须对头文件和数据文件使用相同的分隔符,因为头文件指定如何解释数据字段。
以下是与 CSV 文件头相关的两种情况,必须考虑 -
情况一:当数据文件有文件头时- 如果数据文件有文件头,它将自动为每列数据分配名称。
情况二:当数据文件没有文件头时- 如果数据文件没有文件头,我们需要手动为每列数据分配名称。
在这两种情况下,我们都必须明确指定 CSV 文件是否包含标头。
评论
任何数据文件中的注释都有其重要性。在 CSV 数据文件中,注释由行开头的井号 (#) 表示。在将 CSV 数据加载到 ML 项目时,我们需要考虑注释,因为如果文件中有注释,那么我们可能需要指出是否需要这些注释,具体取决于我们选择的加载方法。
分隔符
在 CSV 数据文件中,逗号 (,) 字符是标准分隔符。分隔符的作用是分隔字段中的值。将 CSV 文件上传到 ML 项目时,考虑分隔符的作用非常重要,因为我们还可以使用不同的分隔符,例如制表符或空格。但在使用与标准分隔符不同的分隔符的情况下,我们必须明确指定它。
引号
在 CSV 数据文件中,双引号 (“ ”) 标记是默认的引号字符。将 CSV 文件上传到 ML 项目时考虑引号的作用很重要,因为我们还可以使用双引号以外的其他引号字符。但如果使用与标准引号不同的引号字符,我们必须明确指定它。
加载 CSV 数据文件的方法
在处理 ML 项目时,最关键的任务是将数据正确加载到其中。ML 项目最常见的数据格式是 CSV,它有多种风格,解析难度也各不相同。在本节中,我们将讨论 Python 中加载 CSV 数据文件的三种常见方法 -
使用 Python 标准库加载 CSV
加载 CSV 数据文件的第一个也是最常用的方法是使用 Python 标准库,它为我们提供了各种内置模块,即csv 模块和 reader() 函数。以下是在它的帮助下加载 CSV 数据文件的示例 -
例子
在此示例中,我们使用鸢尾花数据集,可以将其下载到本地目录中。加载数据文件后,我们可以将其转换为NumPy数组并将其用于 ML 项目。以下是用于加载 CSV 数据文件的 Python 脚本 -
首先,我们需要导入Python标准库提供的csv模块,如下 -
import csv
接下来,我们需要导入 Numpy 模块,将加载的数据转换为 NumPy 数组。
import numpy as np
现在,提供文件的完整路径,存储在我们的本地目录中,包含 CSV 数据文件 -
path = r"c:\iris.csv"
接下来,使用 csv.reader() 函数从 CSV 文件读取数据 -
with open(path,'r') as f: reader = csv.reader(f,delimiter = ',') headers = next(reader) data = list(reader) data = np.array(data).astype(float)
我们可以使用以下脚本行打印标题的名称 -
print(headers)
以下脚本行将打印数据的形状,即文件中的行数和列数 -
print(data.shape)
下一个脚本行将给出数据文件的前三行 -
print(data[:3])
输出
['sepal_length', 'sepal_width', 'petal_length', 'petal_width'] (150, 4) [ [5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2] ]
使用 NumPy 加载 CSV
加载 CSV 数据文件的另一种方法是 NumPy 和 numpy.loadtxt() 函数。以下是在它的帮助下加载 CSV 数据文件的示例 -
例子
在此示例中,我们使用包含糖尿病患者数据的皮马印第安人数据集。该数据集是没有标题的数字数据集。也可以下载到我们的本地目录中。加载数据文件后,我们可以将其转换为 NumPy 数组并将其用于 ML 项目。以下是用于加载 CSV 数据文件的 Python 脚本 -
from numpy import loadtxt path = r"C:\pima-indians-diabetes.csv" datapath= open(path, 'r') data = loadtxt(datapath, delimiter=",") print(data.shape) print(data[:3])
输出
(768, 9) [ [ 6. 148. 72. 35. 0. 33.6 0.627 50. 1.] [ 1. 85. 66. 29. 0. 26.6 0.351 31. 0.] [ 8. 183. 64. 0. 0. 23.3 0.672 32. 1.] ]
使用 Pandas 加载 CSV
加载 CSV 数据文件的另一种方法是通过Pandas和pandas.read_csv()function。这是一个非常灵活的函数,它返回一个pandas.DataFrame,可以立即用于绘图。以下是在它的帮助下加载 CSV 数据文件的示例 -
例子
在这里,我们将实现两个 Python 脚本,第一个是具有标题的 Iris 数据集,另一个是使用 Pima Indians 数据集,这是一个没有标题的数字数据集。这两个数据集都可以下载到本地目录中。
脚本-1
以下是使用 Pandas on Iris 数据集加载 CSV 数据文件的 Python 脚本 -
from pandas import read_csv path = r"C:\iris.csv" data = read_csv(path) print(data.shape) print(data[:3]) Output: (150, 4) sepal_length sepal_width petal_length petal_width 0 5.1 3.5 1.4 0.2 1 4.9 3.0 1.4 0.2 2 4.7 3.2 1.3 0.2
脚本2
以下是用于加载 CSV 数据文件的 Python 脚本,还提供了标题名称,使用 Pandas on Pima Indians Diabetes 数据集 -
from pandas import read_csv path = r"C:\pima-indians-diabetes.csv" headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = read_csv(path, names=headernames) print(data.shape) print(data[:3])
输出
(768, 9) preg plas pres skin test mass pedi age class 0 6 148 72 35 0 33.6 0.627 50 1 1 1 85 66 29 0 26.6 0.351 31 0 2 8 183 64 0 0 23.3 0.672 32 1
借助给定的示例,可以轻松理解上述三种加载 CSV 数据文件的方法之间的区别。