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

Python机器学习贷款审批预测结果错误,如何排查代码与数据集问题

问题原因排查及解决方法

1 优先排查数据集问题

  • 首先检查标注准确性:确认所有同时满足「业务经验>7、成立年份晚于2015、无历史/存续贷款」的样本,OUTPUT列是否都标注为1,其余样本都标注为0。自制数据集最常见的问题就是标注规则不一致,只要存在少量标注错误,就可能导致模型学习方向偏移。
  • 检查样本分布:统计OUTPUT列的取值占比,如果标注为1的正样本占比极低(比如低于10%),模型会倾向于预测占比更高的负类,即使输入符合规则也会输出0。

2 其次排查代码及特征处理问题

你当前的代码存在两个明显的可优化点:

2.1 特征尺度未做统一

逻辑回归是线性模型,对特征尺度非常敏感:你使用的「业务经验」是个位数量级、「成立年份」是四位数量级,模型训练时会被数值更大的年份特征主导,无法正确学习三个特征的权重规则。

2.2 测试数据输入格式不规范

sklearn 1.0及以上版本中,训练时传入带特征名的DataFrame,预测时传入无特征名的numpy数组,会触发特征名匹配警告,极端情况下会导致预测逻辑出错。

修正后的参考代码

from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
import pandas as pd
import numpy as np

# 读取数据
data = pd.read_csv("test2.csv")

# 特征预处理:将年份转换为成立年限,缩小特征尺度差异
data["years_since_founded"] = 2024 - data["Year of Founded"]
X = data[["Business Exp", "years_since_founded", "Previous/Current Loan"]]
Y = data["OUTPUT"]

# 特征标准化,统一尺度
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 训练模型
clf = LogisticRegression()
clf.fit(X_scaled, Y)

# 测试数据做相同的预处理
test_x2_raw = np.array([[9, 2024-2017, 0]])
test_x2_scaled = scaler.transform(test_x2_raw)
Y_pred = clf.predict(test_x2_scaled)
print(Y_pred)

验证方法

运行修正代码后如果输出仍然为0,可以打印模型参数确认学习结果:

print("特征权重:", clf.coef_)
print("截距:", clf.intercept_)

按照你的规则,正常学习后的参数应该满足:业务经验权重为正、成立年限权重为正、贷款状态权重为负。如果参数符号不符合预期,就可以确定是数据集标注错误。


内容的提问来源于stack exchange,提问作者S Andrew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:48:04