Машинное обучение не предсказывает правильные результаты

#python #machine-learning #scikit-learn #logistic-regression

Вопрос:

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

 business experience: should be greater than 7
year of founded: should be after 2015
loan: no previous or current loan
 

Если вышеуказанные условия совпадают, то будет одобрен только кредит. Этот набор данных можно загрузить по этой ссылке:

https://drive.google.com/file/d/1QtJ3EED7KDqJDrSHxHB6g9kc5YAfTlmF/view?usp=sharing

Для приведенных выше данных у меня есть сценарий ниже

 from sklearn.linear_model import LogisticRegression
import pandas as pd
import numpy as np

data = pd.read_csv("test2.csv")
data.head()

X = data[["Business Exp", "Year of Founded", "Previous/Current Loan"]]
Y = data["OUTPUT"]

clf = LogisticRegression()
clf.fit(X, Y)

test_x2 = np.array([[9, 2017, 0]])
Y_pred = clf.predict(test_x2)
print(Y_pred)
 

Я передаю тестовые данные test_x2 . Тестовые данные: если бизнес-опыт равен 9, год основания-2017, а текущий/предыдущий кредит отсутствует, это означает, что кредит будет предоставлен. Таким образом, он должен предсказывать, и результат должен быть 1 , но он показывает 0. Есть ли какие-либо проблемы с кодом или набором данных. Поскольку я новичок в машинном обучении и все еще изучаю его, я создал этот пользовательский набор данных для своего собственного понимания.

Пожалуйста, кто-нибудь может дать несколько хороших предложений. Спасибо

Комментарии:

1. Если у вас есть точные критерии для определения того, одобрен ли кредит, почему вы используете машинное обучение? if biz_exp > 7 and founded > 2015 and prior_loans == 0 следует точно «предсказать», будет ли одобрен кредит.

2. @TomMcLean Можете ли вы, пожалуйста, предложить любую другую модель

3. @ddejohn У меня есть много других параметров с большим количеством значений для них. Я не хочу начинать с большого объема данных, поэтому я просто начинаю с меньшего количества данных, чтобы у меня было хорошее понимание

4. Ну, модель машинного обучения никогда не бывает точной. Какие еще тесты вы проводили? Вы проверили кривую ROC ? Возможно, ваша модель работает лучше, чем вы думаете?

5. OP, смотрите эту статью для других моделей бинарной классификации, которые вы могли бы изучить.

Ответ №1:

Вы должны использовать StandardScaler() в конвейере

 from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
import pandas as pd
import numpy as np

data = pd.read_csv("test2.csv")
data.head()

X = data[["Business Exp", "Year of Founded", "Previous/Current Loan"]]
Y = data["OUTPUT"]

clf = make_pipeline(StandardScaler(), LogisticRegression())
clf.fit(X, Y)

test_x2 = np.array([[9, 2017, 0]])
Y_pred = clf.predict(test_x2)
 
 print("prediction = ", Y_pred.item())
prediction =  1
print("score = ", clf.score(X, Y))
score =  0.95535
 

Комментарии:

1. Просто хотел узнать, как мы можем напечатать, насколько точна модель?

2. Используйте функцию оценки.