我想使用逻辑回归来查看银行账户余额、人的年龄与购买房屋能力之间的相关性。在实现我的回归模型后,我得到了如下类型的混淆矩阵:
array([[1006, 0], [ 125, 0]])
这是我在尝试对其他数据实施线性回归时的情况。以下是代码:
# 导入数据集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]].valuesy = dataset.iloc[:, -1].values# 将数据集分为训练集和测试集X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.25, random_state=42)# 编码分类数据label_encoder_y = LabelEncoder()y = label_encoder_y.fit_transform(y)# 特征缩放scale = StandardScaler()X_train = scale.fit_transform(X_train)X_test = scale.transform(X_test)# 将分类器拟合到训练集classifier = LogisticRegression(random_state=42)classifier.fit(X_train, y_train)# 预测y_predicted = classifier.predict(X_test)# 检查准确性con_matrix = confusion_matrix(y_test, y_predicted)
任何帮助都将不胜感激。
回答:
con_matrix 数组如下,tn, fp, fn, tp。
你的真负样本有1006个,这意味着模型认为这些人无法买房,而你的假阳性为0,这意味着你的模型没有预测任何人能够买房,而实际上他们不能。
你的假阴性为125,这意味着这些人在现实中能够买得起房,但你的模型却说他们不能。而你的真阳性也是0,这意味着你的模型没有正确预测出那些能够买得起房的人为实际上能买得起的人。
我的总体猜测是,你的数据集中可能有很多无法买房的人与能买房的人相比,可能是由于特征(银行余额、年龄)在两者之间相似所致。
我建议你添加class_weight参数,以防数据集不平衡,如果类标签为0表示无法买房,那么在你有90条无法买房的记录和10条能够买房的记录的情况下,设置{0: 0.1}。