猿问

Python 中的基本决策树

我正在学习机器学习书中决策树的基本知识。书中出现这个例子是为了理解一些东西(我知道这不是决策树,但有些东西我不明白)


def gini (p):

    return (p)*(1-(p))-(1-p)*(1-(1-p))


def entropy(p):

    return -p*np.log2(p)-(1-p)*np.log2((1-p))


def error(p):

    return 1- np.max([p, 1-p])


x=np.arange(0.0, 1.0, 0.01)

ent=[entropy(p) if p != 0 else None for p in x]

sc_ent = [e*0.5 if e else None for e in ent]

err= [error(i) for i in x]

fig = plt.figure()

ax=plt.subplot(111)


for i, lab, ls, c, in zip ([ent, sc_ent, gini(x), err], ['Entropy', 'Entropy(scaled)', 'Gini Impurity', 'Misclassification Error'], ['-', '-', '--', '-.'], ['black', 'lightgray','red','green', 'cyan']):

    line= ax.plot(x,i,label=lab, linestyle=ls, lw=2, color =c)


ax.legend(loc='upper center', bbox_to_anchor=(0.5, 1.15), ncol=5, fancybox=True, shadow=False)

ax.axhline(y=0.5, linewidth= 1, color='k', linestyle='--')

ax.axhline(y=1, linewidth= 1, color='k', linestyle='--')

plt.ylim([0, 1.1])

plt.xlabel('p(i=1)')

plt.ylabel('Impurity index')

plt.show()

有人可以解释这里发生了什么吗?


ent=[entropy(p) if p != 0 else None for p in x]

sc_ent = [e*0.5 if e else None for e in ent]

err= [error(i) for i in x]


元芳怎么了
浏览 118回答 1
1回答

幕布斯7119047

x是一个数字列表。的熵0显然是未定义的(所以我们返回None),但对于其他数字,它返回一个我们返回的数字。这是第一行。第二行采用熵列表,并将每个数值除以 2(它对 a 不执行任何操作None)。第三行给出了一个错误列表,每个错误对应列表中的一个元素x。
随时随地看视频慕课网APP

相关分类

Python
我要回答