Skip to main content

元特征提取器

项目描述

构建状态 编解码器 文件状态 Python版本 皮皮 黑色的

pymfe:Python 元特征提取器

pymfe(py thon meta -feature e xtractor 提供了一套用python实现的全面的元特征。根据最近的文献建议,该软件包带来了尖端的元功能。pymfe 架构被认为可以系统地进行提取,这可以产生一组强大的元特征。此外,pymfe 遵循最近的元特征形式化,旨在使 MtL 可重现。

在这里,您可以使用不同的度量和汇总函数,设置它们的超参数,还可以自动测量经过的时间。此外,您可以从特定模型中提取元特征,甚至使用引导程序提取具有置信区间的元特征。还有许多其他有趣的功能,您可以查看文档了解更多相关信息。

元特征

在元学习 (MtL) 文献中,元特征是用于表征数据集和/或其与算法偏差的关系的度量。根据 Brazdil 等人的说法。(2008),“元学习是对利用元知识通过调整机器学习和数据挖掘过程来获得有效模型和解决方案的原则方法的研究”。

元特征通常用于 MtL 和 AutoML 任务,以表示/理解数据集、理解学习偏差、创建机器学习(或数据挖掘)推荐系统以及创建代理模型等等。

平托等人。(2016) 和 Rivolli 等人。(2018)定义了一个元特征如下。让我们 成为一个数据集, 成为一个表征度量,并 成为一个汇总函数。两者 也分别具有关联的超 参数 因此,给定数据集 的元特征 是:

.

该度量 可以从每个数据集中提取多个值,即 可以根据 变化,可以 使用汇总函数 将其映射到固定长度的向量 。

在这个包中,我们提供了以下元功能组:

  • General:与数据集相关的一般信息,也称为简单度量,例如实例数、属性数和类数。
  • 统计:描述数据分布的数值特性的标准统计度量。
  • 信息论:特别适合描述离散(分类)属性及其与类的关系。
  • 基于模型:旨在从简单的机器学习模型中提取特征的措施。
  • 地标:简单高效的学习算法的性能。
  • 相对地标:简单高效的学习算法的相对性能。
  • 子采样标记:从数据集的子样本中执行简单高效的学习算法。
  • 聚类:聚类度量基于外部验证索引提取有关数据集的信息。
  • 概念:估计示例之间类标签的可变性和示例密度。
  • Itemset:计算二元属性之间的相关性。
  • 复杂性:估计将数据点分成预期类别的难度。

在 pymfe 包中,您可以使用不同的度量和汇总函数,设置它们的超参数,并自动测量经过的时间。此外,您可以从特定模型中提取元特征,甚至使用引导程序获得具有置信区间的元特征。还有许多其他令人兴奋的功能。您可以查看文档以了解有关它的更多信息。

依赖项

主要pymfe要求是:

  • Python (>= 3.6)

安装

安装过程类似于 pip 上可用的其他软件包:

pip install -U pymfe

可以使用以下方式安装开发版本:

pip install -U git+https://github.com/ealcobaca/pymfe

或者

git clone https://github.com/ealcobaca/pymfe.git
cd pymfe
python3 setup.py install

使用示例

提取元特征的最简单方法是实例化MFE类。默认情况下,它使用均值和标准差作为汇总函数计算五个元特征组:通用、统计、信息论、基于模型和标记。该fit方法可以通过传递X and来调用y。然后使用该extract方法提取相关度量。pymfe接下来给出一个用于监督任务的简单示例:

# Load a dataset
from sklearn.datasets import load_iris
from pymfe.mfe import MFE

data = load_iris()
y = data.target
X = data.data

# Extract default measures
mfe = MFE()
mfe.fit(X, y)
ft = mfe.extract()
print(ft)

# Extract general, statistical and information-theoretic measures
mfe = MFE(groups=["general", "statistical", "info-theory"])
mfe.fit(X, y)
ft = mfe.extract()
print(ft)

# Extract all available measures
mfe = MFE(groups="all")
mfe.fit(X, y)
ft = mfe.extract()
print(ft)

在将数据拟合到MFE模型中时,您可以简单地省略无监督任务的目标属性。该pymfe包会自动查找并仅提取适合此类任务的元特征。接下来给出示例:

# Load a dataset
from sklearn.datasets import load_iris
from pymfe.mfe import MFE

data = load_iris()
y = data.target
X = data.data

# Extract default unsupervised measures
mfe = MFE()
mfe.fit(X)
ft = mfe.extract()
print(ft)

# Extract all available unsupervised measures
mfe = MFE(groups="all")
mfe.fit(X)
ft = mfe.extract()
print(ft)

多个度量返回一个以上的值。要聚合返回值,可以使用汇总函数。该方法可以计算min, max, mean, median, kurtosis,standard deviation等。默认方法是meansd。接下来可以看一个使用这个方法的例子:

## Extract default measures using min, median and max 
mfe = MFE(summary=["min", "median", "max"])
mfe.fit(X, y)
ft = mfe.extract()
print(ft)

## Extract default measures using quantile
mfe = MFE(summary=["quantiles"])
mfe.fit(X, y)
ft = mfe.extract()
print(ft)

您可以轻松列出所有可用的元特征组、元特征、汇总方法和按感兴趣组过滤的元特征:

from pymfe.mfe import MFE

# Check all available meta-feature groups in the package
print(MFE.valid_groups())

# Check all available meta-features in the package
print(MFE.valid_metafeatures())

# Check available meta-features filtering by groups of interest
print(MFE.valid_metafeatures(groups=["general", "statistical", "info-theory"]))

# Check all available summary functions in the package
print(MFE.valid_summary())

可以使用MFE extract方法 kwargs 将自定义参数传递给每个元特征。关键字必须是目标元特征名称,值必须是格式为 { argument: value} 的字典,即字典中的每个键都是具有各自值的目标参数。在下面的示例中,元特征的提取minmax 往常一样发生,但是元特征sd, nr_normnr_cor_attr将接收用户自定义参数值,这将干扰每个元特征结果。

# Extract measures with custom user arguments
mfe = MFE(features=["sd", "nr_norm", "nr_cor_attr", "min", "max"])
mfe.fit(X, y)
ft = mfe.extract(
    sd={"ddof": 0},
    nr_norm={"method": "all", "failure": "hard", "threshold": 0.025},
    nr_cor_attr={"threshold": 0.6},
)
print(ft)

如果您想从预先拟合的机器学习模型(来自sklearn package)中提取元特征,您可以使用该extract_from_model方法而无需使用训练数据:

import sklearn.tree
from sklearn.datasets import load_iris
from pymfe.mfe import MFE

# Extract from model
iris = load_iris()
model = sklearn.tree.DecisionTreeClassifier().fit(iris.data, iris.target)
extractor = MFE()
ft = extractor.extract_from_model(model)
print(ft)

# Extract specific metafeatures from model
extractor = MFE(features=["tree_shape", "nodes_repeated"], summary="histogram")

ft = extractor.extract_from_model(
    model,
    arguments_fit={"verbose": 1},
    arguments_extract={"verbose": 1, "histogram": {"bins": 5}})

print(ft)

您还可以使用引导程序提取具有置信区间的元特征。请记住,此方法会多次提取每个元特征,并且可能非常昂贵,主要取决于您的数据和调用的元特征提取方法的数量。

# Extract metafeatures with confidence interval
mfe = MFE(features=["mean", "nr_cor_attr", "sd", "max"])
mfe.fit(X, y)

ft = mfe.extract_with_confidence(
    sample_num=256,
    confidence=0.99,
    verbose=1,
)

print(ft)

文档

我们编写了一个很棒的文档 来指导您如何使用 pymfe 库。您可以在文档中找到有趣的页面,例如:

开发人员说明

  • 我们很高兴接受任何贡献,请查看 贡献文档
  • 要提交错误和功能请求,请在 项目问题处报告。

执照

这个项目是在 MIT 许可下获得许可的 - 有关详细信息,请参阅 许可文件。

引用我们

如果您pymfe在科学出版物中使用,我们将不胜感激引用以下论文:

Edesio Alcobaça、Felipe Siqueira、Adriano Rivolli、Luís PF Garcia、Jefferson T. Oliva 和 André CPLF de Carvalho(2020 年)。MFE:迈向可重现的元特征提取。机器学习研究杂志,21(111),1-5。

您还可以使用 bibtex 格式:

@article{JMLR:v21:19-348,
  author  = {Edesio Alcobaça and
             Felipe Siqueira and
             Adriano Rivolli and
             Luís P. F. Garcia and
             Jefferson T. Oliva and
             André C. P. L. F. de Carvalho
  },
  title   = {MFE: Towards reproducible meta-feature extraction},
  journal = {Journal of Machine Learning Research},
  year    = {2020},
  volume  = {21},
  number  = {111},
  pages   = {1-5},
  url     = {http://jmlr.org/papers/v21/19-348.html}
}

致谢

我们要感谢 直接或间接促成这个项目的每一位贡献者。谢谢你们。

参考

  1. Brazdil, P., Carrier, CG, Soares, C. 和 Vilalta, R. (2008)。元学习:数据挖掘的应用。施普林格科学和商业媒体。
  2. Pinto, F.、Soares, C. 和 Mendes-Moreira, J.(2016 年 4 月)。迈向元特征的自动生成。在亚太知识发现和数据挖掘会议上(第 215-226 页)。施普林格,湛。
  3. Rivolli, A.、Garcia, LPF、Soares, C.、Vanschoren, J. 和 de Carvalho, ACPLF (2018)。表征分类数据集:元学习元特征的研究。arXiv:1808.10406。

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pymfe-0.4.1.tar.gz (137.1 kB 查看哈希

已上传 source

内置分布

pymfe-0.4.1-py3-none-any.whl (154.2 kB 查看哈希

已上传 py3