Логистическая регрессия, второй столбец матрицы путаницы показывает нули - PullRequest
0 голосов
/ 22 мая 2018

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

array([[1006,    0],
   [ 125,    0]])

Это был тот случай, когда я пытался реализовать линейную регрессию на других данных.Вот код:

# importing dataset
dataset = pd.read_csv('/home/stayal0ne/Machine-learning/datasets/bank.csv', sep=';')
dataset['age'] = dataset['age'].astype(float)
dataset['balance'] = dataset['balance'].astype(float)
X = dataset.iloc[:, [0, 5]].values
y = dataset.iloc[:, -1].values

# splitting the dataset into the training and test sets
X_train, X_test, y_train, y_test = train_test_split(
        X, y, test_size=0.25, random_state=42)

# encoding categorial data
label_encoder_y = LabelEncoder()
y = label_encoder_y.fit_transform(y)

# feature scaling
scale = StandardScaler()
X_train = scale.fit_transform(X_train)
X_test = scale.transform(X_test)

# Fitting classifier into the training set
classifier = LogisticRegression(random_state=42)
classifier.fit(X_train, y_train)

# Prediction
y_predicted = classifier.predict(X_test)

# Checking the accuracy
con_matrix = confusion_matrix(y_test, y_predicted)

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Документация матрицы путаницы:

По определению запись i, j в матрице путаницы - это число наблюдений, фактически находящихся в группе i, но прогнозируемое длябыть в группе j.

Так что, в вашем примере, у вас есть 1006 выборок класса 0, которые, как предсказывают, будут в классе 0, и 125 выборок класса 1, как предсказывают, будут в классе 0.

Это означает, что ваша модель предсказывает каждую выборку вашего набора тестов в вашем классе 0.

0 голосов
/ 22 мая 2018

массив из con_matrix выглядит следующим образом: tn, fp, fn, tp.

ваш истинный минус - 1006, то есть люди, которые, по мнению модели, не могут купить дом, и ваши ложныеположительное значение равно 0, что означает, что ваша модель не предсказывала, что кто-то может купить дом, а не может на самом деле.

Ваш ложный отрицательный показатель равен 125, что означает, что эти люди в действительности могут позволить себекупить дом, но ваша модель говорит, что они могут.и ваш истинный положительный результат также равен 0, что означает, что ваша модель неправильно предсказала человека, который может позволить себе купить дом, как человека, который действительно может.

МОЕ общее предположение, что у вас может быть многолюди, которые не могут купить дом, сравнивают с теми, кто может, и, вероятно, функции (баланс в банке, возраст) похожи на оба.

Я бы посоветовал вам добавить параметры class_weight, если вы используете набор данныхнесбалансирован, если метка класса равна 0 для невозможности купить дом, то установите {0: 0,1}, если у вас есть 90 записей о невозможности купить дом и 10 записей о возможности купить дом

...