scikit-lego
我们热爱scikit-learn,但经常发现自己在编写自定义的转换器、指标和模型。这个项目的目标是尝试将这些整合到一个提供代码质量/测试的包中。该项目最初是荷兰多家公司之间的合作,但此后收到了来自全球的贡献。它由Matthijs Brouns和Vincent D. Warmerdam发起,作为教人们如何为开源项目做贡献的工具。
请注意,我们与scikit-learn项目没有正式关联,但我们严格遵守他们的标准。
同样适用于乐高。LEGO®是乐高集团公司的商标,该公司不赞助、授权或认可本项目。
安装
通过pip安装scikit-lego
:
python -m pip install scikit-lego
通过conda安装:
conda install -c conda-forge scikit-lego
或者,如果要编辑和贡献,你可以fork/clone并运行:
python -m pip install -e ".[dev]"
python setup.py develop
文档
文档可以在这里找到。
使用
我们提供自定义的指标、模型和转换器。你可以像在scikit-learn中一样导入它们。
# 我们喜爱的scikit-learn内容
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
# 从scikit-lego中添加的内容
from sklego.preprocessing import RandomAdder
from sklego.mixture import GMMClassifier
...
mod = Pipeline([
("scale", StandardScaler()),
("random_noise", RandomAdder()),
("model", GMMClassifier())
])
...
功能
以下是该库当前提供的功能列表:
sklego.datasets.load_abalone
加载鲍鱼数据集sklego.datasets.load_arrests
加载一个涉及公平性问题的数据集sklego.datasets.load_chicken
加载令人愉悦的鸡重量数据集sklego.datasets.load_heroes
加载风暴英雄数据集sklego.datasets.load_hearts
加载一个关于心脏的数据集sklego.datasets.load_penguins
加载一个可爱的企鹅数据集sklego.datasets.fetch_creditcard
从openml获取欺诈数据集sklego.datasets.make_simpleseries
生成模拟时间序列sklego.pandas_utils.add_lags
在pandas数据框中添加滞后值sklego.pandas_utils.log_step
一个用于记录管道步骤的有用装饰器sklego.dummy.RandomRegressor
预测随机值的虚拟基准sklego.linear_model.DeadZoneRegressor
具有成本函数死区的实验性特征sklego.linear_model.DemographicParityClassifier
受人口平等约束的逻辑分类器sklego.linear_model.EqualOpportunityClassifier
受平等机会约束的逻辑分类器sklego.linear_model.ProbWeightRegression
将系数视为概率权重的线性模型sklego.linear_model.LowessRegression
局部加权线性回归sklego.linear_model.LADRegression
最小绝对偏差回归sklego.linear_model.QuantileRegression
线性分位数回归,LADRegression的泛化sklego.linear_model.ImbalancedLinearRegression
直接惩罚模型的过度/欠估计sklego.naive_bayes.GaussianMixtureNB
通过为每个类的每列训练1D GMM进行分类sklego.naive_bayes.BayesianGaussianMixtureNB
通过为每个类训练贝叶斯1D GMM进行分类sklego.mixture.BayesianGMMClassifier
通过为每个类训练贝叶斯GMM进行分类sklego.mixture.BayesianGMMOutlierDetector
基于训练好的贝叶斯GMM检测异常值sklego.mixture.GMMClassifier
通过为每个类训练GMM进行分类sklego.mixture.GMMOutlierDetector
基于训练好的GMM检测异常值sklego.meta.ConfusionBalancer
允许平衡混淆矩阵的实验性特征sklego.meta.DecayEstimator
为模型接受的sample_weight添加衰减sklego.meta.EstimatorTransformer
将模型输出作为特征添加sklego.meta.OutlierClassifier
将异常值模型转换为分类器以进行网格搜索sklego.meta.GroupedPredictor
可以将数据分割成多个运行并在每个运行上运行模型sklego.meta.GroupedTransformer
可以将数据分割成多个运行并在每个运行上运行转换器sklego.meta.SubjectiveClassifier
为分类器添加先验的实验性特征sklego.meta.Thresholder
允许对阈值进行网格搜索的元模型sklego.meta.RegressionOutlierDetector
通过在回归中添加阈值来查找异常值的元模型sklego.meta.ZeroInflatedRegressor
基于分类器预测零或应用回归sklego.preprocessing.ColumnCapper
限制模型特征的极端值sklego.preprocessing.ColumnDropper
从pandas中删除列sklego.preprocessing.ColumnSelector
基于列名选择列sklego.preprocessing.InformationFilter
可以去相关特征的转换器sklego.preprocessing.IdentityTransformer
返回相同的数据,允许连接管道sklego.preprocessing.OrthogonalTransformer
使所有特征线性独立sklego.preprocessing.TypeSelector
基于类型选择列sklego.preprocessing.RandomAdder
在训练中添加随机性sklego.preprocessing.RepeatingBasisFunction
重复特征工程,适用于时间序列sklego.preprocessing.DictMapper
为分类列分配数值sklego.preprocessing.OutlierRemover
在训练期间移除异常值的实验方法sklego.model_selection.GroupTimeSeriesSplit
用于每组观察数不同的组的时间序列K折交叉验证sklego.model_selection.KlusterFoldValidation
基于聚类进行K折交叉验证的实验性特征sklego.model_selection.TimeGapSplit
训练/测试之间有间隔的时间序列K折交叉验证sklego.pipeline.DebugPipeline
添加调试信息以便于调试sklego.pipeline.make_debug_pipeline
创建可调试管道的快捷函数sklego.metrics.correlation_score
计算模型输出与特征之间的相关性sklego.metrics.equal_opportunity_score
计算平等机会指标sklego.metrics.p_percent_score
模型公平性对敏感属性的代理sklego.metrics.subset_score
在数据子集上计算得分(用于公平性跟踪)
新功能
我们在接受新功能方面相当开放,但在添加到项目之前,我们要求满足三个条件:
- 任何新功能都要对可演示的现实世界用例有所贡献
- 任何新功能都要通过标准单元测试(我们使用scikit-learn的测试)
- 该功能事先已在问题列表中讨论过
我们自动化所有测试,并使用预提交钩子来保持代码正常工作。