当前位置:  首页>> 技术小册>> Python机器学习基础教程(上)

1.7.1 初识数据

在Python机器学习的基础旅程中,数据无疑是整个探索过程的起点与核心。无论是构建预测模型、进行模式识别还是执行数据驱动的决策,都离不开对数据的深入理解与操作。本章“初识数据”旨在为读者奠定坚实的数据认知基础,介绍数据的基本概念、数据获取的途径、数据预处理的重要性以及如何在Python中初步探索和分析数据。

1.7.1.1 数据的基本概念

数据的定义:数据是信息的载体,它以某种形式记录并可以被计算机识别和处理。在机器学习领域,数据通常指的是用于训练或测试机器学习模型的数值、文本、图像、音频等形式的原始资料。

数据类型

  • 结构化数据:遵循特定格式或模式的数据,如数据库中的表格数据,通常具有明确的行和列定义。
  • 非结构化数据:没有固定格式的数据,如文本文件、图像、音频和视频等。这类数据需要额外的处理才能被机器学习算法有效利用。
  • 半结构化数据:介于结构化与非结构化之间,如JSON或XML格式的数据,具有一定的内部结构但不如结构化数据那样严格。

数据维度

  • 一维数据:如时间序列数据,只在一个方向上有变化。
  • 二维数据:最常见的是表格数据,如Excel中的行和列。
  • 多维数据:如图像数据(二维像素阵列加颜色通道)或三维空间中的数据点。

1.7.1.2 数据获取

数据获取是机器学习项目的第一步,它决定了后续分析的质量和可能性。数据来源广泛,包括但不限于:

  • 公共数据集:许多机构和研究人员会公开他们的数据集供学习和研究使用,如UCI机器学习库、Kaggle数据集等。
  • API接口:许多网站和服务提供API接口,允许开发者通过编程方式获取数据,如天气数据、股票价格等。
  • 网络爬虫:利用Python的爬虫库(如Scrapy、BeautifulSoup)从网页中提取所需信息。
  • 内部数据库:企业内部的数据库系统,如MySQL、MongoDB等,存储着大量的业务数据。
  • 生成数据:在特定场景下,可以通过模拟或算法生成符合需求的数据集。

1.7.1.3 数据预处理

数据预处理是机器学习项目中至关重要的一个环节,它直接影响模型的性能。预处理的主要步骤包括:

  • 数据清洗:处理缺失值(如填充、删除)、异常值(如基于统计方法识别并处理)、重复数据等。
  • 数据集成:将来自不同源的数据合并到一个统一的数据集中,解决数据不一致性和冗余问题。
  • 数据转换:将数据转换成适合模型训练的形式,如特征缩放(标准化、归一化)、编码分类变量(独热编码、标签编码)、文本数据向量化等。
  • 数据规约:通过聚合、降维等技术减少数据量,提高计算效率,同时尽可能保留重要信息。

1.7.1.4 Python中初步探索数据

在Python中,有多种强大的库可以帮助我们进行数据的探索与分析,其中最常用的是Pandas和NumPy。

Pandas
Pandas是一个开源的Python数据分析库,提供了快速、灵活和富有表达力的数据结构,旨在使“关系”或“标签”数据的处理工作变得既简单又直观。Pandas的两个核心数据结构是Series(一维数组)和DataFrame(二维表格型数据结构)。

  • 读取数据:Pandas支持多种文件格式的数据读取,如CSV、Excel、JSON等。
    1. import pandas as pd
    2. df = pd.read_csv('data.csv')
  • 数据探索:通过.head(), .tail(), .info(), .describe()等方法快速了解数据的基本信息。
    1. print(df.head()) # 查看前几行数据
    2. print(df.info()) # 查看数据概况
    3. print(df.describe()) # 数值型数据的统计描述
  • 数据筛选与过滤:利用条件表达式、布尔索引等方法筛选数据。
    1. filtered_df = df[df['column'] > 10]

NumPy
NumPy是Python的一个库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。它是Pandas等数据分析库的基础。

  • 创建数组
    1. import numpy as np
    2. arr = np.array([1, 2, 3, 4, 5])
  • 基本运算:NumPy支持向量化运算,极大提高了计算效率。
    1. result = arr + 5 # 对数组中的每个元素加5
  • 数组统计:提供了一系列统计函数,如mean(), std(), min(), max()等。
    1. print(np.mean(arr)) # 计算平均值

1.7.1.5 实战演练:数据探索案例分析

假设我们有一份关于某电商平台用户购买行为的数据集,包含用户ID、购买商品ID、购买时间、购买数量等信息。以下是一个简单的数据探索流程示例:

  1. 读取数据

    1. df = pd.read_csv('purchase_data.csv')
  2. 查看数据概况

    1. print(df.info()) # 查看数据框的每一列名称、非空数量、数据类型
    2. print(df.describe()) # 查看数值型特征的统计描述
  3. 数据清洗:假设发现数据中存在缺失值,我们可以选择删除含有缺失值的行或列,或者根据业务逻辑填充缺失值。

    1. df.dropna(inplace=True) # 删除含有缺失值的行
    2. # 或者
    3. df['purchase_quantity'].fillna(df['purchase_quantity'].mean(), inplace=True) # 用均值填充购买数量的缺失值
  4. 数据探索:分析购买数量的分布情况,或者探索不同时间段购买行为的差异。

    1. import matplotlib.pyplot as plt
    2. plt.hist(df['purchase_quantity'], bins=30) # 绘制购买数量的直方图
    3. plt.show()
    4. # 分析不同月份购买数量的变化
    5. df['purchase_month'] = df['purchase_time'].dt.month
    6. df.groupby('purchase_month')['purchase_quantity'].mean().plot(kind='bar') # 绘制月均购买数量的条形图
    7. plt.show()

通过以上步骤,我们不仅对数据集有了初步的了解,还学会了如何在Python中使用Pandas和Matplotlib等工具进行数据的读取、清洗和基本的探索性分析。这些技能是后续进行机器学习建模的重要基础。


该分类下的相关小册推荐: