工具 hscredit.utils
随机种子、pickle IO、数据描述、Pandas 扩展(df.summary() / df.save() /
df.show())、日志等通用工具。import hscredit 时自动注册 Pandas 扩展方法。
工具函数模块.
提供常用的工具函数,包括随机种子设置、数据IO、特征描述、分箱表美化展示、环境初始化、日志管理等。
- hscredit.utils.seed_everything(seed, freeze_torch=False)[源代码]
固定当前环境随机种子,以保证后续实验可重复。
- 参数:
seed (int) -- 随机种子
freeze_torch (bool) -- 是否固定 pytorch 的随机种子
参考样例
>>> seed_everything(42) >>> seed_everything(42, freeze_torch=True)
- hscredit.utils.load_pickle(file, engine='auto', compression=None)[源代码]
导入 pickle 文件。
支持多种序列化引擎(joblib/dill/cloudpickle/pickle)和压缩格式 (gzip/bz2/xz/lz4/zstd)。支持根据文件扩展名自动检测。
- 参数:
file (str | Path) -- pickle 文件路径,支持 .pkl, .pkl.gz, .joblib, .dill 等格式
engine (str) -- 使用的序列化引擎,可选: - 'auto': 自动检测(根据文件内容和扩展名推断,默认) - 'joblib': 使用 joblib(推荐用于 numpy/scipy/sklearn 对象) - 'dill': 使用 dill(支持 lambda、嵌套函数等复杂对象) - 'cloudpickle': 使用 cloudpickle(常用于分布式计算如 PyTorch/Spark) - 'pickle': 使用标准库 pickle
compression (str | None) -- 压缩格式,可选: - None: 根据文件扩展名自动检测(.gz/.bz2/.xz/.lz4/.zst) - 'gzip'/'gz': gzip 压缩 - 'bz2': bzip2 压缩 - 'xz': xz/lzma 压缩 - 'lz4': lz4 压缩(需安装 lz4) - 'zstd'/'zstandard': zstd 压缩(需安装 zstandard)
- 返回:
反序列化后的对象
- 返回类型:
Any
参考样例
>>> data = load_pickle('model.pkl') >>> data = load_pickle('model.pkl.gz') >>> data = load_pickle('model.dill', engine='dill') >>> data = load_pickle('model.pkl', engine='cloudpickle') >>> data = load_pickle('model.pkl', compression='gzip')
- hscredit.utils.save_pickle(obj, file, engine='joblib', compression=None, compression_level=None, protocol=None)[源代码]
保存数据至 pickle 文件。
支持多种序列化引擎(joblib/dill/cloudpickle/pickle)和压缩格式 (gzip/bz2/xz/lz4/zstd),可处理大型模型和复杂对象。
- 参数:
obj (Any) -- 需要保存的数据对象
file (str | Path) -- 文件路径,建议扩展名 .pkl, .joblib, .dill 等
engine (str) -- 使用的序列化引擎,可选: - 'joblib': joblib(默认,推荐用于 numpy/scipy/sklearn 对象) - 'dill': dill(支持 lambda、嵌套函数等复杂对象) - 'cloudpickle': cloudpickle(常用于分布式计算) - 'pickle': 标准库 pickle
compression (str | None) -- 压缩格式,可选: - None: 不压缩(默认) - 'gzip'/'gz': gzip 压缩(兼容性好) - 'bz2': bzip2 压缩(压缩率高但较慢) - 'xz': xz/lzma 压缩(最高压缩率) - 'lz4': lz4 压缩(速度最快,需安装 lz4) - 'zstd'/'zstandard': zstd 压缩(速度与压缩率平衡,需安装 zstandard) - 'auto': 根据文件扩展名自动选择
compression_level (int | None) -- 压缩级别(1-9,数字越大压缩率越高,默认取决于压缩算法)
protocol (int | None) -- pickle 协议版本(默认使用最高可用版本)
- 返回:
保存的文件路径
- 返回类型:
str
参考样例
>>> save_pickle(model, 'model.pkl') >>> save_pickle(lambda_func, 'func.dill', engine='dill') >>> save_pickle(model, 'model.pkl', engine='cloudpickle') >>> save_pickle(model, 'model.pkl.gz') >>> save_pickle(model, 'model.pkl', compression='zstd', compression_level=3) >>> save_pickle(model, 'model.pkl.xz', compression='xz')
- class hscredit.utils.ArtifactSerializableMixin[源代码]
基类:
objecthscredit 完整对象制品序列化混入类.
子类无需实现额外方法即可获得统一持久化能力。制品中同时记录对象类型、 制品类别和协议版本,加载时会校验目标类型,避免误加载其他对象。
- artifact_kind = '通用制品'
- classmethod load_artifact(file, engine='auto', compression=None, **kwargs)[源代码]
加载并校验完整 hscredit 对象.
为兼容旧文件,也接受直接保存、未包装制品元数据的对象。
- 参数:
file (str | Path)
engine (str)
compression (str | None)
- 返回类型:
T
- save_artifact(file, engine='joblib', compression=None, **kwargs)[源代码]
保存完整 hscredit 对象.
- 参数:
file (str | Path) -- 输出文件路径
engine (str) -- joblib、pickle、dill 或 cloudpickle
compression (str | None) -- 可选压缩格式
kwargs -- 传递给
hscredit.utils.save_pickle()
- 返回:
保存后的文件路径
- 返回类型:
str
- class hscredit.utils.ParallelBudget(available, depth)[源代码]
基类:
object并行执行上下文中的可用预算。
- 参数
available: 当前调用可使用的最大并行预算。 depth: 当前调用所在的嵌套深度。
- 属性
available: 正整数并行预算。 depth: 非负嵌套深度。
- 参考样例
ParallelBudget(available=4, depth=1)表示第一层 worker 可使用 4 个工作预算。
- 参数:
available (int)
depth (int)
- available: int
- depth: int
- class hscredit.utils.ParallelExecutionPlan(requested_workers, workers, backend, adaptive, estimated_work, data_bytes, child_budget, operation)[源代码]
基类:
object一次并行调用的只读有效执行计划。
- 参数:
requested_workers (int)
workers (int)
backend (str | None)
adaptive (bool)
estimated_work (float)
data_bytes (int)
child_budget (int)
operation (str)
- requested_workers: int
- workers: int
- backend: str | None
- adaptive: bool
- estimated_work: float
- data_bytes: int
- child_budget: int
- operation: str
- class hscredit.utils.ParallelWorkload(task_count, rows=1, columns=1, data_bytes=0, cost_per_item=1.0, capability='process_safe', releases_gil=False, has_parallel_children=False, auto_max_workers=None, operation='批量任务')[源代码]
基类:
object描述一次批量运算的规模和安全执行能力。
- 参数:
task_count (int)
rows (int)
columns (int)
data_bytes (int)
cost_per_item (float)
capability (str)
releases_gil (bool)
has_parallel_children (bool)
auto_max_workers (int | None)
operation (str)
- auto_max_workers: int | None = None
- capability: str = 'process_safe'
- columns: int = 1
- cost_per_item: float = 1.0
- data_bytes: int = 0
- property estimated_work: float
返回不依赖运行时计时的确定性工作量估计。
- has_parallel_children: bool = False
- operation: str = '批量任务'
- releases_gil: bool = False
- rows: int = 1
- task_count: int
- class hscredit.utils.ParallelizableMixin[源代码]
基类:
object为估计器提供统一并行执行入口的内部混入类。
- n_jobs: int | float | None
- parallel_backend: str | None
- parallel_config: Mapping[str, Any] | None
- hscredit.utils.parallel_execute(function, tasks, *, n_jobs=-1, parallel_backend=None, parallel_config=None, task_labels=None, default_backend=None, has_parallel_children=False, workload=None, preserve_exceptions=False)[源代码]
按提交顺序执行任务,并在线程和进程间传播并行预算。
- 参数:
function (Callable[[Task], Result])
tasks (Iterable[Task])
n_jobs (int | float | None)
parallel_backend (str | None)
parallel_config (Mapping[str, Any] | None)
task_labels (Iterable[Any] | None)
default_backend (str | None)
has_parallel_children (bool)
workload (ParallelWorkload | None)
preserve_exceptions (bool)
- 返回类型:
List[Result]
- hscredit.utils.plan_parallel_execution(n_jobs, workload, *, parallel_backend=None, parallel_config=None, default_backend=None, cpu_count=None, available_budget=None)[源代码]
根据用户预算和工作负载生成确定性的有效执行计划。
- 参数:
n_jobs (int | float | None)
workload (ParallelWorkload)
parallel_backend (str | None)
parallel_config (Mapping[str, Any] | None)
default_backend (str | None)
cpu_count (int | None)
available_budget (int | None)
- 返回类型:
- hscredit.utils.resolve_n_jobs(n_jobs, task_count=None, *, cpu_count=None, available_budget=None)[源代码]
解析并行工作数。
-1大约使用物理 CPU 的 80%,并在多核环境中保留一个 CPU。 正整数表示固定工作数,0到1之间的小数表示物理 CPU 比例。- 参数:
n_jobs (int | float | None)
task_count (int | None)
cpu_count (int | None)
available_budget (int | None)
- 返回类型:
int | None
- hscredit.utils.resolve_native_workers(n_jobs, native_workers=None)[源代码]
统一解析
thread_count、num_workers等原生线程参数。- 参数:
n_jobs (int | float | None)
native_workers (int | None)
- 返回类型:
int
- hscredit.utils.split_parallel_budget(available, task_count, has_parallel_children)[源代码]
计算当前层和真实并行子层的工作预算。
- 参数:
available (int)
task_count (int)
has_parallel_children (bool)
- 返回类型:
Tuple[int, int]
- hscredit.utils.validate_parallel_config(parallel_backend, parallel_config)[源代码]
校验 joblib 并行配置并返回独立的配置字典。
工作数和后端由公共参数统一管理,不能在
parallel_config中重复声明。backend_kwargs用于承载后端专属参数,且会复制为独立字典。- 参数:
parallel_backend (str | None)
parallel_config (Mapping[str, Any] | None)
- 返回类型:
Dict[str, Any]
- hscredit.utils.feature_describe(data, feature=None, percentiles=None, missing=None, cardinality=None)[源代码]
特征描述统计(数值型与类别型自动区分)。
对数值型特征输出 样本数/非空数/查得率/最小值/平均值/各分位数/最大值; 对类别型特征(或唯一值数 ≤
cardinality)输出 样本数/非空数/查得率 及各取值占比。- 参数:
data (DataFrame) -- 输入数据,
DataFrame``(需配合 ``feature指定列)或单列Seriesfeature (str | None) -- 特征列名,仅当
data为 DataFrame 时需要; 为 None 时把data整体当作 Series 处理percentiles (List[float] | None) -- 分位数列表(0~1 之间),默认
[0.01, 0.02, 0.03, 0.05, 0.1, 0.2, ..., 0.95, 0.97, 0.98, 0.99]missing -- 缺失值标记(标量或列表),统计前会被替换为
np.nan;默认 None 不替换cardinality (int | None) -- 基数阈值(正整数),唯一值数 ≤ 该值时强制按类别型统计; 默认 None 表示仅按 dtype 判断
- 返回:
描述统计结果
Series``(``name为特征名)- 抛出:
ValueError --
feature不在data列中,或cardinality< 1 时- 返回类型:
Series
参考样例
>>> feature_describe(df, feature='age') # 指定列 >>> feature_describe(df['age']) # 直接传 Series >>> feature_describe(df, feature='city', cardinality=20) # 强制按类别统计 >>> feature_describe(df, feature='income', missing=-999) # -999 视为缺失
- hscredit.utils.groupby_feature_describe(data, by=None, n_jobs=-1, parallel_backend=None, parallel_config=None, **kwargs)[源代码]
按分组进行特征描述统计。
- 参数:
data (DataFrame) -- 数据DataFrame
by -- 分组字段或字段列表
n_jobs (int) -- 并行任务数,-1 根据数据规模自动选择
parallel_backend (str | None) -- joblib 后端;默认使用避免复制字符串列的线程后端
parallel_config (Dict[str, Any] | None) -- joblib 扩展配置
kwargs -- 传递给feature_describe的其他参数
- 返回:
描述统计结果DataFrame
- 返回类型:
DataFrame
参考样例
>>> groupby_feature_describe(df, by='gender') >>> groupby_feature_describe(df, by=['gender', 'age_group'])
- hscredit.utils.germancredit()[源代码]
加载德国信贷数据集 German Credit Data。
数据来源:https://archive.ics.uci.edu/dataset/144/statlog+german+credit+data
- 返回:
pd.DataFrame
参考样例
>>> df = germancredit() >>> print(df.shape) (1000, 21)
- hscredit.utils.round_float(num, decimal=4)[源代码]
调整数值分箱的上下界小数点精度,如未超出精度保持原样输出。
- 参数:
num -- 分箱的上界或者下界
decimal (int) -- 小数点保留的精度
- 返回:
精度调整后的数值
参考样例
>>> round_float(3.14159265, decimal=4) 3.1416
- hscredit.utils.reload(module_name)[源代码]
在jupyter中强制重载模块,忽略所有缓存
- 参数:
module_name -- 模块名称
- 返回:
重新导入的模块
参考样例
>>> import hscredit.utils.misc >>> hscredit.utils.misc.reload('hscredit.utils.misc') <module 'hscredit.utils.misc' from '...'>
- hscredit.utils.trapz(y, x=None, dx=1.0, axis=-1)[源代码]
梯形法则数值积分(跨 NumPy 版本兼容).
NumPy 2.0 起将
np.trapz重命名为np.trapezoid,旧名在 2.0 中弃用、 在更高版本中移除。本函数按版本自动选择可用实现,保证在新旧 NumPy 下行为一致。- 参数:
y -- 被积函数值数组
x -- 采样点坐标,可选
dx -- 采样间隔(x 未提供时使用),默认 1.0
axis -- 积分所沿的轴,默认 -1
- 返回:
积分结果
参考样例
>>> import numpy as np >>> from hscredit.utils import trapz >>> trapz([0, 1, 1], [0, 0.5, 1.0]) 0.75
- hscredit.utils.init_setting(font_path=None, seed=None, freeze_torch=False, logger=False, **kwargs)[源代码]
初始化环境配置。
去除警告信息、修改 pandas 默认配置、固定随机种子。
- 参数:
font_path -- 画图时图像使用的字体,支持系统已注册字体名称或本地
.ttf字体文件路径;为 None 时自动安装并使用包内置字体,安装不可用时回退到“楷体”seed -- 随机种子,默认为 None(不固定)。非 None 时调用
seed_everything()freeze_torch -- 是否同时固定 PyTorch 随机种子,默认 False(仅 seed 非 None 时生效)
logger -- 是否返回一个日志器,默认为 False
kwargs -- 当 logger 为 True 时传给
logging.getLogger的参数
- 返回:
当 logger 为 True 时返回
logging.Logger,否则返回 None
注意
本函数在
import hscredit时被自动调用,会尝试将内置字体安装到当前用户字体目录, 全局执行warnings.filterwarnings("ignore")屏蔽所有警告,并修改 pandas/matplotlib 全局配置。 字体安装失败不会阻断导入,系统不存在品牌字体时将回退到“楷体”。参考样例
>>> from hscredit.utils import init_setting >>> init_setting() # 默认配置(内置中文字体) >>> init_setting(seed=42) # 同时固定随机种子 >>> init_setting(font_path='SimHei') # 指定系统字体 >>> logger = init_setting(logger=True) # 返回日志器
- hscredit.utils.install_bundled_font(force=False, system=None)[源代码]
安装 hscredit 内置字体到当前用户字体库.
- 参数:
force (bool) -- 是否强制覆盖已有字体文件
system (str | None) -- 操作系统名称,仅用于测试或显式覆盖自动识别结果
- 返回:
(安装路径, 是否实际更新字体文件)- 返回类型:
Tuple[Path, bool]
- hscredit.utils.init_logger(name='hscredit', level=20, log_file=None, format=None, console=True)[源代码]
初始化日志记录器。
- 参数:
name (str) -- logger 名称,默认为 "hscredit"
level (int) -- 日志级别,默认为 logging.INFO
log_file (str) -- 日志文件路径,默认为 None(不写入文件)
format (str) -- 日志格式,默认为 "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
console (bool) -- 是否输出到控制台,默认为 True
- 返回:
配置好的 logger 对象
- 返回类型:
Logger
参考样例
>>> from hscredit.utils import init_logger >>> logger = init_logger() # 控制台 INFO 日志 >>> logger = init_logger(level=10) # DEBUG 级别 >>> logger = init_logger(log_file='logs/run.log') # 同时写入文件 >>> logger.info("模型训练开始")
- hscredit.utils.get_logger(name='hscredit')[源代码]
获取已存在的 logger(
logging.getLogger的轻封装)。- 参数:
name (str) -- logger 名称,默认
"hscredit"。应与init_logger()创建时使用的名称一致,以复用其 handler 配置- 返回:
对应名称的
logging.Logger对象- 返回类型:
Logger
参考样例
>>> from hscredit.utils import init_logger, get_logger >>> init_logger(name='hscredit') >>> logger = get_logger('hscredit') # 在其他模块复用同一 logger
- hscredit.utils.style_bin_table(df, max_rows=None, highlight_iv=True, highlight_bad_rate=True, highlight_lift=True, highlight_ks=True, compact=False, precision=None, index_as_bin=False, percent_format=True, high_tech_style=False)[源代码]
美化分箱表展示.
使用 pandas Styler 对分箱表进行格式化和高亮,使其在 Jupyter 中更易读。
- 参数:
df (DataFrame) -- 分箱统计表 DataFrame
max_rows (int | None) -- 最大显示行数,None 表示显示全部
highlight_iv (bool) -- 是否高亮 IV 值
highlight_bad_rate (bool) -- 是否高亮坏样本率(进度条)
highlight_lift (bool) -- 是否高亮 LIFT 值(进度条)
highlight_ks (bool) -- 是否高亮 KS 值(进度条)
compact (bool) -- 是否使用紧凑模式(隐藏部分列)
precision (Dict[str, int] | None) -- 自定义小数位数,格式为 {'列名': 位数}
index_as_bin (bool) -- 是否将分箱作为索引显示
percent_format (bool) -- 是否将百分比相关列显示为百分比格式(默认True)
high_tech_style (bool) -- 是否使用高科技/AI风格样式
- 返回:
格式化后的 Styler 对象
- 返回类型:
Any
参考样例
>>> table = feature_bin_stats(data, 'score', target='target') >>> style_bin_table(table).show()
- hscredit.utils.style_rule_table(df, overall_badrate=None, precision=None)[源代码]
美化决策树规则表展示。
使用 pandas Styler 对规则表进行格式化、高亮和颜色标注, 使其在 Jupyter 中更易读。
- 参数:
df (DataFrame) --
规则表 DataFrame,兼容两种来源:
ManualTreeExtractor.get_rule_table()/report()的报告格式 (节点编号、是否叶子、指标含义、样本总数、样本占比、坏样本率、LIFT值、…)旧版精简格式(节点编号、是否叶子、规则表达式、样本数、坏账率、LIFT值、…)
overall_badrate (float | None) -- 全局坏样本率(用于计算颜色梯度),默认从数据推断
precision (dict | None) -- 自定义小数位数,格式为 {'列名': 位数}
- 返回:
格式化后的 Styler 对象
- 返回类型:
Any
参考样例
>>> from hscredit.report.mining import ManualTreeExtractor >>> ext = ManualTreeExtractor(target='IS_BAD') >>> ext.fit(df, features=['age', 'income']) >>> styled = style_rule_table(ext.get_rule_table()) >>> styled.show()
- class hscredit.utils.BinTableDisplay(df)[源代码]
基类:
object分箱表展示器.
提供链式调用接口,方便在 Jupyter 中展示美观的分箱表。
参考样例
>>> table = feature_bin_stats(data, 'score', target='target') >>> table.show() >>> table.show(compact=True) >>> table.show(highlight_iv=False)
- 参数:
df (pd.DataFrame)
- highlight_bins(bins, color='#e3f2fd')[源代码]
高亮指定的分箱行.
- 参数:
bins (int | List[int]) -- 要高亮的分箱索引或索引列表
color (str) -- 高亮颜色
- 返回:
self,支持链式调用
- 返回类型:
- show(max_rows=None, highlight_iv=True, highlight_bad_rate=True, highlight_lift=True, highlight_ks=True, compact=False, precision=None, index_as_bin=False, percent_format=True, high_tech_style=False, **kwargs)[源代码]
展示美化的分箱表.
- 参数:
max_rows (int | None) -- 最大显示行数
highlight_iv (bool) -- 是否高亮 IV 值
highlight_bad_rate (bool) -- 是否高亮坏样本率
highlight_lift (bool) -- 是否高亮 LIFT 值
highlight_ks (bool) -- 是否高亮 KS 值
compact (bool) -- 是否使用紧凑模式
precision (Dict[str, int] | None) -- 自定义小数位数
index_as_bin (bool) -- 是否将分箱作为索引显示
percent_format (bool) -- 是否将百分比相关列显示为百分比格式(默认True)
high_tech_style (bool) -- 是否使用高科技/AI风格样式
kwargs -- 其他参数
- 返回:
self,支持链式调用
- 返回类型:
- hscredit.utils.register_extensions()[源代码]
注册 pandas DataFrame/Series 扩展方法.
在导入 hscredit 时自动调用,将以下方法添加到 pandas: - df.summary(): 综合特征描述统计 - df.eda_info(): EDA基础信息 - df.missing_analysis(): 缺失值分析 - df.show(): 美化展示分箱表 - df.save(): 保存到Excel - s.summary(): 单字段综合特征描述统计 - s.save(): Series保存到Excel - df/s/groupby.hscredit.apply() / hscredit(...).apply(): 严格单次并行 apply
幂等:重复调用不会重复注册(已存在同名属性时跳过)。导入 hscredit 时已自动执行, 通常无需手动调用。
参考样例
>>> import pandas as pd >>> import hscredit # 导入即自动注册扩展 >>> >>> df = pd.DataFrame({'age': [25, 40], 'target': [0, 1]}) >>> summary = df.summary(y='target') >>> df.save("report.xlsx") >>> default_result = df.hscredit.apply(func, axis=1) >>> result = df.hscredit(n_jobs=-1, bar=False).apply(func, axis=1)
- class hscredit.utils.HSCreditApplyProxy(_obj, n_jobs=-1, bar=True, parallel_backend=None, parallel_config=None)[源代码]
基类:
object保存一次 pandas apply 调用的并行配置。
- 参数
_obj: DataFrame、Series 或相应的 GroupBy 对象。 n_jobs: 总并行预算,默认
-1表示自动使用约 80% 的物理核心。 bar: 是否显示按真实完成项累计的进度条。 parallel_backend: 可选的 joblib 后端;未指定时按 callable 能力静态选择。 parallel_config:batch_size、timeout等统一并行运行参数。- 属性
所有配置均只属于当前代理;创建代理不会修改原 pandas 对象。
- 参考样例
df.hscredit.apply(func, axis=1)df.hscredit(n_jobs=-1, bar=True).apply(func, axis=1)
- 参数:
_obj (Any)
n_jobs (Any)
bar (bool)
parallel_backend (str | None)
parallel_config (Mapping[str, Any] | None)
- bar: bool = True
- n_jobs: Any = -1
- parallel_backend: str | None = None
- parallel_config: Mapping[str, Any] | None = None
- hscredit.utils.create_hscredit_apply_proxy(self, n_jobs=-1, bar=True, parallel_backend=None, parallel_config=None)[源代码]
为当前 pandas 对象创建独立的 apply 配置代理。
此函数由 pandas 对象的
hscredit访问器调用。它只保存配置,不读取样本、 不调用用户函数,也不会改变原对象。- 参数:
bar (bool)
parallel_backend (str | None)
parallel_config (Mapping[str, Any] | None)
- 返回类型:
- hscredit.utils.check_xy_inputs(X, y=None, target='target', accept_numpy=True)[源代码]
统一检查并处理 X 和 y 输入(适配双 API 调用风格)。
支持两种 API 风格,并按
传入的 y > 从 X 提取 target 列的优先级确定目标变量:sklearn 风格:
fit(X, y),X、y 分别传入scorecardpipeline 风格:
fit(df),目标列包含在 df 中、由target指定
- 参数:
X (ndarray | DataFrame | Series | List) -- 输入数据,
DataFrame或 numpy 数组(自动转为 DataFrame)y (ndarray | Series | List | None) -- 目标变量(可选),提供时优先于从 X 提取 target 列
target (str) -- 目标列名,当
y为 None 时从 X 中提取,默认'target'accept_numpy (bool) -- 是否接受 numpy 数组输入,默认 True
- 返回:
三元组
(X_df, y_series, feature_names):X_df(DataFrame):处理后的特征数据y_series(Series):目标变量feature_names(list):特征名称列表
- 抛出:
InputValidationError -- X 与 y 长度不匹配,或数据为空时
FeatureNotFoundError -- y 为 None 且 X 中无
target列时InputTypeError -- 输入类型不受支持时
- 返回类型:
Tuple[DataFrame, Series, List[str]]
参考样例
>>> # sklearn 风格 >>> X_df, y_series, features = check_xy_inputs(X_train, y_train) >>> >>> # scorecardpipeline 风格 >>> X_df, y_series, features = check_xy_inputs(df, target='target')
- hscredit.utils.convert_to_dataframe(X, columns=None)[源代码]
将输入转换为 DataFrame。
支持
DataFrame/ numpy 数组(1 维或 2 维)/Series/list/tuple。 1 维输入转为单列 DataFrame;DataFrame 与 Series 会复制后返回。- 参数:
X (ndarray | DataFrame | Series | List) -- 输入数据,不能为 None
columns (List[str] | None) -- 列名列表,仅当 X 不是 DataFrame 时使用;为 None 时自动生成
feature_0、feature_1…
- 返回:
转换后的
DataFrame- 抛出:
InputValidationError -- X 为 None、维度 >2,或列名数量与列数不匹配时
InputTypeError -- 输入类型不受支持时
- 返回类型:
DataFrame
参考样例
>>> df = convert_to_dataframe(np.array([[1, 2], [3, 4]]), columns=['a', 'b']) >>> df = convert_to_dataframe([[1, 2], [3, 4]])
- hscredit.utils.extract_target_from_df(df, target='target', drop=True)[源代码]
从 DataFrame 中提取目标变量。
- 参数:
df (DataFrame) -- 输入
DataFrametarget (str) -- 目标列名,默认
'target'drop (bool) -- 是否从返回的特征表中删除
target列,默认 True
- 返回:
二元组
(X, y),X为特征 DataFrame,y为目标 Series- 抛出:
InputTypeError -- 输入不是 DataFrame 时
FeatureNotFoundError --
target列不存在时
- 返回类型:
Tuple[DataFrame, Series]
参考样例
>>> X, y = extract_target_from_df(df, target='target') >>> X, y = extract_target_from_df(df, target='label', drop=False)
- hscredit.utils.check_array_1d(arr, name='array')[源代码]
检查并转换为一维
Series。- 参数:
arr (ndarray | DataFrame | Series | List) -- 输入数组,
ndarray/Series/list/tuple; 二维数组会被展平为一维name (str) -- 数组名称,用于生成错误信息与 Series 名称,默认
'array'
- 返回:
一维
Series- 抛出:
InputValidationError -- 数组为空时
InputTypeError -- 类型不受支持时
- 返回类型:
Series
参考样例
>>> s = check_array_1d([0, 1, 1, 0], name='y')
- hscredit.utils.get_feature_dtypes(X)[源代码]
获取特征的数据类型分类(数值型 / 类别型)。
- 参数:
X (DataFrame) -- 特征
DataFrame- 返回:
字典,含三个键:
'numeric':数值型特征名列表(int/uint/float 各精度)'categorical':非数值型特征名列表(object、category、bool 等)'all':全部特征名列表
- 返回类型:
dict
参考样例
>>> dtypes = get_feature_dtypes(df) >>> numeric_features = dtypes['numeric'] >>> categorical_features = dtypes['categorical']
- hscredit.utils.check_missing_values(X, y=None, raise_error=False)[源代码]
检查缺失值情况。
- 参数:
X (DataFrame) -- 特征
DataFramey (Series | None) -- 目标 ``Series``(可选),提供时一并统计其缺失情况
raise_error (bool) -- 存在缺失值时是否抛出异常,默认 False(仅统计不报错)
- 返回:
缺失值统计字典,含键
X_missing``(总缺失数)、 ``X_missing_by_col``(各列缺失数)、``X_missing_ratio``(整体缺失率); 当 ``y非 None 时另含y_missing、y_missing_ratio- 抛出:
InputValidationError --
raise_error=True且 X 或 y 存在缺失值时- 返回类型:
dict
参考样例
>>> stats = check_missing_values(X, y) >>> print(stats['X_missing_ratio']) >>> check_missing_values(X, raise_error=True) # 有缺失则报错