ошибка при экспорте прогнозов 4 моделей машинного обучения - PullRequest
0 голосов
/ 12 июня 2019

Я тренируюсь и проверяю дату на kfold, равном 10, с 4 разными моделями. Я хотел бы, чтобы каждая модель экспортировала правила и исправленные классы для каждого разделения.

это мой код и результат:

for train_index, test_index in kf.split(X, labels):
    print('TRAIN:', train_index,
        'TEST:', test_index) 

    X_train, X_val = X[train_index], X[test_index]
    y_train, y_val = labels[train_index], labels[test_index]


    model1 = LinearSVC()
    model2 = MultinomialNB()
    model3 = LogisticRegression()
    model4 = RandomForestClassifier()

    model1.fit(X_train, y_train)
    model2.fit(X_train, y_train)
    model3.fit(X_train, y_train)
    model4.fit(X_train, y_train)

    result1 = model1.predict(X_val)
    result2 = model2.predict(X_val)
    result3 = model3.predict(X_val)
    result4 = model4.predict(X_val)

    df = pd.DataFrame(data = {"id": X_val, "Prediction": y_val}) 
    df.to_excel('result.xlsx')

пока у меня есть это ниже, но оно печатает только первые строки (1-198), но я не понимаю экспорт, не могли бы вы помочь мне

У меня примерно 2000 предложений.

enter image description here

1 Ответ

1 голос
/ 13 июня 2019

Когда вы устанавливаете K в KFold == 10, метод .split() разбивает ваш набор данных на 10 частей. Для каждой итерации test_index будет индексами i-й части, а train_index будет остальными 9 частями.

В исходном коде df показывает набор тестов (X_val, Y_val) (вместо прогнозов) для каждой итерации.

Я не уверен, что вы собираетесь делать, но если вы хотите увидеть прогноз для каждой модели, подойдет следующий код:

df = pd.DataFrame(data={
    "id": [],
    "ground_true": [],
    "original_sentence": [],
    "pred_model1": [],
    "pred_model2": [],
    "pred_model3": [],
    "pred_model4": []})

for train_index, test_index in kf.split(X, labels):
    print('TRAIN:', train_index,'TEST:', test_index)

    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = labels[train_index], labels[test_index]

    model1 = LinearSVC()
    model2 = MultinomialNB()
    model3 = LogisticRegression()
    model4 = RandomForestClassifier()

    model1.fit(X_train, y_train)
    model2.fit(X_train, y_train)
    model3.fit(X_train, y_train)
    model4.fit(X_train, y_train)

    result1 = model1.predict(X_val)
    result2 = model2.predict(X_val)
    result3 = model3.predict(X_val)
    result4 = model4.predict(X_val)

    temp_df = pd.DataFrame(data={
        "id": X_val,
        "ground_true": y_val,
        "original_sentence": verbatim_train_remove_stop_words[test_index],
        "pred_model1": result1,
        "pred_model2": result2,
        "pred_model3": result3,
        "pred_model4": result4})
    df = pd.concat([df, temp_df])


...