{
  "id": 185071,
  "title": "How do you calculate image level log loss?",
  "url": "/competitions/rsna-str-pulmonary-embolism-detection/discussion/185071",
  "author_name": "patriot",
  "post_date": "2020-09-19T09:17:47.881000",
  "votes": 1,
  "comment_count": 0,
  "views": 0,
  "content": "<p>How do you calculate the image level log loss when checking the score for CV?</p>\n<p>`from sklearn.metrics import log_loss<br>\nfrom sklearn.preprocessing import LabelEncoder<br>\npred_df=xfolds<br>\nxfolds = train[['StudyInstanceUID', 'SeriesInstanceUID']].copy()<br>\nle = LabelEncoder()<br>\nx = le.fit_transform(xfolds['StudyInstanceUID'])<br>\nxfolds[\"a\"] = x</p>\n<p>pred_df[\"label\"]= train[\"pe_present_on_image\"].values<br>\ndef image_w_logloss(pred_df,pred):<br>\n    pred_df[\"pred\"]=pred<br>\n    loss = 0<br>\n    w = 0.07361963<br>\n    for i in range(pred_df[\"a\"].nunique()):<br>\n        patient= pred_df[pred_df[\"a\"]==i]<br>\n        q=patient[\"label\"].mean()<br>\n        if q==0:<br>\n            continue<br>\n        else:<br>\n            loss-=log_loss(patient[\"label\"].values,patient[\"pred\"].values)<em>q\n    return w</em>loss</p>\n<p>score=image_w_logloss(pred_df,train[\"pe_present_on_image\"].mean())<br>\nprint(score)#-26.39116417747282<br>\nscore=image_w_logloss(pred_df,0.5)<br>\nprint(score)#-20.52697273338017<br>\nscore=image_w_logloss(pred_df,train[\"negative_exam_for_pe\"].mean())<br>\nprint(score)#-27.042441721126238  `</p>\n<p>If I made mistakes, I would appreciate it if you could point them out.</p>",
  "messages": [
    {
      "id": 1017806,
      "postDate": "2020-09-19T09:17:47.880Z",
      "content": "<p>How do you calculate the image level log loss when checking the score for CV?</p>\n<p>`from sklearn.metrics import log_loss<br>\nfrom sklearn.preprocessing import LabelEncoder<br>\npred_df=xfolds<br>\nxfolds = train[['StudyInstanceUID', 'SeriesInstanceUID']].copy()<br>\nle = LabelEncoder()<br>\nx = le.fit_transform(xfolds['StudyInstanceUID'])<br>\nxfolds[\"a\"] = x</p>\n<p>pred_df[\"label\"]= train[\"pe_present_on_image\"].values<br>\ndef image_w_logloss(pred_df,pred):<br>\n    pred_df[\"pred\"]=pred<br>\n    loss = 0<br>\n    w = 0.07361963<br>\n    for i in range(pred_df[\"a\"].nunique()):<br>\n        patient= pred_df[pred_df[\"a\"]==i]<br>\n        q=patient[\"label\"].mean()<br>\n        if q==0:<br>\n            continue<br>\n        else:<br>\n            loss-=log_loss(patient[\"label\"].values,patient[\"pred\"].values)<em>q\n    return w</em>loss</p>\n<p>score=image_w_logloss(pred_df,train[\"pe_present_on_image\"].mean())<br>\nprint(score)#-26.39116417747282<br>\nscore=image_w_logloss(pred_df,0.5)<br>\nprint(score)#-20.52697273338017<br>\nscore=image_w_logloss(pred_df,train[\"negative_exam_for_pe\"].mean())<br>\nprint(score)#-27.042441721126238  `</p>\n<p>If I made mistakes, I would appreciate it if you could point them out.</p>",
      "rawMarkdown": "How do you calculate the image level log loss when checking the score for CV?\n\n\n`from sklearn.metrics import log_loss\nfrom sklearn.preprocessing import LabelEncoder\npred_df=xfolds\nxfolds = train[['StudyInstanceUID', 'SeriesInstanceUID']].copy()\nle = LabelEncoder()\nx = le.fit_transform(xfolds['StudyInstanceUID'])\nxfolds[\"a\"] = x\n\npred_df[\"label\"]= train[\"pe_present_on_image\"].values\ndef image_w_logloss(pred_df,pred):\n    pred_df[\"pred\"]=pred\n    loss = 0\n    w = 0.07361963\n    for i in range(pred_df[\"a\"].nunique()):\n        patient= pred_df[pred_df[\"a\"]==i]\n        q=patient[\"label\"].mean()\n        if q==0:\n            continue\n        else:\n            loss-=log_loss(patient[\"label\"].values,patient[\"pred\"].values)*q\n    return w*loss\n\nscore=image_w_logloss(pred_df,train[\"pe_present_on_image\"].mean())\nprint(score)#-26.39116417747282\nscore=image_w_logloss(pred_df,0.5)\nprint(score)#-20.52697273338017\nscore=image_w_logloss(pred_df,train[\"negative_exam_for_pe\"].mean())\nprint(score)#-27.042441721126238  `\n\n\nIf I made mistakes, I would appreciate it if you could point them out.\n",
      "votes": 1
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "1017806": "How do you calculate the image level log loss when checking the score for CV?\n\n\n`from sklearn.metrics import log_loss\nfrom sklearn.preprocessing import LabelEncoder\npred_df=xfolds\nxfolds = train[['StudyInstanceUID', 'SeriesInstanceUID']].copy()\nle = LabelEncoder()\nx = le.fit_transform(xfolds['StudyInstanceUID'])\nxfolds[\"a\"] = x\n\npred_df[\"label\"]= train[\"pe_present_on_image\"].values\ndef image_w_logloss(pred_df,pred):\n    pred_df[\"pred\"]=pred\n    loss = 0\n    w = 0.07361963\n    for i in range(pred_df[\"a\"].nunique()):\n        patient= pred_df[pred_df[\"a\"]==i]\n        q=patient[\"label\"].mean()\n        if q==0:\n            continue\n        else:\n            loss-=log_loss(patient[\"label\"].values,patient[\"pred\"].values)*q\n    return w*loss\n\nscore=image_w_logloss(pred_df,train[\"pe_present_on_image\"].mean())\nprint(score)#-26.39116417747282\nscore=image_w_logloss(pred_df,0.5)\nprint(score)#-20.52697273338017\nscore=image_w_logloss(pred_df,train[\"negative_exam_for_pe\"].mean())\nprint(score)#-27.042441721126238  `\n\n\nIf I made mistakes, I would appreciate it if you could point them out.\n"
  }
}