下面是我的資料框(df),其中我有每周預期和實際水平的實體

我需要應用以下 Python 代碼函式來計算每周累積級別的 auc。
from sklearn.metrics import roc_auc_score
def auc_group(df):
y_hat = df.expected
y = df.actual
return (roc_auc_score(y,y_hat))
對于每一周,應該對直到該周的所有記錄進行評分,因此結果應如下所示。

雖然每周應用該函式很簡單,但考慮到該周之前的所有記錄,應用它來計算累積分數對我來說是一個挑戰。對解決此問題的任何幫助表示贊賞。
uj5u.com熱心網友回復:
如需累計計數和累計roc_auc_score使用:
from sklearn.metrics import roc_auc_score
s1 = df['week'].value_counts().sort_index().cumsum()
expected, actual = [],[]
def f(x):
expected.extend(x['expected'].tolist())
actual.extend(x['actual'].tolist())
return roc_auc_score(actual, expected)
s2 = df.groupby('week').apply(f)
df = (pd.concat([s1, s2], axis=1, keys=('count of records','AUC'))
.rename_axis('week')
.reset_index())
print (df)
week count of records AUC
0 10 2 1.000000
1 11 6 0.500000
2 12 10 0.583333
如果需要每個組的累積計數和 roc_auc_score(非累積),請使用:
from sklearn.metrics import roc_auc_score
s1 = df['week'].value_counts().sort_index().cumsum()
s2 = df.groupby('week').apply(lambda x: roc_auc_score(x.actual,x.expected))
df = (pd.concat([s1, s2], axis=1, keys=('count of records','AUC'))
.rename_axis('week')
.reset_index())
print (df)
week count of records AUC
0 10 2 1.000000
1 11 6 0.166667
2 12 10 0.750000
uj5u.com熱心網友回復:
import pandas as pd
import numpy as np
from sklearn import datasets
iris = datasets.load_iris()
data = pd.concat([pd.DataFrame(iris.target, columns = ['target']),
pd.DataFrame(iris.data, columns = iris.feature_names)], axis = 1)
def target_replace(x):
for i in [0,1,2]:
if x == i:
return(iris.target_names[i])
data.target = data.target.apply(target_replace)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/370233.html
