crepes
crepes 是一个专为机器学习打造的 Python 开源库,致力于实现“共形预测”(Conformal Prediction)技术。在传统机器学习中,模型往往只给出一个预测结果却难以量化其可信度,而 crepes 能有效解决这一痛点。它可以将任意标准的分类器或回归器进行封装,把原本单一的预测值转化为具有数学覆盖率保证的预测区间、预测集合,或是校准良好的 P 值与累积分布函数。这意味着用户不仅能知道模型“预测了什么”,还能明确知晓该预测“有多可靠”。
该工具特别适合数据科学家、AI 研究人员以及需要构建高可靠性决策系统的开发者使用。无论是处理医疗诊断、金融风控等对误差容忍度极低的场景,还是在进行严谨的学术研究,crepes 都能提供坚实的理论支撑。
在技术亮点方面,crepes 不仅支持标准和 Mondrian 类型的共形分类与回归,还内置了归一化处理功能以应对不同难度的样本。此外,它提供了专门的模块用于计算非一致性分数,并包含独特的鞅(martingales)工具类,帮助用户验证数据交换性这一核心假设是否成立。通过简单的几行代码,用户即可将普通的随机森林等模型升级为具备不确定性量化能力的强大系统,让 AI 预测更加透明、可信。
使用场景
某制药公司的数据科学团队正在构建一个机器学习模型,用于快速筛选具有生物降解性的新分子结构,以加速环保材料的研发进程。
没有 crepes 时
- 模型仅输出单一的类别预测或概率值,业务部门无法判断该预测在多大程度上是可信的。
- 面对高风险的决策场景(如是否投入昂贵的湿实验验证),缺乏统计学依据来量化预测的不确定性。
- 传统的置信区间往往依赖严格的数据分布假设,而化学分子数据复杂多变,导致评估结果经常失真。
- 难以向合规部门证明模型的可靠性,因为无法提供具有数学保证的覆盖率指标。
使用 crepes 后
- 利用共形预测技术,将原本模糊的概率转化为校准良好的 P 值和预测集合,明确告知哪些分子的分类是高度确定的。
- 为每个预测提供带有严格覆盖率保证的区间,团队可以设定阈值,只对有统计保障的高置信度分子进行后续实验。
- 无需假设数据服从特定分布,crepes 能自适应处理复杂的化学特征数据,生成更稳健的不确定性评估。
- 通过 Mondrian 共形分类器,针对不同难度的分子类别分别校准,显著提升了稀有类别预测的可信度。
crepes 通过将黑盒模型的输出转化为具有数学保证的可信区间,让高风险的科研决策从“凭经验猜测”转变为“按统计行事”。
运行环境要求
未说明
未说明

快速开始
crepes 是一个用于共形预测的 Python 包,它可以在任何标准分类器和回归器之上实现共形分类器、回归器以及预测系统,从而将原始预测转化为校准良好的 p 值和累积分布函数,或具有覆盖率保证的预测集和预测区间。
crepes 包实现了标准和蒙德里安共形分类器,以及标准、归一化和蒙德里安共形回归器和预测系统。虽然该包允许用户使用自己的函数来计算难度估计、非一致性分数和蒙德里安类别,但还有一个名为 crepes.extras 的独立模块,提供了这些方面的若干标准选项。为了检验交换性的基本假设,可以使用 crepes.martingales 模块中的类。
安装
从 PyPI:
pip install crepes
从 conda-forge:
conda install conda-forge::crepes
文档
完整的文档请参阅 crepes.readthedocs.io。
快速入门
让我们以来自 www.openml.org 的数据集为例,说明如何使用 crepes 生成并应用共形分类器。我们首先使用 sklearn 中的 train_test_split 将数据集划分为训练集和测试集,然后进一步将训练集划分为正式训练集和校准集:
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
dataset = fetch_openml(name="qsar-biodeg", parser="auto")
X = dataset.data.values.astype(float)
y = dataset.target.values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)
X_prop_train, X_cal, y_prop_train, y_cal = train_test_split(X_train, y_train,
test_size=0.25)
现在我们将随机森林分类器“包装”起来,将其拟合到正式训练集,并通过 calibrate 方法拟合一个标准共形分类器:
from crepes import WrapClassifier
from sklearn.ensemble import RandomForestClassifier
rf = WrapClassifier(RandomForestClassifier(n_jobs=-1))
rf.fit(X_prop_train, y_prop_train)
rf.calibrate(X_cal, y_cal)
接下来,我们可以为测试集生成 p 值(一个列数等于类别数的数组):
rf.predict_p(X_test)
array([[0.00427104, 0.74842304],
[0.07874355, 0.2950549 ],
[0.50529983, 0.01557963],
...,
[0.8413356 , 0.00201167],
[0.84402215, 0.00654927],
[0.29601955, 0.07766093]])
我们还可以得到预测集,用二进制向量表示,其中 1 表示存在、0 表示不存在与列对应的类标签,在这里置信度为 90%:
rf.predict_set(X_test, confidence=0.9)
array([[0, 1],
[0, 1],
[1, 0],
...,
[1, 0],
[1, 0],
[1, 0]])
由于我们掌握了真实的类标签,因此可以在 99% 的置信度下评估共形分类器(此处使用所有可用指标,这是默认设置):
rf.evaluate(X_test, y_test, confidence=0.99)
{'error': 0.007575757575757569,
'avg_c': 1.6325757575757576,
'one_c': 0.36742424242424243,
'empty': 0.0,
'ks_test': 0.0033578466103315894,
'time_fit': 1.9073486328125e-06,
'time_evaluate': 0.04798746109008789}
为了控制不同目标群体中的错误率,可以使用所谓的蒙德里安共形分类器。蒙德里安共形分类器是通过在 calibrate 方法中提供一个函数或 MondrianCategorizer(定义在 crepes.extras 中),作为名为 mc 的额外参数来构建的。
为了说明,我们将使用底层模型的预测标签来形成类别。请注意,测试对象的预测集是基于相同的分类方式生成的(在后台进行)。
rf_mond = WrapClassifier(rf.learner)
rf_mond.calibrate(X_cal, y_cal, mc=rf_mond.predict)
rf_mond.predict_set(X_test)
array([[0, 1],
[1, 1],
[1, 0],
...,
[1, 0],
[1, 0],
[1, 1]])
条件类共形分类器是蒙德里安共形分类器的一种特殊类型,其类别由真实标签构成;我们可以通过在调用 calibrate 时设置 class_cond=True 来生成一个。
rf_classcond = WrapClassifier(rf.learner)
rf_classcond.calibrate(X_cal, y_cal, class_cond=True)
rf_classcond.evaluate(X_test, y_test, confidence=0.99)
{'error': 0.0018939393939394478,
'avg_c': 1.740530303030303,
'one_c': 0.25946969696969696,
'empty': 0.0,
'ks_test': 0.11458837583733483,
'time_fit': 7.152557373046875e-07,
'time_evaluate': 0.06147575378417969}
当使用归纳式共形预测器时,测试集上的预测 p 值(以及由此产生的误差)并不相互独立。然而,半在线共形预测器可以通过在每次预测后立即更新校准集来使它们相互独立(假设此时已知真实标签)。我们可以通过启用在线校准,即在调用上述方法时设置 online=True,同时提供真实标签,将共形分类器转变为半在线共形分类器,例如:
rf_classcond.predict_p(X_test, y_test, online=True)
array([[8.13837566e-05, 8.86436603e-01],
[6.60518590e-02, 4.02350293e-01],
[4.28646783e-01, 4.29930890e-02],
...,
[7.05118942e-01, 9.45056960e-03],
[7.27003479e-01, 1.27347189e-02],
[1.76403756e-01, 1.21434924e-01]])
同样地,我们也可以在使用在线校准的情况下评估共形分类器:
rf_classcond.evaluate(X_test, y_test, confidence=0.99, online=True)
{'error': 0.007575757575757569,
'avg_c': 1.6117424242424243,
'one_c': 0.38825757575757575,
'empty': 0.0,
'ks_test': 0.14097384777782784,
'time_fit': 1.9073486328125e-06,
'time_evaluate': 0.05298352241516113}
我们还可以说明如何使用 crepes 来生成共形回归模型和预测系统。再次从 www.openml.org 导入数据集,将其分为训练集和测试集,然后将训练集进一步划分为正式训练集和校准集:
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
dataset = fetch_openml(name="house_sales", version=3, parser="auto")
X = dataset.data.values.astype(float)
y = dataset.target.values.astype(float)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)
X_prop_train, X_cal, y_prop_train, y_cal = train_test_split(X_train, y_train,
test_size=0.25)
现在,我们使用 crepes 中的 WrapRegressor 类“包装”来自 sklearn 的 RandomForestRegressor,并按照常规方式将其拟合到正式训练集:
from sklearn.ensemble import RandomForestRegressor
from crepes import WrapRegressor
rf = WrapRegressor(RandomForestRegressor())
rf.fit(X_prop_train, y_prop_train)
接下来,我们可以通过 calibrate 方法利用校准集来拟合共形回归模型:
rf.calibrate(X_cal, y_cal)
此时,共形回归模型可以为测试集生成预测区间,这里我们使用 99% 的置信水平:
rf.predict_int(X_test, confidence=0.99)
array([[1938866.06, 3146372.54],
[ 225335.1 , 1432841.58],
[-403305.49, 804200.99],
...,
[ 443742.33, 1651248.81],
[-343684.48, 863822. ],
[-153629.93, 1053876.55]])
输出是一个 NumPy 数组,每一行对应一个测试样本,两列分别表示每个预测区间的下界和上界。
我们可以要求对区间进行裁剪,以排除不可能的值,在本例中即低于 0 的值;如果同时采用默认的置信水平(0.95),则输出的区间会更加紧凑:
rf.predict_int(X_test, y_min=0)
array([[2302049.84, 2783188.76],
[ 588518.88, 1069657.8 ],
[ 0. , 441017.21],
...,
[ 806926.11, 1288065.03],
[ 19499.3 , 500638.22],
[ 209553.85, 690692.77]])
上述区间并未归一化,也就是说它们的大小都相同(至少在裁剪之前是如此)。我们可以通过使用难度估计来进行归一化,从而使区间更具信息量:被认为更难的对象将被分配到更宽的区间。
为此,我们将使用 crepes.extras 模块中的 DifficultyEstimator。在这里,我们通过计算校准集中每个对象在其正式训练集中 k 个(默认 k=25)最近邻的标签标准差来估计难度。此外,还会向估计值添加一个小的常数 β,该参数可通过函数参数指定;下面我们直接使用默认值,即 β=0.01。
首先拟合难度估计器,然后结合校准对象及其标签以及难度估计器来校准共形回归模型:
from crepes.extras import DifficultyEstimator
de = DifficultyEstimator()
de.fit(X_prop_train, y=y_prop_train)
rf.calibrate(X_cal, y_cal, de=de)
要获得预测区间,只需将测试对象传递给 predict_int 方法即可,因为难度估计将由内置的难度估计器自动计算:
rf.predict_int(X_test, y_min=0)
array([[1769594.36212355, 3315644.23787645],
[ 693827.99796647, 964348.68203353],
[ 124886.97469338, 276008.52530662],
...,
[ 661373.45043166, 1433617.68956833],
[ 178769.2939384 , 341368.2260616 ],
[ 222837.12801117, 677409.49198883]])
根据所使用的难度估计器,归一化的区间有时可能会大得不合理,甚至可能是先前观察到的最大误差的数倍。此外,如果难度估计器毫无信息量,例如完全随机,则不同大小的区间可能会给人造成一种错觉,即认为具有较窄区间的情况其预测误差会更低。理想情况下,对于那些几乎无法提供有关预期误差信息的难度估计器,应该导致区间大小更加均匀分布。
Mondrian 共形回归模型可以用来解决这些问题,它通过将对象空间划分为互不重叠的所谓 Mondrian 类别,并为每个类别构建一个(标准)共形回归模型。我们可以通过在 calibrate 方法中提供一个函数或 MondrianCategorizer(定义在 crepes.extras 中),作为名为 mc 的额外参数,来构建 Mondrian 共形回归模型。
这里我们使用 MondrianCategorizer;它可以以多种方式拟合,下面展示的是如何利用上面拟合的难度估计器,将难度估计值分成 20 个桶来形成类别。
from crepes.extras import MondrianCategorizer
mc_diff = MondrianCategorizer()
mc_diff.fit(X_cal, de=de, no_bins=20)
rf.calibrate(X_cal, y_cal, mc=mc_diff)
在进行预测时,测试对象将根据内置的 MondrianCategorizer(或标注函数)被分配到相应的 Mondrian 类别:
rf.predict_int(X_test, y_min=0)
array([[1152528.9 , 3932709.7 ],
[ 692366.75, 965809.93],
[ 124254.81, 276640.69],
...,
[ 622939.57, 1472051.57],
[ 155346.82, 364790.7 ],
[ 239474.31, 660772.31]])
与半在线共形分类器类似,我们也可以为共形回归模型启用在线校准;这同样是通过在调用相关方法时设置 online=True 来实现的,同时还需要提供真实的标签,例如:
rf.predict_p(X_test, y_test, online=True)
array([0.09369225, 0.52548032, 0.49992477, ..., 0.72979714, 0.87495964,
0.58352253])
我们可以很容易地从共形回归器切换到共形预测系统。后者会生成累积分布函数(共形预测分布)。基于这些分布,我们不仅可以生成预测区间,还可以得到分位数、校准后的点预测以及针对给定目标值的 p 值。接下来我们就来看看如何实现这一点。
其实只需要在 calibrate 方法中添加一个参数:将 cps=True 传入即可。
例如,我们可以通过向 calibrate 方法同时提供 Mondrian 分类器和难度估计器,来构建归一化的 Mondrian 共形预测系统。这里我们将考虑根据点预测结果进行分箱后形成的 Mondrian 类别:
mc_pred = MondrianCategorizer()
mc_pred.fit(X_cal, f=rf.predict, no_bins=5)
rf.calibrate(X_cal, y_cal, de=de, mc=mc_pred, cps=True)
现在我们可以使用共形预测系统进行预测,方法有多种,比如 predict_percentiles:
rf.predict_percentiles(X_test, higher_percentiles=[90, 95, 99])
array([[3120432.14791764, 3403976.16608241, 3952384.13595105],
[ 930191.36994287, 979804.59585495, 1075762.49571536],
[ 236278.82580469, 253387.66592079, 329933.49293406],
...,
[1336110.21956702, 1477739.04927264, 1751666.10820498],
[ 298621.13482031, 317029.35735016, 399388.68783836],
[ 564574.75363948, 615226.06727944, 762212.9912238 ]])
与半在线共形分类器和回归器类似,我们也可以为共形预测系统启用在线校准;这里我们以默认的 95% 置信水平生成预测区间:
rf.predict_int(X_test, y_test, y_min=0, online=True)
array([[1719676.80439219, 3707173.76806116],
[ 684289.27240227, 1032856.71531186],
[ 127189.61835749, 274385.59426486],
...,
[ 630347.70469164, 1594876.58130005],
[ 167399.51044545, 337513.60197203],
[ 232815.51352497, 641580.14787679]])
我们还可以为每个测试样本获取完整的共形预测分布,其由阈值定义:
rf.predict_cpds(X_test)
对于 Mondrian 共形预测系统(或任何半在线共形预测系统),输出是一个包含每个测试样本对应 CPD 的向量;而对于标准或归一化的共形预测系统(未启用在线校准),输出则是一个二维数组。
此处未展示最终的向量嵌套向量结构,而是给出了一个随机测试样本的 CPD 图:

此外,我们还可以利用共形检验鞅来检验交换性假设。假设我们已经通过半在线共形预测器获得了 p 值,例如:
p_values = rf.predict_p(X_test, y_test, online=True)
现在我们可以使用 crepes.martingales 模块中的任意共形检验鞅算法,来检验这些 p 值是否独立且均匀地分布在 [0, 1] 区间内。如果交换性假设成立,则观察到鞅值超过 c 的概率不超过 1/c。这意味着错误拒绝该假设的概率被限制在 1/c 以内。下面演示如何使用 Simple Jumper 为上述 p 值计算鞅值:
from crepes.martingales import SimpleJumper
martingale_values = SimpleJumper().apply(p_values)
我们还可以查询使鞅值超过指定阈值的最小索引:
SimpleJumper().apply(np.sort(p_values), c=100)
由于在上述示例中 p 值已排序,共形检验鞅会较早检测到交换性假设的违反,并返回较低的索引。而如果提供的是原始(未排序)p 值,则共形检验鞅很可能无法检测到任何数据漂移,只会返回 p 值向量的长度。
示例
有关如何使用本包和模块的更多示例,请参阅 文档、使用 WrapClassifier 和 WrapRegressor 的 Jupyter 笔记本、使用 ConformalClassifier、ConformalRegressor 和 ConformalPredictiveSystem 的 Jupyter 笔记本,以及 关于共形检验鞅使用的 Jupyter 笔记本。
您也可以查看我在 COPA 2024 大会上的教程幻灯片及其配套的 Jupyter 笔记本:
COPA 2024 教程幻灯片 和 COPA 2024 教程笔记本。
引用 crepes
欢迎您引用以下论文:
Boström, H. 2024. 使用 crepes 在 Python 中进行共形预测。第 13 届共形与概率预测应用研讨会论文集,PMLR 230:236–249 链接
BibTeX 条目:
@inproceedings{bostrom2024,
title={使用 crepes 在 Python 中进行共形预测},
author={Bostr{\"o}m, Henrik},
booktitle={第 13 届共形与概率预测应用研讨会论文集},
pages={236--249},
year={2024},
organization={PMLR}
}
该软件包的早期版本曾在以下文献中介绍:
Boström, H., 2022. crepes:用于生成共形回归器和预测系统的 Python 软件包。第 11 届共形与概率预测应用研讨会论文集,PMLR 179:24–41 链接
BibTeX 条目:
@inproceedings{bostrom2022,
title={crepes:用于生成共形回归器和预测系统的 Python 软件包},
author={Bostr{\"o}m, Henrik},
booktitle={第 11 届共形与概率预测应用研讨会论文集},
pages={24--41},
year={2022},
organization={PMLR}
}
参考文献
[1] Vovk, V., Gammerman, A. 和 Shafer, G.,2022年。随机世界中的算法学习。第二版。施普林格出版社 链接
[2] Papadopoulos, H., Proedrou, K., Vovk, V. 和 Gammerman, A.,2002年。回归的归纳置信机。欧洲机器学习会议,第345–356页。链接
[3] Johansson, U., Boström, H., Löfström, T. 和 Linusson, H.,2014年。基于随机森林的回归共形预测。机器学习,97(1–2),第155–176页。链接
[4] Boström, H., Linusson, H., Löfström, T. 和 Johansson, U.,2017年。加速共形回归森林的难度估计。数学与人工智能年鉴,81(1–2),第125–144页。链接
[5] Boström, H. 和 Johansson, U.,2020年。蒙德里安共形回归器。载于《共形与概率预测及其应用》。PMLR,第128卷,第114–133页。链接
[6] Vovk, V., Petej, I., Nouretdinov, I., Manokhin, V. 和 Gammerman, A.,2020年。共形预测分布的高效计算版本。神经计算,第397期,第292–308页。链接
[7] Boström, H., Johansson, U. 和 Löfström, T.,2021年。蒙德里安共形预测分布。载于《共形与概率预测及其应用》。PMLR,第152卷,第24–38页。链接
[8] Vovk, V.,2022年。通用预测系统。模式识别,第126卷:第108536页。链接
作者:亨里克·博斯特伦(bostromh@kth.se) 版权所有 2025年 亨里克·博斯特伦 许可证:BSD 3条款
版本历史
v0.2.02023/04/28v0.1.02022/06/28v0.0.12021/11/17v0.9.02025/10/08v0.8.02025/03/31v0.7.12024/09/21v0.7.02024/06/27v0.6.22024/02/02v0.6.12023/08/21v0.6.02023/06/28v0.5.12023/06/22v0.5.02023/06/02v0.4.02023/05/16v0.3.02023/05/11常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
