You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提升sklearn中LogisticRegression模型的准确率?当前准确率仅0.712

提升LogisticRegression模型准确率的可行方法

一、先修正代码中的明显错误

你当前代码里的train_test_split(df, y)存在问题:这里的df应该替换为之前定义的特征集x,如果传入整个数据集,会把目标变量y混入训练特征中,造成数据泄露,直接影响模型性能。修正后代码:

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.4, random_state=42)

二、特征工程优化

1. 特征筛选与分布优化

  • 计算特征与目标变量的相关性:用data.corr()生成相关系数矩阵,保留与y相关性较高(绝对值建议≥0.1)的特征,剔除无意义的噪声特征。
  • 修正偏态特征:从数据截图看部分特征可能存在右偏分布,可通过对数变换(np.log1p())或Box-Cox变换让特征更接近正态分布,适配Logistic回归的线性假设。
  • 类别特征编码:如果存在类别型特征(如截图中部分离散值特征),需用独热编码(OneHotEncoder)或目标编码(TargetEncoder)处理,不能直接传入原始类别值。

2. 特征交互与衍生

  • 构造交互项:对相关性较高的特征组合生成交互特征(如A1*A2、A3/A4),弥补Logistic回归无法捕捉非线性关系的缺陷。
  • 统计型衍生:对连续特征做分箱(如将A1划分为低、中、高三档),或针对分组特征计算均值、方差,挖掘数据隐藏规律。

3. 特征缩放

Logistic回归对特征尺度敏感(默认带L2正则化),需对特征做标准化处理:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train)
x_test_scaled = scaler.transform(x_test)

# 使用缩放后的特征训练模型
log_model.fit(x_train_scaled, y_train)

三、模型调优

1. 正则化参数调优

通过网格搜索找到最优正则化强度参数C(C越小,正则化越强):

from sklearn.model_selection import GridSearchCV
param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100]}
grid = GridSearchCV(LogisticRegression(solver='lbfgs', max_iter=1000), param_grid, cv=5)
grid.fit(x_train_scaled, y_train)
print(grid.best_params_)  # 输出最优C值

2. 更换求解器

根据数据规模换用合适的求解器:比如solver='saga'支持L1正则化,适合稀疏特征;solver='liblinear'更适配小数据集,有时能提升收敛效果。

3. 处理类别不平衡

如果目标变量y的类别占比差异大,准确率会失去参考价值,可采取以下措施:

  • 用F1-score、AUC-ROC等指标替代准确率评估模型
  • 在模型中设置class_weight='balanced',让模型自动调整类别权重:
log_model = LogisticRegression(solver='lbfgs', max_iter=1000, class_weight='balanced')
  • 对数据做重采样:用SMOTE算法过采样少数类,或欠采样多数类

四、数据质量检查

  • 缺失值处理:用data.isnull().sum()统计缺失值,对缺失样本/特征做填充(均值、中位数、众数)或删除。
  • 异常值处理:通过箱线图或Z-score识别异常值,删除或修正异常数据,避免干扰模型拟合。

内容的提问来源于stack exchange,提问作者Anh Vu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:35:29