Я сделал модель, используя и дерево решений, и случайный лес. Но когда я попытался протестировать модель на одном и том же DataFrame, результат был другим. Как это возможно?
Файл данных из моего репо:
#This is the function to help me preparing the dataframe
def process_df_for_ml(df):
"""
Process a dataframe for model training/prediction use.
Returns X/y tensors.
"""
df = df.copy()
# Map salary to 0,1,2
df.salary = df.salary.map({"low": 0, "medium": 1, "high": 2})
# dropping left and sales X for the df, y for the left
X = df.drop(["left", "sales"], axis=1)
y = df["left"]
return (X, y)
Я использовал дерево решений:
from sklearn import tree
from sklearn.model_selection import train_test_split
# Train a decision tree.
X, y = process_df_for_ml(df)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0, stratify=y)
clftree = tree.DecisionTreeClassifier(max_depth=3)
clftree.fit(X_train, y_train)
С test_score: 0,96. После этого я проверяю это DecisionTree на тот же df и получаю вывод: [424 строки x 11 столбцов]
, а затем я попытался использовать алгоритм Random Forest
X, y = process_df_for_ml(df)
from sklearn.model_selection import train_test_split
# implementing train-test-split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=0, stratify=y)
from sklearn.ensemble import RandomForestClassifier
# random forest model creation
rfc = RandomForestClassifier()
rfc.fit(X_train,y_train)
# predictions
rfc_predict = rfc.predict(X_test)
С test_score:0,99. После этого я проверяю этот RandomForest на тот же df и получаю вывод [11 строк x 11 столбцов].
Как это возможно? Вот ссылка на мои работы: DecisionTree и RandomForest