我想知道是否有一种漂亮的方法可以进行以下操作
我有一个country, user_id, actual_value, prediction
列的pandas df
我想计算每个国家/地区的准确性。精度方法需要两个数组。一种是实际值,另一种是pred
import pandas as pd
from sklearn.metrics import balanced_accuracy_score
df = pd.DataFrame(
[
('DEU', 'a', 1, 1),
('DEU', 'b', 1, 0),
('GBR', 'c', 0, 0),
('GBR', 'c', 0, 1),
],
columns=['country', 'user_id', 'actual_value', 'prediction']
)
我知道我可以迭代地选择所需的df切片并计算指标。我想知道是否可以将两个值(actuals
,prediction
)馈入聚合函数。
我猜想,有点违反熊猫公约,我可以创建一个在元组中包含两个值的列。像
df['actuals_predictions'] = df[['actual_value', 'prediction']].apply(lambda row: tuple(row), axis=1)
然后为我的精度函数创建包装器,该包装器将首先从元组中提取数组并调用指标
def acc_wrapper(actuals_predictions):
actuals = [a for a, _ in actuals_predictions]
predictions = [p for _, p in actuals_predictions]
return balanced_accuracy_score(actuals, predictions)
然后做类似的事情
df.groupby('country').actuals_predictions.agg(acc_wrapper)
country
DEU 0.5
GBR 0.5
Name: e, dtype: float64
但是我想知道是否还有更经典的方法。
答案 0 :(得分:2)
我们可能只是将$user = User::create([
'name' => $request['name'],
'phone' => $request['phone'],
'email' => $request['email'],
'password' => Hash::make($request['password']),
]);
这个函数传递给balanced_accuracy_score
apply