list - 运行代码时出现以下错误 - TypeError: must be real number, not list
问题描述
这就是问题 :
您将获得一个列表列表,每个子列表的长度为 2 即 [[x,y],[p,q],[l,m]..[r,s]] 将其视为 n 的矩阵行和两列 a. 第一列 Y 将包含整数值 b。第二列将具有浮点值您的任务是找到 (,)=−1∗1Σℎ,(10()+(1−)10(1−)) 的值,这里 n 是矩阵中的行数例如:[[1, 0.4], [0, 0.5], [0, 0.9], [0, 0.3], [0, 0.6], [1, 0.1], [1, 0.9], [1, 0.8] ] 输出:0.4243099 -18⋅((1⋅10(0.4)+0⋅10(0.6))+(0⋅10(0.5)+1⋅10(0.5))+...+(1⋅10(0.8) )+0⋅10(0.2)))
我的代码 -
def compute_log_loss(A):
Y = len(A)
Ys = len(A[0])
l = 0
for i in range(Y):
for j in range(Ys):
l += A[i]*math.log10(A[j]) + (1-A[i])*math.log10(1-A[j])
loss=(-1*l)/Y
print(loss)
A = [[1, 0.4], [0, 0.5], [0, 0.9], [0, 0.3], [0, 0.6], [1, 0.1], [1, 0.9], [1, 0.8]]
compute_log_loss(A)```
Im getting the following error :
TypeError Traceback (most recent call last)
<ipython-input-97-bd3b5244f95b> in <module>
17 print(loss)
18 A = [[1, 0.4], [0, 0.5], [0, 0.9], [0, 0.3], [0, 0.6], [1, 0.1], [1, 0.9], [1, 0.8]]
---> 19 compute_log_loss(A)
<ipython-input-97-bd3b5244f95b> in compute_log_loss(A)
13 for i in range(Y):
14 for j in range(Ys):
---> 15 l += A[i]*math.log10(A[j]) + (1-A[i])*math.log10(1-A[j])
16 loss=(-1*l)/Y
17 print(loss)
TypeError: must be real number, not list
解决方案
A[i] is a list not an single element.
A = [[1, 0.4], [0, 0.5], [0, 0.9], [0, 0.3], [0, 0.6], [1, 0.1], [1, 0.9], [1, 0.8]]
A[0] =[1, 0.4]
A[0][0] =1
A[0][1] =0.4
推荐阅读
- r - Blogdown 新帖子插件创建但不加载新文件
- php - 如何从 sql 查询 PHP 创建一个三维数组
- sql - 如何创建修改 Groups 表的 ALTER TABLE 语句,因此每行中的组名必须是唯一的
- sql-server - 如何创建一个接受参数并包含循环的函数
- sql - 从前一天凌晨 4 点到当天凌晨 3:59 提取数据的 SQL 代码
- vue.js - VueJS / Tailwind 中的动态类 + 变量
- powershell - 如何从 CSV 列表中选择 [n] 个项目以将它们分配给变量,然后删除这些项目并使用 PowerShell 保存文件
- c - 在C中读取由空格分隔的字符和整数
- javascript - 如何在 JIRA 问题收集器中自动包含 URL?
- c++ - 我需要得到一个从 a 到 b 范围内的随机数,小数点后 n 位