Страницы

Поиск по вопросам

четверг, 16 мая 2019 г.

Случайный лес и бэггинг деревьев решений

Запрограммировала случайный лес и бэггинг деревьев решений.
Что-то видимо не правильно потому, что процент несовпадений выдает одинаковое число для трех методов, и при изменении выборки ничего не происходит.
Как правильно должна выглядеть программа? Надо ли отдельно реализовать бэггинг и деревья решений?
Код:
import numpy as np import pandas as pd from sklearn.model_selection import cross_val_score from sklearn.cross_validation import train_test_split from sklearn.ensemble.forest import RandomForestClassifier from sklearn.ensemble import BaggingClassifier from sklearn.tree import DecisionTreeClassifier data = pd.read_csv('C:\\Users\\Vika\\Downloads\\1500.csv', ";",decimal =',', skipinitialspace=True) data.head() kfold = 10 itog_val1 = {} itog_val2 = {} itog_val3 = {} itog_val4 = {} itog_val5 = {} itog_val6 = {} X = data.drop('Y1', axis=1).values[:, :8] y = data['Y1'].values X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) print ('обучающая выборка X:
', X_train[:6]) print ('
') print ('y_train У:
', y_train[:10]) print ('
') print ('тестовая выборка Х:
', X_test[:6]) print ('
') print ('y_test У
', y_test[:10]) first_tree = RandomForestClassifier(n_estimators=100) scores = cross_val_score(first_tree, X_train, y_train, cv=kfold) itog_val1 = scores print(itog_val1) first_tree1 = DecisionTreeClassifier(max_depth=1) scores = cross_val_score(first_tree, X_train, y_train, cv=kfold) itog_val4 = scores print(itog_val4) first_tree.fit(X_train, y_train) first_tree.score(X_test, y_test) y_test_predicted = first_tree.predict(X_test) print ('RandomForestClassifier X
', X_test[:9]) print ('
') print ('RandomForestClassifier y
', y_test[:11]) first_tree1.fit(X_train, y_train) first_tree1.score(X_test, y_test) y_test_predicted = first_tree1.predict(X_test) print ('DecisionTreeClassifier X
', X_test[:9]) print ('
') print (' DecisionTreeClassifier y
', y_test[:11]) first_bagging.fit(X_train, y_train) first_bagging.score(X_test, y_test) y_test_predicted = first_bagging.predict(X_test) print ('BaggingClassifier X
', X_test[:9]) print ('
') print (' BaggingClassifier y
', y_test[:11]) res = pd.DataFrame(np.column_stack((y_test, y_test_predicted, X_test)), columns=['Y1','YR'] + data.columns[1:9].tolist()) (res['Y1']!= res['YR']).mean() res1 = pd.DataFrame(np.column_stack((y_test, y_test_predicted, X_test)), columns=['Y1','YD'] + data.columns[1:9].tolist()) (res1['Y1']!= res1['YD']).mean() res2 = pd.DataFrame(np.column_stack((y_test, y_test_predicted, X_test)), columns=['Y1','YB'] + data.columns[1:9].tolist()) (res2['Y1']!= res2['YB']).mean()


Ответ

Вы создали три DataFrame из одних и тех же данных:
res = pd.DataFrame(np.column_stack((y_test, y_test_predicted, X_test)), columns=['Y1','YR'] + data.columns[1:9].tolist()) ... res1 = pd.DataFrame(np.column_stack((y_test, y_test_predicted, X_test)), columns=['Y1','YD'] + data.columns[1:9].tolist()) ... res2 = pd.DataFrame(np.column_stack((y_test, y_test_predicted, X_test)), columns=['Y1','YB'] + data.columns[1:9].tolist())
как следствие процент несовпадений - одинаковый

Комментариев нет:

Отправить комментарий