Вывод модели из дерева решений и случайных лесов различен? - PullRequest
0 голосов
/ 30 октября 2019

Я сделал модель, используя и дерево решений, и случайный лес. Но когда я попытался протестировать модель на одном и том же 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...