我有一个具有一个特征(信用余额)的训练集 - 数字在 0-20,000 之间变化。响应为 0(默认 = 否)或 1(默认 = 是)。这是使用逻辑函数生成的模拟训练集。供参考,可在此处获得。
下面的箱线图分别显示了 default=yes 和 default=no 类的余额分布 -
以下是数据分布——
此外,数据集与每个响应类的 50% 数据完美平衡。所以它是一个适合应用逻辑回归的经典案例。但是,在应用逻辑回归时,得分为 0.5,因为仅预测 y=1。以下是应用逻辑回归的方式 -
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression().fit(df[['Balance']],df['Default'])
clf.score(df[['Balance']], df['Default'])
这证明逻辑回归拟合这些数据的方式一定有问题。但是,当平衡功能被缩放时,分数提高到 87.5%。那么缩放是否在这里起作用?
编辑:为什么缩放在这里起作用?sklearn 中的Logistic Regression文档说lbfgs
求解器对未缩放的数据具有鲁棒性。