假设我们有一个二元分类问题,我们有两个类别 1 和 0 作为我们的目标。我的目标是使用树分类器来预测给定特征的 1 和 0。此外,我可以使用 SHAP 值对预测 1 和 0 的特征重要性进行排名。到现在为止一切都很好!
现在假设我想知道仅预测 1 的特征的重要性,那里推荐的方法是什么?我可以将我的数据分成两部分(名义上:)df_tot = df_zeros + df_ones并df_ones在我的分类器中使用,然后为此提取 SHAP 值,但是这样做目标将只有 1,因此模型并没有真正学会分类任何东西。所以我想知道如何解决这样的问题?
假设有两个列表:
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)
这是错误的,我想知道我在哪里犯了错误?
我有以下数组:
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]]
假设我有以下列表:
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,因为计数器中没有它的值。我想知道我该怎么做?