首页
技术小册
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.4.2 NumPy:Python机器学习的基石 在深入探讨Python机器学习之前,掌握NumPy这一强大的科学计算库是至关重要的。NumPy(Numerical Python的简称)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。对于机器学习项目而言,NumPy几乎是不可或缺的,因为它极大地简化了数据预处理、特征工程以及模型训练过程中的数学运算。本节将详细介绍NumPy的基本概念、数组操作、数学函数以及如何在机器学习项目中高效利用NumPy。 #### 1.4.2.1 NumPy基础概念 **数组(Array)**:NumPy的核心数据结构是ndarray(N-dimensional array),即N维数组。与Python原生列表(list)相比,ndarray在存储效率和性能上有显著提升,尤其是在处理大型数据集时。ndarray中的元素类型必须一致,这保证了操作的统一性和高效性。 **数据类型(Data Types)**:NumPy支持多种数据类型,如整型(int)、浮点型(float)、复数型(complex)等。在创建ndarray时,可以指定数据类型,以优化内存使用和计算速度。 **形状(Shape)**:ndarray的形状是一个元组,表示各维度上元素的数量。例如,形状为(3, 4)的二维数组表示有3行4列。 #### 1.4.2.2 数组创建 NumPy提供了多种创建数组的方法,包括但不限于以下几种: - **`numpy.array()`**:从常规Python列表、元组等创建数组。 - **`numpy.zeros()`**:创建指定形状和类型,元素全为0的数组。 - **`numpy.ones()`**:创建指定形状和类型,元素全为1的数组。 - **`numpy.full()`**:创建指定形状、类型和填充值的数组。 - **`numpy.arange()`**:根据起始值、结束值和步长创建一维数组。 - **`numpy.linspace()`**:在指定的间隔内返回均匀间隔的数字。 - **`numpy.random.rand()`**、**`numpy.random.randn()`**等:生成随机数组。 #### 1.4.2.3 数组操作 NumPy提供了丰富的数组操作方法,使得数据处理变得简单高效。 - **索引与切片**:类似于Python列表,但支持多维索引和切片。 - **广播(Broadcasting)**:是NumPy中用于处理不同形状数组之间运算的强大机制。当进行算术运算时,NumPy会尝试自动扩展较小数组的形状,以便与较大数组的形状相匹配。 - **数组重塑(Reshape)**:不改变数组元素,仅改变其形状。 - **数组转置(Transpose)**:交换数组的轴。 - **数组拼接与分割**:使用`numpy.concatenate()`、`numpy.vstack()`、`numpy.hstack()`等函数拼接数组,使用`numpy.split()`、`numpy.hsplit()`、`numpy.vsplit()`等函数分割数组。 #### 1.4.2.4 数学函数 NumPy提供了大量的数学函数,支持数组中的元素级运算。 - **基本数学运算**:如加法(+)、减法(-)、乘法(*)、除法(/)、幂运算(**)等。 - **聚合函数**:如`numpy.sum()`(求和)、`numpy.mean()`(均值)、`numpy.std()`(标准差)、`numpy.max()`(最大值)、`numpy.min()`(最小值)等,这些函数可以沿着指定轴进行运算。 - **三角函数**:如`numpy.sin()`、`numpy.cos()`、`numpy.tan()`等。 - **逻辑函数**:如`numpy.logical_and()`、`numpy.logical_or()`、`numpy.logical_not()`等,用于数组元素间的逻辑运算。 - **矩阵运算**:NumPy也支持基本的矩阵运算,如`numpy.dot()`用于矩阵乘法,`numpy.linalg.inv()`用于求逆矩阵等。 #### 1.4.2.5 NumPy在机器学习中的应用 在机器学习中,NumPy的应用无处不在。以下是几个典型场景: 1. **数据预处理**:使用NumPy进行数据的清洗、转换、归一化等操作,为模型训练准备高质量的数据集。 2. **特征工程**:构建新特征、选择重要特征、进行特征缩放等,NumPy提供了高效的数据操作能力。 3. **模型训练**:虽然高级库如scikit-learn、TensorFlow等封装了更复杂的机器学习算法,但在这些算法内部,NumPy仍然扮演着基础计算的角色。 4. **性能优化**:利用NumPy的向量化操作,可以显著提高数据处理和计算的速度,减少代码量,提高可读性。 #### 1.4.2.6 实战演练 以下是一个简单的实战示例,展示如何使用NumPy进行数据处理和简单的数学运算。 ```python import numpy as np # 创建一个一维数组 arr_1d = np.array([1, 2, 3, 4, 5]) # 创建一个二维数组 arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 数组运算 result_add = arr_2d + 10 # 元素级加法 result_mean = np.mean(arr_2d, axis=0) # 沿着第0轴(列)计算均值 # 索引与切片 first_row = arr_2d[0, :] # 获取第一行 # 数组重塑 arr_reshaped = arr_2d.reshape((1, 9)) # 将3x3的二维数组重塑为1x9的二维数组 # 广播 arr_broadcast = arr_1d + arr_2d # 这里会触发广播机制,尝试匹配两个数组的形状 print("加法结果:", result_add) print("均值结果:", result_mean) print("第一行:", first_row) print("重塑后数组:", arr_reshaped) # 注意:arr_broadcast 的打印结果取决于NumPy的广播规则,可能不是直观的形状 ``` #### 结语 NumPy作为Python机器学习的基石,其重要性不言而喻。掌握NumPy的基本概念和操作方法,不仅能够提升数据处理和数学计算的效率,还能为后续的机器学习项目打下坚实的基础。通过不断实践和探索,你将能更深入地理解NumPy的强大功能,并在实际项目中灵活运用。
上一篇:
1.4.1 Jupyter Notebook
下一篇:
1.4.3 SciPy
该分类下的相关小册推荐:
Python合辑3-字符串用法深度总结
Python机器学习实战
Python机器学习基础教程(下)
Python合辑9-判断和循环
剑指Python(磨刀不误砍柴工)
Python合辑7-集合、列表与元组
Python爬虫入门与实战开发(下)
Python与办公-玩转PDF
Python高并发编程与实战
Python合辑11-闭包函数
Python合辑2-字符串常用方法
Python自动化办公实战