У меня есть программа, которая выводит некоторые условия, подобные этим ( это фактический вывод, это псевдокод ):
if ( first occurance of 'AB' <= -0.5 ) {
return [ 0.]
} else {
if ( number of products viewed <= 1.5 ) {
if ( similarity to 'AB' <= 0.899999976158 ) {
return [ 1.]
} else {
return [ 0.]
}
} else {
if ( average time between actions <= 57.2111129761 ) {
return [ 0.39145907]
} else {
return [ 0.10410805]
}
}
}
Как я могу получить более читабельный человек (?) / деконструированное решение?то есть:
( first occurance of 'AB' > -0.5 ) * (( number of products viewed <= 1.5 ) * ( similarity to 'AB' <= 0.899999976158 ))+((( number of products viewed > 1.5 ) * ( average time between actions <= 57.2111129761 ))
(у меня уже есть код, который может изменить "<=" на ">", но кроме этого я не могу выделить каждый из них, если условие в правильном порядке.
EDIT: код, используемый для получения токового выхода (я боюсь, не минимальный пример)
def get_code(tree, feature_names, tabdepth=0):
left = tree.tree_.children_left
right = tree.tree_.children_right
threshold = tree.tree_.threshold
features = [feature_names[i] for i in tree.tree_.feature]
value = tree.tree_.value
f=[]
def recurse(left, right, threshold, features, node, f, tabdepth=0):
if (threshold[node] != -2):
print('\t' * tabdepth + 'if ( ' + features[node] + ' <= ' + str(threshold[node]) + ' ) {')
f.append('%' * tabdepth+'if ( ' + features[node] + ' <= ' + str(threshold[node]) + ' ) {')
if left[node] != -1:
recurse (left, right, threshold, features,left[node], f, tabdepth+1)
print('\t' * tabdepth+'} else {')
f.append('%' * tabdepth+'} else {')
if right[node] != -1:
recurse (left, right, threshold, features,right[node], f, tabdepth+1)
print('\t' * tabdepth + '}')
else:
print('\t' * tabdepth + 'return ' + str(value[node][0]))
f.append('%' * tabdepth + 'return ' + str(value[node][0]))
recurse(left, right, threshold, features, 0, f)