Данные голосования adaBoost и целевая форма в python - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь протестировать эту реализацию классификатора adaBoost для голосования.

Мой набор данных имеет форму 650 триплетов G1, G2, G3, где G1 и G2 содержатся в [1-20], а G3 равно 1 или 0 в зависимости от G1 и G2.

Из того, что я читал, cross_val_score отдельно разделяет входные данные в обучающих и тестовых группах, но я неправильно выполняю инициализацию X, y. Если я попытаюсь инициализировать X и y со всем набором данных, точность составит 100%, что кажется немного неправильным.

Я попытался ввести только значение G3 в y, но получил тот же результат.

Обычно я разделяю данные на наборы для обучения и тестирования, и это упрощает работу.

У меня нет большого опыта работы с python или машинным обучением, но я решил попробовать.

Не могли бы вы объяснить, как должна выглядеть инициализация X и y, чтобы это работало правильно?

import os
import subprocess
import pandas as pd
import numpy as np

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import VotingClassifier

input_file = "student_data_grades_only.csv"

data = pd.read_csv(input_file, header = 0)

X, y = data, data['G3']
print(X,y)

clf1 = LogisticRegression(random_state=1)
clf2 = RandomForestClassifier(n_estimators=50, random_state=1)
clf3 = GaussianNB()

eclf = VotingClassifier(
    estimators=[('lr', clf1), ('rf', clf2), ('gnb', clf3)],
    voting='hard')

for clf, label in zip([clf1, clf2, clf3, eclf], ['Logistic Regression', 'Random Forest', 'naive Bayes', 'Ensemble']):
    scores = cross_val_score(clf, X, y, scoring='accuracy', cv=2)
    print("Accuracy: %0.2f (+/- %0.2f) [%s]" % (scores.mean(), scores.std(), label))

1 Ответ

0 голосов
/ 27 мая 2020

Вам следует удалить столбец G3 из вашей переменной X, так как это то, что вы пытаетесь предсказать.

X,y = data.drop('G3'), data['G3']

Этот код будет работать и должен вам помочь.

...