小编Wil*_*iam的帖子

二元分类中的特征重要性并仅提取其中一类的 SHAP 值

假设我们有一个二元分类问题,我们有两个类别 1 和 0 作为我们的目标。我的目标是使用树分类器来预测给定特征的 1 和 0。此外,我可以使用 SHAP 值对预测 1 和 0 的特征重要性进行排名。到现在为止一切都很好!

现在假设我想知道仅预测 1 的特征的重要性,那里推荐的方法是什么?我可以将我的数据分成两部分(名义上:)df_tot = df_zeros + df_onesdf_ones在我的分类器中使用,然后为此提取 SHAP 值,但是这样做目标将只有 1,因此模型并没有真正学会分类任何东西。所以我想知道如何解决这样的问题?

python classification machine-learning shap

5
推荐指数
1
解决办法
1256
查看次数

将整数列表与字符串列表相乘

假设有两个列表:

l1 = [2,2,3]
l2 = ['a','b','c']
Run Code Online (Sandbox Code Playgroud)

我想知道如何找到两者的乘积,使得输出为:

#output: ['a','a','b','b','c','c','c']
Run Code Online (Sandbox Code Playgroud)

如果我做:

l3 = []
for i in l2:
    for j in l1:
        l3.append(i)
Run Code Online (Sandbox Code Playgroud)

我得到:

['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c']
Run Code Online (Sandbox Code Playgroud)

这是错误的,我想知道我在哪里犯了错误?

python for-loop list list-manipulation

5
推荐指数
2
解决办法
239
查看次数

转移概率矩阵

我有以下数组:

a=[['A', 'B'],
 ['B', 'B'],
 ['B', 'C'],
 ['C', 'B'],
 ['B', 'A'],
 ['A', 'D'],
 ['D', 'D'],
 ['D', 'A'],
 ['A', 'B'],
 ['B', 'A'],
 ['A', 'D']]
Run Code Online (Sandbox Code Playgroud)

我希望制作一个转移概率矩阵,这样我得到:

[[P_AA,P_AB,P_AC,P_AD],
[P_BA,P_BB,P_BC,P_BD],
[P_CA,P_CB,P_CC,P_CD],
[P_DA,P_DB,P_DC,P_DD]]
Run Code Online (Sandbox Code Playgroud)

(以上用于说明),其中计算数组 a 等中有P_AA多少个除以。我已经开始使用计数器["A","A"]P_AA+P_AB+P_AC+P_AD

from collections import Counter
Counter(tuple(x) for x in l)
Run Code Online (Sandbox Code Playgroud)

它将数组的元素正确计数为:

Counter({('A', 'B'): 2,
         ('B', 'B'): 1,
         ('B', 'C'): 1,
         ('C', 'B'): 1,
         ('B', 'A'): 2,
         ('A', 'D'): 2,
         ('D', 'D'): 1,
         ('D', 'A'): 1})
Run Code Online (Sandbox Code Playgroud)

所以矩阵应该是,

[[0,2/5,0,2/5],[2/4,1/4,1/4,0],[0,1,0,0],[1/2,0,0,1/2]]

python arrays matrix linear-algebra

1
推荐指数
1
解决办法
1595
查看次数

将 Counter 中的值分配给列表

假设我有以下列表:

l1 = ['Hello', 'world', 'world']
l2 = ['Hello', 'world', 'world', 'apple']
Run Code Online (Sandbox Code Playgroud)

因为l1我将不同的元素计算为:

Counter(l1)
Run Code Online (Sandbox Code Playgroud)

这给出了:

Counter({'Hello': 1, 'world': 2})
Run Code Online (Sandbox Code Playgroud)

现在我想通过l2并将上面的值分配给它,以便我得到:

[1,2,2,0]
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,apple我们分配了 0,因为计数器中没有它的值。我想知道我该怎么做?

python counter list

0
推荐指数
1
解决办法
31
查看次数