python - 在没有任何库的情况下将此公式转换为原始 python
问题描述
logloss=−1∗1nΣforeachYt,Ypred(Ytlog10(Ypred)+(1−Yt)log10(1−Ypred))
如何在没有任何库的情况下用原始 python 编写这个公式?
我的代码:
def logloss(y_true,y_pred):
loss=0
for i,j in range (len(y_true),len(y_pred)):
loss+=((y_true[i],y_pred[j]*(y_true(math.log10(y_pred[j]))+((1-y_true[i])*math.log10(1-y_pred[j])))
loss=-1*(1/len(y_true))*loss
return loss
错误:语法无效。
解决方案
您只是缺少一些括号,请尝试以下操作:
import math
def logloss(y_true, y_pred):
loss = 0
for i, j in range(len(y_true), len(y_pred)):
loss += ((y_true[i], y_pred[j] * (y_true(math.log10(y_pred[j])) + (
(1 - y_true[i]) * math.log10(1 - y_pred[j])))))
loss = -1 * (1 / len(y_true)) * loss
return loss
我建议您将这条长线分开,使其更具可读性并更容易发现问题。
另外,我相信您真正想要的功能是(假设y_pred
并且y_true
具有相同的长度,如果从 ML 的角度来看 IIUC,他们应该这样做):
import math
def logloss(y_true, y_pred):
loss = 0
for i in range(len(y_true)):
loss += y_true[i] * math.log10(y_pred[i]) + \
(1-y_true[i]) * math.log10(1-y_pred[i])
loss = -1 * (1 / len(y_true)) * loss
return loss
我假设您这样做是为了进行一些机器学习,我建议您先学习更多 Python,然后再继续学习 NN 等繁重的主题。
推荐阅读
- php - PHP:if语句,为什么在添加return之前执行了else?
- javascript - 添加嵌入式谷歌地图时console.log中的警告
- python - 格式化列中的时间戳 - Pandas
- javascript - Jquery 根据单选按钮和选择选项显示和隐藏 div
- java - 两个片段不应该直接通信
- ios - 为什么我的新 swift 文件缺少代码?
- npm - 使用 sapper 在 Svelte 项目中配置输出目录
- azure-service-fabric - Azure Service Fabric 无状态 Web API + API 管理 + B2C 身份验证教程
- java - 如何将用户定义的(动态)数据输入到数组中?
- r - 根据数据更改 geom_point 颜色 (R)