首页 > 解决方案 > 逻辑回归,混淆矩阵的第二列显示零

问题描述

我想使用逻辑回归来查看银行账户余额、人的年龄和买房能力之间的相关性。实现我的回归模型后,我得到了类型的混淆矩阵:

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)

任何帮助将不胜感激。

标签: python-3.xmachine-learninglogistic-regression

解决方案


con_matrix 中的数组如下,tn,fp,fn,tp。

你的真阴性是 1006,这意味着模型认为无法买房的人,而你的假阳性是 0,意味着你的模型没有预测到有人能够买房而不能事实上。

你的假阴性是 125,这意味着这些人实际上他们买得起房子,但你的模型说他们可以。并且您的真实阳性也是 0,这意味着您的模型没有正确地将有能力买房的人预测为真正有能力的人。

我的总体猜测是,与可以买房的人相比,您可能有很多人不能买房,而且特征(银行余额,年龄)可能与两者相似。

我建议您添加 class_weight 参数以防您的数据集不平衡,如果类标签为 0 表示无法买房,则设置 {0: 0.1} 以防您有 90 条无法买房的记录房子和能买房的10条记录


推荐阅读