1. NumPy 数组的创建
简单创建
NumPy 数组是一个由相同类型元素组成的多维网格。你可以使用numpy.array()
函数,通过传入 Python 列表来创建数组。
import numpy as np
# 创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print("一维数组:", arr1)
# 创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:\n", arr2)
简单来说,就像是把一个个数字或者一组组数字规整地放进一个容器里,一维数组就是一列数字,二维数组就像是一个表格。
随机创建
NumPy 提供了许多函数用于创建随机数组,比如np.random.rand()
可以创建指定形状的随机数组,数组元素是在[0, 1)
区间内均匀分布的随机数。
import numpy as np
# 创建一个形状为 (2, 3) 的随机数组
rand_arr = np.random.rand(2, 3)
print("随机数组:\n", rand_arr)
这就好比是你让计算机随机抓一些数字放到你指定大小的容器里。
遍历
遍历数组就是依次访问数组中的每个元素。对于一维数组,你可以使用简单的for
循环;对于多维数组,你可能需要嵌套的for
循环。
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 遍历二维数组
for row in arr:
for element in row:
print(element)
这就像是你按照一定的顺序一个一个地去查看容器里的每个东西。
运算
NumPy 数组支持各种数学运算,这些运算会对数组中的每个元素进行操作。
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# 加法运算
result = arr1 + arr2
print("加法结果:", result)
这就像是把两个容器里对应位置的东西进行相加,得到一个新的容器。
2. NumPy 数组的索引
一维数组索引
一维数组的索引就像 Python 列表的索引一样,索引从 0 开始。
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print("第一个元素:", arr[0])
print("最后一个元素:", arr[-1])
你可以把一维数组想象成一排座位,索引就是座位的编号,通过编号就能找到对应的人(元素)。
二维数组索引
二维数组有行和列,你需要同时指定行索引和列索引来访问元素。
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("第一行第二列的元素:", arr[0, 1])
可以把二维数组看作是一个教室的座位表,行索引就是排数,列索引就是座位号,通过排数和座位号就能确定具体的座位(元素)。
三维数组索引
三维数组可以想象成多个二维数组堆叠在一起,你需要指定三个索引:层数、行索引和列索引。
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print("第一层第一行第二列的元素:", arr[0, 0, 1])
就像是有好几栋教学楼,每栋教学楼有很多教室,每个教室有很多座位,你需要通过楼号、教室号和座位号才能确定具体的位置(元素)。
3. SHAP 值的深入理解
SHAP(SHapley Additive exPlanations)值是一种用于解释机器学习模型预测结果的方法。它基于博弈论中的 Shapley 值概念。
在机器学习中,每个特征对于模型的预测结果都有一定的贡献。SHAP 值的作用就是量化每个特征对于最终预测结果的贡献大小。
例如,你有一个预测房价的模型,模型会根据房屋的面积、卧室数量、位置等特征来预测房价。SHAP 值可以告诉你每个特征(如面积、卧室数量等)对最终预测房价的影响有多大。
SHAP 值有正有负,正的 SHAP 值表示该特征增加了模型的预测值,负的 SHAP 值表示该特征降低了模型的预测值。通过计算和分析 SHAP 值,你可以更好地理解模型是如何做出预测的,哪些特征对预测结果影响较大,从而提高模型的可解释性。
简单来说,SHAP 值就像是一个 “功劳簿”,记录了每个特征在模型预测中所起到的作用。
@浙大疏锦行