Запрограммировала случайный лес и бэггинг деревьев решений.
Что-то видимо не правильно потому, что процент несовпадений выдает одинаковое число для трех методов, и при изменении выборки ничего не происходит.
Как правильно должна выглядеть программа? Надо ли отдельно реализовать бэггинг и деревья решений?
Код:
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())
как следствие процент несовпадений - одинаковый
Комментариев нет:
Отправить комментарий