高性能机器学习:Numpy

高性能机器学习:Numpy

机器学习强调测量预测能力,而使用 scikit-learn 我们可以准确、快速地进行预测。衡量预测能力主要依靠在训练数据上构建模型,在测试数据上衡量预测能力。

随着 scikit-learn 设计不断发展,它主要解决四类机器学习模型:

  • 分类
    • 非文本分类
    • 文本分类
  • 回归
  • 聚类
  • 降维

NumPy 基础

数据科学大部分依赖二维数据表,scikit-learn 的输入也是二维的 Numpy 数组。

Numpy 数组的形状与维度

>>> import numpy as np
>>>
>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> array_1 = np.arange(10)
>>> array_1.shape
(10,)
>>> array_1.ndim
1

np.arange 与 Python 内置的 range 是一样的,只是为了区分前置了 a,数组有一个属性 shape,可以看到 array_1shape(10,)shape 元组的长度与数组的维度 ndim 是相同的。

>>> array_1.reshape((5, 2))
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])
>>> array_1 = array_1.reshape((5, 2))
>>> array_1.ndim
2
>>>

想要改变数组的形状,可以调用 reshape 方法。

Numpy 广播

广播(broadcasting)指的是小数组向大数组进行延展或者广播。

>>> array_2 = np.arange(10)
>>> array_2 * array_2
array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81])
>>>

可以看出来,这里的运算不是基于矩阵逻辑,而是按照对位元素进行运算的。

>>> array_2 = array_2**2
>>> array_2 = array_2.reshape((5, 2))
>>> array_2
array([[ 0,  1],
       [ 4,  9],
       [16, 25],
       [36, 49],
       [64, 81]])
>>> array_2 + 3
array([[ 3,  4],
       [ 7, 12],
       [19, 28],
       [39, 52],
       [67, 84]])
>>>

3 是标量,作为较小的数组,它将进行广播机制的补齐,变成与 array_2 相同的形状,然后进行逐元素(element-wise)的运算。

初始化 Numpy 数组和数据类型

posted @ 2024-11-19 11:23  JPL-JUNO  阅读(12)  评论(0编辑  收藏  举报