首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sklearn是否支持成本矩阵?

sklearn是否支持成本矩阵?
EN

Stack Overflow用户
提问于 2014-08-01 08:07:52
回答 5查看 5.7K关注 0票数 13

是否有可能在sklearn中使用针对不同错误具有不同成本的成本矩阵来训练分类器?例如,在一个2类问题中,成本矩阵将是一个2乘2的方阵。例如,A_ij =将i分类为j的成本。

我使用的主要分类器是随机森林。

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2014-08-01 14:15:04

您描述的成本敏感框架在scikit-learn中不受支持,在我们拥有的任何分类器中都不支持。

票数 5
EN

Stack Overflow用户

发布于 2018-09-06 22:24:20

您可以使用接受每个类或每个实例成本矩阵的自定义scoring function。以下是计算每个实例的错误分类成本的记分器的示例:

代码语言:javascript
运行
复制
def financial_loss_scorer(y, y_pred, **kwargs):
    import pandas as pd

    totals = kwargs['totals']

    # Create an indicator - 0 if correct, 1 otherwise
    errors = pd.DataFrame((~(y == y_pred)).astype(int).rename('Result'))
    # Use the product totals dataset to create results
    results = errors.merge(totals, left_index=True, right_index=True, how='inner')
    # Calculate per-prediction loss
    loss = results.Result * results.SumNetAmount

    return loss.sum()

得分者变成:

代码语言:javascript
运行
复制
make_scorer(financial_loss_scorer, totals=totals_data, greater_is_better=False)

其中totals_data是具有与训练集索引匹配的索引的pandas.DataFrame。

票数 3
EN

Stack Overflow用户

发布于 2015-08-01 07:35:41

你可以随时看看你的ROC曲线。ROC曲线上的每个点对应一个独立的混淆矩阵。因此,通过指定你想要的混淆矩阵,通过选择你的分类器阈值意味着某种类型的成本加权方案。然后,您只需选择混淆矩阵,该矩阵将隐含您正在寻找的成本矩阵。

另一方面,如果你真的用心去做,并且真的想用一个成本矩阵来“训练”一个算法,你可以在sklearn中“某种程度上”这样做。

虽然在sklearn中不可能直接训练一个对成本敏感的算法,但您可以使用成本矩阵之类的设置来调整您的超参数。我用遗传算法做过类似的事情。它确实做得不是很好,但它应该对性能有一定的促进作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25070910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档