我是python的新手,我正在尝试基于某些过渡(数字用于表示过渡)来计算可能的过渡及其百分比(发生的频率)。
我已经在python中找到了许多用于可视化树木的代码和库,但是到目前为止,修剪树木以使其余的叶子还没有得到修复。
所以我已经开始自己编写代码,从小表开始作为数据集,也可以在本文中使用。
理想情况下,我希望输入类型可变。随着输入向量变大,将遍历更多的树。
因此,假设数据集名为smallData,输入向量的长度为2。输入表示所遍历的树的节点。
smallData=pd.DataFrame(np.array([[1,2,3,4,5],[4,5,6,7,8],[1,2,3,3,3],[1,2,2,3,3],[1,2,3,5,3]]),columns=range(0,5))
inputs=[1,2]
对于第一行[1,2,3,4,5]上方的表,意味着过渡1之后发生过渡2,然后发生过渡3,依此类推。此外,每个行行都对应于一个不同的用户,并且允许所有类型的过渡(保持相同的过渡状态或正在更改)
然后,我做了一个简单的函数,它基于输入返回下一次转换的统计信息。
def nextStep(inputs):
i=len(inputs)
# The statement below only works with input of length 2. How to make it work for different input lengths?
subTable = smallData[(smallData[0]==inputs[0]) & (smallData[1]==inputs[1])]
nextIndexes=subTable.loc[:,i+1].value_counts(normalize=True)
return nextIndexes
然后将函数调用为:
step=nextStep(inputs)
print(step)
我得到的结果是,统计数据可以发生三个转变
Out[265]:
3 0.50
5 0.25
4 0.25
现在我陷入了困境,对于这三个输出,我需要保存三个新列表以显示潜在的过渡。我目前是手动进行的:(
inputs1=inputs+[step.index.values[0]]
inputs2=inputs+[step.index.values[1]]
inputs3=inputs+[step.index.values[2]]
,然后针对这三个转换中的每一个,我再次要调用nextStep函数以查找下一个转换的统计信息。
您能帮我弄清楚这三个缺失的部分吗?
在此先感谢您的答复。 问候 亚历克斯
P.S我尽力写这篇文章 P.S2我当时在“期待” python已经有了一个用于构建统计树并将其用于推理的库。