#python #pandas #машинное_обучение #dataframe #numpy
Запрограммировала случайный лес и бэггинг деревьев решений. Что-то видимо не правильно потому, что процент несовпадений выдает одинаковое число для трех методов, и при изменении выборки ничего не происходит. Как правильно должна выглядеть программа? Надо ли отдельно реализовать бэггинг и деревья решений? Код: 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:\n', X_train[:6]) print ('\n') print ('y_train У:\n', y_train[:10]) print (' \n') print ('тестовая выборка Х:\n', X_test[:6]) print ('\n') print ('y_test У\n', 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\n', X_test[:9]) print ('\n') print ('RandomForestClassifier y\n', 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\n', X_test[:9]) print ('\n') print (' DecisionTreeClassifier y\n', 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\n', X_test[:9]) print ('\n') print (' BaggingClassifier y\n', 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()
Ответы
Ответ 1
Вы создали три 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()) как следствие процент несовпадений - одинаковый
Комментариев нет:
Отправить комментарий