В чем разница между следующими кодами дерева решений - PullRequest
0 голосов
/ 20 мая 2019

Единственная разница между следующими кодами состоит в том, что у каждого есть 'особенности', определенные в функции show_tree, тогда как у другого нет. И то, и другое отображает другое дерево решений. Мой вопрос заключается в том, что код, для которого не определены «функции», не должен отображать одно и то же дерево, потому что функции уже определены в x dt = c.fit (x_train, y_train), а этот dt является переменной show_tree

КОД 1:

data = pd.read_csv('soundcloud.csv')
print(data)

features = ['danceability','loudness','valence','energy','instrumentalness','acousticness','key','speechiness','duration_ms']

y = data['target']
x = data[features]

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.15)

c = DecisionTreeClassifier(min_samples_split=100)

dt = c.fit(x_train,y_train)

def show_tree(dt,path):
    f = io.StringIO()
    export_graphviz(dt, out_file=f)
    pydotplus.graph_from_dot_data(f.getvalue()).write_png(path)
    img = misc.imread(path)
    plt.rcParams['figure.figsize'] = (20,20)
    plt.imshow(img)

show_tree(dt,'dec_tree_01.png')

КОД 2:

data = pd.read_csv('data.csv')
print(data)

train,test = train_test_split(data, test_size = 0.15)

c = DecisionTreeClassifier(min_samples_split=100)

features = ['danceability','loudness','valence','energy','instrumentalness','acousticness','key','speechiness','duration_ms']

x_train = train[features]
y_train = train['target']

x_test = test[features]
y_test = test['target']

dt = c.fit(x_train,y_train)

def show_tree(tree, features, path):
    f = io.StringIO()
    export_graphviz(tree, out_file=f, feature_names=features)
    pydotplus.graph_from_dot_data(f.getvalue()).write_png(path)
    img = misc.imread(path)
    plt.rcParams['figure.figsize'] = (20,20)
    plt.imshow(img)

show_tree(dt,features,'dec_tree_01.png')
...