【问题标题】:How can I make a conditional expression?如何制作条件表达式?
【发布时间】:2021-05-18 08:07:53
【问题描述】:

我想查看带有两个数据框的建模输出。

一个数据框的目标值是 1 到 8,另一个只有 1,2,3,5,6,7

我制作了一个字典来映射这些值,并编写了如下代码来计算概率。

my_dict ={1:'a', 2:'b', 3:'c', 4:'d', 5:'e', 6:'f', 7:'g', 8:'f'}
def func(val):
    for key, value in my_dict.items():
        if val == key:
            return value
    return "There is no such Key"


inputData = [1, 2, 3, 4, 5]

inputData2 = np.array([inputData])

index = 1;
result_data = OrderedDict()
for x in xgb_model.predict_proba(inputData2,ntree_limit=None, validate_features=False,base_margin=None)[0]:
    result_data[func(index)] = round(x,2)
    index += 1


print("result_name : ", max(result_data.items(), key=operator.itemgetter(1))[0])
print("result_value : ", max(xgb_model.predict_proba(inputData2, ntree_limit=None, validate_features=False, base_margin=None)[0]))
print(result_data)

但在第二个数据帧中,键值被推回。 比如应该出现a:0.2,b:0.2,c:0.1,e:0.1,f:0.1 g:0.3,但是在真实数据中,数据应该是: a:0.2, b:0.2, c:0.1, d:0.1, e:0.1, f:0.3

我不知道该怎么办。

所以我一直在研究下面的代码。 只有 a:0.2, b:0.2, c:0.1 出来并结束。

for x in xgb_model.predict_proba(inputData2,ntree_limit=None, validate_features=False,base_margin=None)[0]:
    if index not in y.target.unique().tolist():
        continue
    result_data[func(index)] = round(x,2)
    index += 1

如果您看不懂代码,请告诉我。 希望得到帮助。谢谢。

【问题讨论】:

    标签: python for-loop if-statement python-3.7


    【解决方案1】:

    在具有 8 个系数的第二个模型中,您会覆盖 f 的值,因为它是为第 6 个和第 8 个元素定义的。您的 dict 应定义为:

    my_dict ={1:'a', 2:'b', 3:'c', 4:'d', 5:'e', 6:'f', 7:'g', 8:'h'}
    

    但是您可以通过仅使用字符串 ("_abcdefgh") 为每个索引获取正确的字母来简化代码。然后,您可以使用 result_data[mystring[i]]= 并删除该函数。

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      相关资源
      最近更新 更多