如何在遍历两个范围时固定其一,计算theta与X的hypothesis值?
遍历实现方案
首先明确你要实现的是特征维度优先的遍历逻辑:先遍历theta的每个特征分量,再遍历所有样本计算该特征对应的乘积项,最后累加到对应样本的hypothesis结果中。
基础循环实现
- 先确认数组维度:theta为长度等于特征数的一维数组,X为「样本数×特征数」的二维数组,hypothesis为长度等于样本数的一维数组,初始值全为0。
- 外层循环遍历特征维度,内层循环遍历所有样本,代码如下:
# 初始化hypothesis hypothesis = [0] * len(X) # 外层遍历theta的每个特征分量j for j in range(len(theta)): # 内层遍历所有样本i for i in range(len(X)): hypothesis[i] += theta[j] * X[i][j]
原代码错误说明
你之前写的嵌套循环存在两处核心问题:
- 循环范围使用
range(i)、range(j),调用了未初始化的循环变量作为范围参数,运行会直接报错 - 索引对应关系错误,
theta[i] * X[j][i]的取值逻辑和你要的遍历顺序不匹配
简化实现(可选)
如果使用numpy做数值计算,可以直接调用点积接口实现,无需手写循环:
import numpy as np hypothesis = np.dot(X, theta)
内容的提问来源于stack exchange,提问作者Nabil
相关产品推荐
相关产品推荐

