- 机器学习基础
- ML - 首页
- ML - 简介
- ML - 快速入门
- ML - 基本概念
- ML - 生态系统
- ML - Python库
- ML - 应用
- ML - 生命周期
- ML - 必备技能
- ML - 实现
- ML - 挑战与常见问题
- ML - 局限性
- ML - 真实案例
- ML - 数据结构
- ML - 数学基础
- ML - 人工智能
- ML - 神经网络
- ML - 深度学习
- ML - 获取数据集
- ML - 类别数据
- ML - 数据加载
- ML - 数据理解
- ML - 数据准备
- ML - 模型
- ML - 监督学习
- ML - 无监督学习
- ML - 半监督学习
- ML - 强化学习
- ML - 监督学习 vs. 无监督学习
- 机器学习数据可视化
- ML - 数据可视化
- ML - 直方图
- ML - 密度图
- ML - 箱线图
- ML - 相关矩阵图
- ML - 散点矩阵图
- 机器学习统计学
- ML - 统计学
- ML - 均值、中位数、众数
- ML - 标准差
- ML - 百分位数
- ML - 数据分布
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假设
- 机器学习中的回归分析
- ML - 回归分析
- ML - 线性回归
- ML - 简单线性回归
- ML - 多元线性回归
- ML - 多项式回归
- 机器学习中的分类算法
- ML - 分类算法
- ML - 逻辑回归
- ML - K近邻算法 (KNN)
- ML - 朴素贝叶斯算法
- ML - 决策树算法
- ML - 支持向量机
- ML - 随机森林
- ML - 混淆矩阵
- ML - 随机梯度下降
- 机器学习中的聚类算法
- ML - 聚类算法
- ML - 基于质心的聚类
- ML - K均值聚类
- ML - K中心点聚类
- ML - 均值漂移聚类
- ML - 层次聚类
- ML - 基于密度的聚类
- ML - DBSCAN聚类
- ML - OPTICS聚类
- ML - HDBSCAN聚类
- ML - BIRCH聚类
- ML - 亲和传播
- ML - 基于分布的聚类
- ML - 凝聚层次聚类
- 机器学习中的降维
- ML - 降维
- ML - 特征选择
- ML - 特征提取
- ML - 向后剔除法
- ML - 向前特征构建
- ML - 高相关性过滤器
- ML - 低方差过滤器
- ML - 缺失值比率
- ML - 主成分分析
- 强化学习
- ML - 强化学习算法
- ML - 利用与探索
- ML - Q学习
- ML - REINFORCE算法
- ML - SARSA强化学习
- ML - 演员-评论家方法
- 深度强化学习
- ML - 深度强化学习
- 量子机器学习
- ML - 量子机器学习
- ML - 使用Python的量子机器学习
- 机器学习杂项
- ML - 性能指标
- ML - 自动化工作流程
- ML - 提升模型性能
- ML - 梯度提升
- ML - 自举汇聚 (Bagging)
- ML - 交叉验证
- ML - AUC-ROC曲线
- ML - 网格搜索
- ML - 数据缩放
- ML - 训练与测试
- ML - 关联规则
- ML - Apriori算法
- ML - 高斯判别分析
- ML - 成本函数
- ML - 贝叶斯定理
- ML - 精确率和召回率
- ML - 对抗性
- ML - 堆叠
- ML - 轮次
- ML - 感知器
- ML - 正则化
- ML - 过拟合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 数据泄露
- ML - 机器学习的商业化
- ML - 数据类型
- 机器学习 - 资源
- ML - 快速指南
- ML - 速查表
- ML - 面试问题
- ML - 有用资源
- ML - 讨论
机器学习 - 数据加载
假设您想启动一个机器学习项目,那么首先也是最重要的事情是什么?对于任何机器学习项目,都需要加载数据。
在机器学习中,数据加载是指从外部来源导入或读取数据,并将其转换为机器学习算法可以使用的格式的过程。然后对数据进行预处理,以去除任何不一致之处、缺失值或异常值。数据预处理完成后,将其分成训练集和测试集,然后用于模型训练和评估。
数据可以来自各种来源,例如CSV文件、数据库、Web API、云存储等。机器学习项目最常用的文件格式是CSV(逗号分隔值)。
加载CSV数据时的注意事项
CSV是一种纯文本格式,用于存储表格数据,其中每一行代表一条记录,每一列代表一个字段或属性。它被广泛使用,因为它简单、轻量级,并且可以很容易地被Python、R和Java等编程语言读取和处理。
在Python中,我们可以通过不同的方式将CSV数据加载到机器学习项目中,但在加载CSV数据之前,我们必须注意一些事项。
在本章中,让我们了解CSV文件的主要组成部分,它们如何影响数据的加载和分析,以及在将CSV数据加载到机器学习项目中之前,我们应该注意的一些事项。
文件头
这是CSV文件的首行,通常包含表中各列的名称。将CSV数据加载到机器学习项目时,文件头(也称为列标题或变量名)在数据分析和模型训练中可以发挥重要作用。以下是一些关于文件头的注意事项:
一致性 - 文件头在整个CSV文件中应保持一致。这意味着每一行的列数及其名称都应相同。不一致会导致解析和分析问题。
有意义的名称 - 列名应具有意义且描述性。这有助于理解数据并构建更准确的模型。避免使用“column1”、“column2”等通用名称。
大小写敏感性 - 根据用于加载CSV文件的工具或库的不同,列名可能区分大小写。务必确保文件头的字母大小写与所用工具或库的预期大小写敏感性匹配。
特殊字符 - 列名不应包含任何特殊字符,例如空格、逗号或引号。这些字符会导致解析和分析问题。应改用下划线或驼峰式命名法来分隔单词。
缺失文件头 - 如果CSV文件没有文件头行,则必须手动指定列名或提供包含列名的单独文件或文档。
编码 - 文件头的编码会影响加载CSV文件时对它的解释。务必确保文件头的编码与用于读取文件的工具或库兼容。
注释
这些是可选的行,以指定的字符(例如“#”或“//”)开头,大多数读取CSV文件的程序都会忽略这些行。它们可用于提供有关文件数据的附加信息或上下文。
CSV文件中的注释通常不用于表示机器学习项目中将使用的文件数据。但是,如果CSV文件中存在注释,则必须考虑它们如何影响数据的加载和分析。以下是一些注意事项:
注释标记 - 在CSV文件中,可以使用特定标记(例如“#”或“//”)来指示注释。必须知道使用了什么标记,以便加载过程能够正确忽略注释。
位置 - 注释应放在与实际数据分开的行中。如果注释与实际数据位于同一行,则可能会导致解析和分析问题。
一致性 - 如果在CSV文件中使用注释,则必须确保在整个文件中始终如一地使用注释标记。不一致会导致解析和分析问题。
处理注释 - 根据用于加载CSV文件的工具或库的不同,注释可能会默认被忽略,或者可能需要设置特定参数。必须了解所用工具或库如何处理注释。
对分析的影响 - 如果注释包含有关数据的重要信息,则可能需要将它们与数据本身分开处理。这可能会增加加载和分析过程的复杂性。
分隔符
这是用于分隔每一行中字段的字符。虽然名称暗示使用逗号作为分隔符,但根据文件,也可以使用制表符、分号或竖线等其他字符。
CSV文件中使用的分隔符会显著影响机器学习模型的准确性和性能,因此在将数据加载到机器学习项目中时,必须考虑以下事项:
分隔符的选择 - CSV文件中使用的分隔符应根据所使用的数据仔细选择。例如,如果数据在值中包含逗号(例如“New York, NY”),则使用逗号作为分隔符可能会导致问题。
在这种情况下,制表符或分号等其他分隔符可能更合适。
一致性 - CSV文件中使用的分隔符应在整个文件中保持一致。混合使用不同的分隔符或不一致地使用空格会导致错误,并使准确解析数据变得困难。
编码 − 分隔符还会受到 CSV 文件编码的影响。例如,如果 CSV 文件使用非 ASCII 分隔符并以 UTF-8 编码,则某些机器学习库或工具可能无法正确读取它。务必确保编码和分隔符与所使用的机器学习工具兼容。
其他考虑因素 − 在某些情况下,可能需要根据所使用的机器学习工具自定义分隔符。例如,某些库可能需要特定分隔符,或者可能不支持某些分隔符。务必检查所用机器学习工具的文档,并根据需要自定义分隔符。
引号
这些是可选字符,可用于括起包含分隔符字符或换行符的字段。例如,如果某个字段包含逗号,则将其用引号括起来可确保将逗号视为字段的一部分,而不是分隔符。将 CSV 数据加载到 ML 项目中时,需要考虑以下几个关于引号用法的因素:
引号字符 − CSV 文件中使用的引号字符应在整个文件中保持一致。最常用的引号字符是双引号 ("),但有些文件可能使用单引号或其他字符。务必确保使用的引号字符与用于读取 CSV 文件的工具或库一致。
带引号的值 − 在某些情况下,CSV 文件中的值可能用引号括起来,以将其与其他值区分开来。例如,如果某个字段包含逗号,则可能将其用引号括起来,以防止将其解释为新字段。将数据加载到 ML 项目中时,务必确保正确处理带引号的值。
转义引号 − 如果某个字段包含用于括起值的引号字符,则必须对其进行转义。这通常通过重复引号字符来完成。例如,如果引号字符是双引号 ("),并且某个字段包含值 "John "the Hammer" Smith",则应将其用引号括起来,并将内部引号转义,如下所示:"John ""the Hammer"" Smith"。
引号的使用 − CSV 文件中引号的使用可能因用于生成文件的工具或库而异。某些工具可能会在每个字段周围使用引号,而其他工具可能仅在包含特殊字符的字段周围使用引号。务必确保引号的使用与用于读取文件的工具或库一致。
编码 − 引号的使用也可能受到 CSV 文件编码的影响。如果文件以非标准方式编码,则在将数据加载到 ML 项目中时可能会导致问题。务必确保 CSV 文件的编码与用于读取文件的工具或库兼容。
加载 CSV 数据文件的各种方法
在使用 ML 项目时,最关键的任务是将数据正确加载到其中。如前所述,ML 项目最常用的数据格式是 CSV,它具有各种形式,解析难度也各不相同。
在本节中,我们将讨论在 Python 中将 CSV 数据文件加载到机器学习项目中的一些常用方法:
使用 CSV 模块
这是 Python 中的一个内置模块,它提供读取和写入 CSV 文件的功能。您可以使用它将 CSV 文件读取到列表或字典对象中。以下是 Python 中的实现示例:
import csv with open('mydata.csv', 'r') as file: reader = csv.reader(file) for row in reader: print(row)
此代码读取名为 mydata.csv 的 CSV 文件,并打印文件中的每一行。
使用 Pandas 库
这是 Python 中一个流行的数据操作库,它提供了一个 read_csv() 函数,用于将 CSV 文件读取到 pandas DataFrame 对象中。这是一种非常方便的加载数据和执行各种数据操作任务的方法。以下是 Python 中的实现示例:
import pandas as pd data = pd.read_csv('mydata.csv')
此代码读取名为 mydata.csv 的 CSV 文件,并将其加载到名为 data 的 pandas DataFrame 对象中。
使用 Numpy 库
这是 Python 中的一个数值计算库,它提供了一个 genfromtxt() 函数,用于将 CSV 文件加载到 numpy 数组中。以下是 Python 中的实现示例:
import numpy as np data = np.genfromtxt('mydata.csv', delimiter=',')
此代码读取名为 mydata.csv 的 CSV 文件,并将其加载到名为“data”的 numpy 数组中。
使用 Scipy 库
这是 Python 中的一个科学计算库,它提供了一个 loadtxt() 函数,用于将文本文件(包括 CSV 文件)加载到 numpy 数组中。以下是 Python 中的实现示例:
import numpy as np from scipy import loadtxt data = loadtxt('mydata.csv', delimiter=',')
此代码读取名为 mydata.csv 的 CSV 文件,并将其加载到名为“data”的 numpy 数组中。
使用 Sklearn 库
这是 Python 中一个流行的机器学习库,它提供了一个 load_iris() 函数,用于加载 iris 数据集,这是一个常用的分类任务数据集。以下是 Python 中的实现示例:
from sklearn.datasets import load_iris data = load_iris().data
此代码加载包含在 sklearn 库中的 iris 数据集,并将其加载到名为 data 的 numpy 数组中。