首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 为何选择机器学习
1.1.1 机器学习能够解决的问题
1.1.2 熟悉任务和数据
1.2 为何选择Python
1.3 scikit-learn
1.4 必要的库和工具
1.4.1 Jupyter Notebook
1.4.2 NumPy
1.4.3 SciPy
1.4.4 matplotlib
1.4.5 pandas
1.4.6 mglearn
1.5 Python 2 与Python 3 的对比
1.7 第 一个应用:鸢尾花分类
1.7.1 初识数据
1.7.2 衡量模型是否成功:训练数据与测试数据
1.7.3 要事第 一:观察数据
1.7.4 构建第 一个模型:k 近邻算法
1.7.5 做出预测
1.7.6 评估模型
2.1 分类与回归
2.2 泛化、过拟合与欠拟合
2.3 监督学习算法
2.3.1 一些样本数据集
2.3.2 k 近邻
2.3.3 线性模型
2.3.4 朴素贝叶斯分类器
2.3.5 决策树
2.3.6 决策树集成
2.3.7 核支持向量机
2.3.8 神经网络(深度学习)
2.4 分类器的不确定度估计
2.4.1 决策函数
2.4.2 预测概率
2.4.3 多分类问题的不确定度
3.1 无监督学习的类型
3.2 无监督学习的挑战
3.3 预处理与缩放
3.3.1 不同类型的预处理
3.3.2 应用数据变换
3.3.3 对训练数据和测试数据进行相同的缩放
3.3.4 预处理对监督学习的作用
3.4 降维、特征提取与流形学习
3.4.1 主成分分析
3.4.2 非负矩阵分解
3.4.3 用t-SNE 进行流形学习
3.5 聚类
3.5.1 k 均值聚类
3.5.2 凝聚聚类
3.5.3 DBSCAN
3.5.4 聚类算法的对比与评估
3.5.5 聚类方法小结
当前位置:
首页>>
技术小册>>
Python机器学习基础教程(上)
小册名称:Python机器学习基础教程(上)
### 1.7.3 要事第一:观察数据 在Python机器学习的旅程中,数据的观察与分析是任何项目启动之初不可或缺的关键步骤。正如古语所云,“工欲善其事,必先利其器”,而在机器学习领域,这“器”便是数据本身。因此,本章“要事第一:观察数据”旨在深入探讨如何在项目初期,通过一系列有效的方法和工具,对数据集进行全面而细致的观察,为后续的数据预处理、特征选择、模型构建及评估奠定坚实的基础。 #### 1.7.3.1 引言:为何观察数据至关重要 在机器学习项目中,数据是驱动模型学习的核心动力。然而,并非所有收集到的数据都能直接用于模型训练。数据中可能隐藏着噪声、缺失值、异常点以及不一致的格式等问题,这些问题如果不加以处理,将会严重影响模型的性能和准确性。因此,对数据进行初步的观察和分析,是识别并解决这些问题的重要前提。 观察数据不仅能帮助我们发现数据中的基本规律、分布特性及潜在关系,还能为后续的数据清洗、特征工程提供宝贵的线索和依据。通过这一过程,我们可以更好地理解数据的内在结构,为选择合适的机器学习算法和参数调整提供有力支持。 #### 1.7.3.2 数据加载与概览 ##### 1.7.3.2.1 数据加载 在Python中,我们可以使用多种库来加载数据,其中最常用的是Pandas。Pandas是一个强大的数据处理库,它提供了易于使用的数据结构(如DataFrame和Series)和数据分析工具。通过Pandas,我们可以轻松地从CSV、Excel、数据库等多种数据源中加载数据。 ```python import pandas as pd # 假设数据集名为data.csv data = pd.read_csv('data.csv') print(data.head()) # 显示前几行数据,快速了解数据结构 ``` ##### 1.7.3.2.2 数据概览 加载数据后,第一步是进行数据概览,以获取数据的整体印象。这包括查看数据的基本信息(如数据类型、缺失值情况、数据范围等)和统计摘要(如均值、中位数、标准差等)。 ```python # 查看数据的基本信息 print(data.info()) # 计算数值型特征的统计摘要 print(data.describe()) ``` 此外,我们还可以使用可视化工具(如Matplotlib、Seaborn等)来绘制数据的直方图、箱线图、散点图等,以直观展示数据的分布特性和异常点。 ```python import matplotlib.pyplot as plt import seaborn as sns # 绘制直方图 plt.hist(data['feature_name'], bins=30) plt.title('Histogram of Feature Name') plt.xlabel('Value') plt.ylabel('Frequency') plt.show() # 绘制箱线图识别异常值 sns.boxplot(x='feature_name', data=data) plt.title('Boxplot of Feature Name') plt.show() ``` #### 1.7.3.3 数据探索性分析 探索性数据分析(EDA)是观察数据过程中的重要环节,它旨在通过统计方法和图形展示,深入挖掘数据中的模式和关系。EDA不仅限于简单的数据概览,更包括对数据的深入剖析和假设验证。 ##### 1.7.3.3.1 相关性分析 相关性分析是理解特征之间关系的重要方法。通过计算特征之间的相关系数(如皮尔逊相关系数、斯皮尔曼等级相关系数等),我们可以评估特征之间的线性或非线性关系强度。 ```python # 计算相关系数矩阵 corr_matrix = data.corr() print(corr_matrix) # 可视化相关系数矩阵 sns.heatmap(corr_matrix, annot=True, cmap='coolwarm') plt.title('Correlation Matrix') plt.show() ``` ##### 1.7.3.3.2 分布分析 分布分析是理解单个特征如何在其值域内分布的关键步骤。通过绘制直方图、密度图等,我们可以评估数据的偏态、峰度等统计特性,进而为数据转换(如对数变换、标准化等)提供依据。 ##### 1.7.3.3.3 缺失值处理 缺失值是数据中的常见问题,它们可能对模型训练产生不利影响。在观察数据时,我们需要识别缺失值的数量、分布模式以及可能的原因,并据此选择合适的缺失值处理策略(如删除、填充等)。 ```python # 检查缺失值 missing_values = data.isnull().sum() print(missing_values) # 填充缺失值(以均值填充为例) data.fillna(data.mean(), inplace=True) ``` ##### 1.7.3.3.4 异常值检测与处理 异常值(或称为离群点)是那些与其他数据点显著不同的观测值。它们可能是测量错误、数据录入错误或真实但极端的情况。在观察数据时,我们需要识别并评估异常值的影响,必要时进行清洗或转换。 ```python # 使用IQR(四分位距)方法检测异常值 Q1 = data['feature_name'].quantile(0.25) Q3 = data['feature_name'].quantile(0.75) IQR = Q3 - Q1 lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR # 筛选异常值 outliers = data[(data['feature_name'] < lower_bound) | (data['feature_name'] > upper_bound)] print(outliers) # 处理异常值(如删除或替换) # 这里仅作为示例,实际处理需根据具体情况决定 data = data[(data['feature_name'] >= lower_bound) & (data['feature_name'] <= upper_bound)] ``` #### 1.7.3.4 结论与展望 通过对数据的细致观察和深入分析,我们不仅能够揭示数据中的隐藏模式和关系,还能为后续的数据预处理和模型构建提供宝贵的指导。然而,观察数据只是机器学习项目中的一个环节,它需要与数据清洗、特征工程、模型选择、参数调优、性能评估等多个步骤紧密结合,才能最终构建出高效、准确的机器学习模型。 在未来的学习和实践中,建议读者不断积累数据处理和分析的经验,掌握更多先进的数据可视化和EDA技巧,以更好地应对复杂多变的数据挑战。同时,也要保持对新技术和新方法的关注和学习,以不断提升自己的机器学习技能和应用能力。
上一篇:
1.7.2 衡量模型是否成功:训练数据与测试数据
下一篇:
1.7.4 构建第 一个模型:k 近邻算法
该分类下的相关小册推荐:
Python编程轻松进阶(五)
Python数据分析与挖掘实战(上)
Python合辑2-字符串常用方法
Python合辑14-面向对象编程案例(下)
Python编程轻松进阶(四)
Python合辑4-130个字符串操作示例
Python与办公-玩转PPT
剑指Python(磨刀不误砍柴工)
Python合辑3-字符串用法深度总结
Python合辑6-字典专题
实战Python网络爬虫
Python合辑1-Python语言基础