перекрестная проверка с Kfold - PullRequest
0 голосов
/ 16 апреля 2019

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

У меня есть следующий набор данных:

enter image description here

функция отображения для преобразования текста нет / да в целое число 0/1

convert_to_binary = {'no' : 0, 'yes' : 1}
default = bank['default'].map(convert_to_binary)
housing = bank['housing'].map(convert_to_binary)
loan = bank['loan'].map(convert_to_binary)
response = bank['response'].map(convert_to_binary)

Я добавил три моих объясняющих переменных и ответ намассив

data = np.array([np.array(default), np.array(housing), np.array(loan),np.array(response)]).T

kfold = KFold(n_splits=3)

scores = []
for train_index, test_index in kfold.split(data):
    X_train, X_test = data[train_index], data[test_index]
    y_train, y_test = response[train_index], response[test_index]
    model = LogisticRegression().fit(X_train, y_train)
    pred = model.predict(data[test_index])
    results = model.score(X_test, y_test)
    scores.append(results)
print(np.mean(scores))

моя точность всегда равна 100%, что, я знаю, неверно.точность должна быть где-то около 50-65%?

Есть ли что-то, что я делаю не так?

1 Ответ

0 голосов
/ 16 апреля 2019

Неверное разбиение

Вот правильное разбиение

X_train, X_labels = data[train_index], response[train_index]
y_test, y_labels = data[test_index], response[test_index]
model = LogisticRegression().fit(X_train, X_labels)
pred = model.predict(y_test)
acc = sklearn.metrics.accuracy_score(y_labels,pred,normalize=True)
...