Построение дерева решений только непрерывной переменной - PullRequest
0 голосов
/ 01 апреля 2019

Я строю дерево решений, используя пакет python для pydot и graphviz. Как и в R, мы можем показать график, используя значение dicrete, но здесь я борюсь с проблемой непрерывной переменной. Есть ли другой пакет, который может помочь мне получить подобный график как в R для категориальной переменной со значением discete в узлах вместо непрерывного.

Использование категориальной переменной для построения дерева решений с 10 независимыми переменными и целевой переменной. Я связал все категориальные переменные и использовал одно горячее кодирование для преобразования их в числовую переменную. Затем я использовал pydot и graphviz для построения дерева. Но Мне нужно это как R вместо разделения узлов, показанных / выполненных по непрерывным данным. Я хочу, чтобы это делалось на дискретных значениях из столбцов, которые я создал. Я встречал здесь сообщения, где говорится, что sklearn не поддерживает эту функцию до сих пор. Есть ли другой способ решить эту проблему заговора.

Биннинг часть

def weight_bin(x):
    if x>50:
     type="Greaterthan50"
    elif 35< x <= 50:
        type="Between 35-50"

    elif 20< x <=35:
        type="Between 20-35"

    elif 0<x<=20:
        type="Less than 20"

    else:
        type="Ignore"
    return type

list_name1=list(map(weight_bin,data.WEIGHT_KG))


data['Weight_Bin']=list_name1
сюжетная часть
feature_cols = ['ISO_COUNTRY_CODE', 'NAS_GT_2', 'INFEED_NAME', 'PRODUCT_CODE_PNL_new','Barcode_Read','Barcode_Valid','EDI_Available','Scanning Method','Sorting_Type','Weight_Bin','NO_ADDED_SERVICES_new']
X = data_subset[feature_cols] # Features
y = data_subset.Rejection_Flag # Target variable


dtree=DecisionTreeClassifier(criterion = "gini", random_state = 100,
max_depth=8, min_samples_leaf=4)

one_hot_data = pd.get_dummies(X,drop_first=True)
clf =dtree.fit(one_hot_data, y)
target_names=list(data_subset.Rejection_Flag.unique())

dot_data = tree.export_graphviz(clf, out_file=None, 
                                feature_names=one_hot_data.columns,  
                                class_names=target_names)

# Draw graph
graph = pydotplus.graph_from_dot_data(`enter code here`dot_data)  

# Show graph
Image(graph.create_png())

graph.write_png("tree5.png")
...