{"id":13869997,"url":"https://github.com/ealcobaca/pymfe","last_synced_at":"2026-01-18T13:42:11.498Z","repository":{"id":34486280,"uuid":"158245631","full_name":"ealcobaca/pymfe","owner":"ealcobaca","description":"Python Meta-Feature Extractor package.","archived":false,"fork":false,"pushed_at":"2025-08-17T17:21:27.000Z","size":1886,"stargazers_count":133,"open_issues_count":3,"forks_count":29,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-17T17:43:01.620Z","etag":null,"topics":["automl","machine-learning","meta-feature","meta-features","meta-learning","metalearning"],"latest_commit_sha":null,"homepage":"https://pymfe.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ealcobaca.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-19T15:20:11.000Z","updated_at":"2025-08-17T17:04:51.000Z","dependencies_parsed_at":"2024-11-23T16:41:17.957Z","dependency_job_id":null,"html_url":"https://github.com/ealcobaca/pymfe","commit_stats":{"total_commits":1203,"total_committers":5,"mean_commits":240.6,"dds":"0.45552784704904403","last_synced_commit":"50131572309dd92cfdf1eceb313be7408f3941b6"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/ealcobaca/pymfe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ealcobaca%2Fpymfe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ealcobaca%2Fpymfe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ealcobaca%2Fpymfe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ealcobaca%2Fpymfe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ealcobaca","download_url":"https://codeload.github.com/ealcobaca/pymfe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ealcobaca%2Fpymfe/sbom","scorecard":{"id":363667,"data":{"date":"2025-08-11","repo":{"name":"github.com/ealcobaca/pymfe","commit":"1bd21e8e946c282fcde38493af44cb54f604ee67"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 1/16 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENCE:0","Info: FSF or OSI recognized license: MIT License: LICENCE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"69 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: GHSA-3c5c-7235-994j","Warn: Project is vulnerable to: GHSA-3f63-hfp8-52jq","Warn: Project is vulnerable to: PYSEC-2021-41 / GHSA-3wvg-mj6g-m9cv","Warn: Project is vulnerable to: PYSEC-2020-77 / GHSA-3xv8-3j54-hgrp","Warn: Project is vulnerable to: PYSEC-2020-80 / GHSA-43fq-w8qq-v88h","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: GHSA-4fx9-vc88-q2xc","Warn: Project is vulnerable to: PYSEC-2021-35 / GHSA-57h3-9rgr-c24m","Warn: Project is vulnerable to: PYSEC-2020-172 / GHSA-5gm3-px64-rw72","Warn: Project is vulnerable to: PYSEC-2021-331 / GHSA-7534-mm45-c74v","Warn: Project is vulnerable to: PYSEC-2021-92 / GHSA-7r7m-5h27-29hp","Warn: Project is vulnerable to: PYSEC-2020-78 / GHSA-8843-m7mw-mxqm","Warn: Project is vulnerable to: PYSEC-2023-227 / GHSA-8ghj-p4vj-mr35","Warn: Project is vulnerable to: PYSEC-2014-87 / GHSA-8m9x-pxwq-j236","Warn: Project is vulnerable to: PYSEC-2022-10 / GHSA-8vj2-vxx3-667w","Warn: Project is vulnerable to: PYSEC-2021-36 / GHSA-8xjq-8fcg-g5hw","Warn: Project is vulnerable to: PYSEC-2016-6 / GHSA-8xjv-v9xq-m5h9","Warn: Project is vulnerable to: PYSEC-2021-42 / GHSA-95q3-8gr9-gm8w","Warn: Project is vulnerable to: PYSEC-2022-168 / GHSA-9j59-75qj-795w","Warn: Project is vulnerable to: PYSEC-2014-10 / GHSA-cfmr-38g9-f2h7","Warn: Project is vulnerable to: PYSEC-2020-76 / GHSA-cqhg-xjhh-p8hf","Warn: Project is vulnerable to: PYSEC-2021-40 / GHSA-f4w8-cv6p-x6r5","Warn: Project is vulnerable to: PYSEC-2021-69 / GHSA-f5g8-5qq7-938w","Warn: Project is vulnerable to: PYSEC-2021-139 / GHSA-g6rj-rv7j-xwp4","Warn: Project is vulnerable to: PYSEC-2015-16 / GHSA-h5rf-vgqx-wjv2","Warn: Project is vulnerable to: PYSEC-2016-5 / GHSA-hggx-3h72-49ww","Warn: Project is vulnerable to: PYSEC-2020-84 / GHSA-hj69-c76v-86wr","Warn: Project is vulnerable to: PYSEC-2016-7 / GHSA-hvr8-466p-75rh","Warn: Project is vulnerable to: PYSEC-2015-15 / GHSA-j6f7-g425-4gmx","Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: PYSEC-2019-110 / GHSA-j7mj-748x-7p78","Warn: Project is vulnerable to: GHSA-jgpv-4h4c-xhw3","Warn: Project is vulnerable to: PYSEC-2022-42979 / GHSA-m2vv-5vj5-2hm7","Warn: Project is vulnerable to: PYSEC-2021-37 / GHSA-mvg9-xffr-p774","Warn: Project is vulnerable to: PYSEC-2020-83 / GHSA-p49h-hjvm-jg3h","Warn: Project is vulnerable to: PYSEC-2022-8 / GHSA-pw3c-h7wp-cvhx","Warn: Project is vulnerable to: PYSEC-2021-93 / GHSA-q5hq-fp76-qmrc","Warn: Project is vulnerable to: PYSEC-2020-82 / GHSA-r7rm-8j6h-r933","Warn: Project is vulnerable to: PYSEC-2014-23 / GHSA-r854-96gq-rfg3","Warn: Project is vulnerable to: PYSEC-2016-8 / GHSA-rwr3-c2q8-gm56","Warn: Project is vulnerable to: PYSEC-2020-81 / GHSA-vcqg-3p29-xw73","Warn: Project is vulnerable to: PYSEC-2020-79 / GHSA-vj42-xq3r-hr3r","Warn: Project is vulnerable to: PYSEC-2021-70 / GHSA-vqcj-wrf2-7v73","Warn: Project is vulnerable to: PYSEC-2016-9 / GHSA-w4vg-rf63-f3j3","Warn: Project is vulnerable to: PYSEC-2014-22 / GHSA-x895-2wrm-hvp7","Warn: Project is vulnerable to: PYSEC-2022-9 / GHSA-xrcv-f9gm-v42c","Warn: Project is vulnerable to: PYSEC-2021-137","Warn: Project is vulnerable to: PYSEC-2021-138","Warn: Project is vulnerable to: PYSEC-2021-317","Warn: Project is vulnerable to: PYSEC-2021-38","Warn: Project is vulnerable to: PYSEC-2021-39","Warn: Project is vulnerable to: PYSEC-2021-94","Warn: Project is vulnerable to: PYSEC-2023-175","Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2020-107 / GHSA-jjw5-xxj6-pcv5","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2020-108","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: PYSEC-2017-74"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T11:22:37.499Z","repository_id":34486280,"created_at":"2025-08-18T11:22:37.499Z","updated_at":"2025-08-18T11:22:37.499Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28536773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T13:04:05.990Z","status":"ssl_error","status_checked_at":"2026-01-18T13:01:44.092Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automl","machine-learning","meta-feature","meta-features","meta-learning","metalearning"],"created_at":"2024-08-05T20:01:24.709Z","updated_at":"2026-01-18T13:42:11.473Z","avatar_url":"https://github.com/ealcobaca.png","language":"Python","funding_links":[],"categories":["Python","Projects"],"sub_categories":["Distributed Frameworks"],"readme":"[![Build Status](https://travis-ci.org/ealcobaca/pymfe.svg?branch=master)](https://travis-ci.org/ealcobaca/pymfe)\n[![codecov](https://codecov.io/gh/ealcobaca/pymfe/branch/master/graph/badge.svg)](https://codecov.io/gh/ealcobaca/pymfe)\n[![Documentation Status](https://readthedocs.org/projects/pymfe/badge/?version=latest)](https://pymfe.readthedocs.io/en/latest/?badge=latest)\n[![PythonVersion](https://img.shields.io/pypi/pyversions/pymfe.svg)](https://www.python.org/downloads/release/python-370/)\n[![Pypi](https://badge.fury.io/py/pymfe.svg)](https://badge.fury.io/py/pymfe)\n[![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n# pymfe: Python Meta-Feature Extractor\nThe pymfe (**py**thon **m**eta-**f**eature **e**xtractor) provides a\ncomprehensive set of meta-features implemented in python. The package brings\ncutting edge meta-features, following recent literature propose. The pymfe\narchitecture was thought to systematically make the extraction, which can\nproduce a robust set of meta-features. Moreover, pymfe follows recent\nmeta-feature formalization aiming to make MtL reproducible.\n\nHere,  you can use different measures and summary functions, setting their\nhyperparameters, and also measuring automatically the elapsed time. Moreover,\nyou can extract meta-features from specific models, or even extract\nmeta-features with confidence intervals using bootstrap. There are a lot of\nother interesting features and you can see more about it looking at the\ndocumentation.\n\n\n## Meta-feature\n\nIn the Meta-learning (MtL) literature, meta-features are measures used to\ncharacterize data sets and/or their relations with algorithm bias.\n\n\u003e \"Meta-learning is the study of principled methods that exploit meta-knowledge to obtain efficient models and solutions by adapting the machine learning and data mining process.\" - ([Brazdil et al. (2008)](https://www.springer.com/gp/book/9783540732624))\n\nMeta-features are used in MtL and AutoML tasks in general, to\nrepresent/understand a dataset,  to understanding a learning bias, to create\nmachine learning (or data mining) recommendations systems, and to create\nsurrogates models, to name a few.\n\n[Pinto et al. (2016)](https://link.springer.com/chapter/10.1007/978-3-319-31753-3_18) and\n[Rivolli et al. (2018)](https://arxiv.org/abs/1808.10406v2) defined a meta-feature as\nfollows. Let $D \\in \\mathcal{D}$ be a dataset, $m\\colon \\mathcal{D} \\to \\mathbb{R}^{k'}$\nbe a characterization measure, and $\\sigma\\colon \\mathbb{R}^{k'} \\to \\mathbb{R}^{k}$\nbe a summarization function. Both $m$ and $\\sigma$ have also hyperparameters associated,\n$h_m$ and $h_\\sigma$ respectively. Thus, a meta-feature $f\\colon \\mathcal{D} \\to \\mathbb{R}^{k}$\nfor a given dataset $D$ is\n\n$$\n    f\\big(D\\big) = \\sigma\\big(m(D,h_m), h_\\sigma\\big).\n$$\n\nThe measure $m$ can extract more than one value from each data set, i.e.,\n$k'$ can vary according to $D$, which can be mapped to a vector of fixed length\n$k$ using a summarization function $\\sigma$.\n\nIn this package, We provided the following meta-features groups:\n- **General**: General information related to the dataset, also known as simple\n  measures, such as the number of instances, attributes and classes;\n- **Statistical**: Standard statistical measures to describe the numerical\n  properties of data distribution;\n- **Information-theoretic**: Particularly appropriate to describe discrete\n  (categorical) attributes and their relationship with the classes;\n- **Model-based**: Measures designed to extract characteristics from simple\n  machine learning models;\n- **Landmarking**: Performance of simple and efficient learning algorithms.\n  - **Relative Landmarking**: Relative performance of simple and efficient\n    learning algorithms;\n  - **Subsampling Landmarking**: Performance of simple and efficient learning\n    algorithms from a subsample of the dataset;\n- **Clustering**: Clustering measures extract information about dataset based\n  on external validation indexes;\n- **Concept**: Estimate the variability of class labels among examples and the\n  examples density;\n- **Itemset**: Compute the correlation between binary attributes; and\n- **Complexity**: Estimate the difficulty in separating the data points into\n  their expected classes.\n\nIn the pymfe package, you can use different measures and summary functions,\nsetting their hyperparameters, and automatically measure the elapsed time.\nMoreover,  you can extract meta-features from specific models, or even obtain\nmeta-features with confidence intervals using bootstrap.\nThere are many other exciting features. You can see more about it looking at\nthe [documentation](https://pymfe.readthedocs.io/en/latest/api.html).\n\n## Dependencies\n\nThe main `pymfe` requirement is:\n* Python (\u003e= 3.6)\n\n## Installation\n\nThe installation process is similar to other packages available on pip:\n\n```bash\npip install -U pymfe\n```\n\nIt is possible to install the development version using:\n\n```bash\npip install -U git+https://github.com/ealcobaca/pymfe\n```\n\nor\n\n```bash\ngit clone https://github.com/ealcobaca/pymfe.git\ncd pymfe\npython setup.py install\n```\n\n## Example of use\n\nThe simplest way to extract meta-features is by instantiating the `MFE` class.\nIt computes five meta-features groups by default using mean and standard\ndeviation as summary functions:  General, Statistical, Information-theoretic,\nModel-based, and Landmarking. The `fit` method can be called by passing the `X`\nand `y`. Then the `extract` method is used to extract the related measures.\nA simple example using `pymfe` for supervised tasks is given next:\n\n```python\n# Load a dataset\nfrom sklearn.datasets import load_iris\nfrom pymfe.mfe import MFE\n\ndata = load_iris()\ny = data.target\nX = data.data\n\n# Extract default measures\nmfe = MFE()\nmfe.fit(X, y)\nft = mfe.extract()\nprint(ft)\n\n# Extract general, statistical and information-theoretic measures\nmfe = MFE(groups=[\"general\", \"statistical\", \"info-theory\"])\nmfe.fit(X, y)\nft = mfe.extract()\nprint(ft)\n\n# Extract all available measures\nmfe = MFE(groups=\"all\")\nmfe.fit(X, y)\nft = mfe.extract()\nprint(ft)\n```\n\nYou can simply omit the target attribute for unsupervised tasks while fitting\nthe data into the `MFE` model. The `pymfe` package automatically finds and\nextracts only the metafeatures suitable for this type of task. Examples are\ngiven next:\n\n```python\n# Load a dataset\nfrom sklearn.datasets import load_iris\nfrom pymfe.mfe import MFE\n\ndata = load_iris()\ny = data.target\nX = data.data\n\n# Extract default unsupervised measures\nmfe = MFE()\nmfe.fit(X)\nft = mfe.extract()\nprint(ft)\n\n# Extract all available unsupervised measures\nmfe = MFE(groups=\"all\")\nmfe.fit(X)\nft = mfe.extract()\nprint(ft)\n```\n\nSeveral measures return more than one value. To aggregate the returned values,\nsummarization function can be used. This method can compute `min`, `max`,\n`mean`, `median`, `kurtosis`, `standard deviation`, among others. The default\nmethods are the `mean` and the `sd`. Next, it is possible to see an example of\nthe use of this method:\n\n```python\n## Extract default measures using min, median and max \nmfe = MFE(summary=[\"min\", \"median\", \"max\"])\nmfe.fit(X, y)\nft = mfe.extract()\nprint(ft)\n                          \n## Extract default measures using quantile\nmfe = MFE(summary=[\"quantiles\"])\nmfe.fit(X, y)\nft = mfe.extract()\nprint(ft)\n```\n\nYou can easily list all available metafeature groups, metafeatures, summary\nmethods and metafeatures filtered by groups of interest:\n```python\nfrom pymfe.mfe import MFE\n\n# Check all available meta-feature groups in the package\nprint(MFE.valid_groups())\n\n# Check all available meta-features in the package\nprint(MFE.valid_metafeatures())\n\n# Check available meta-features filtering by groups of interest\nprint(MFE.valid_metafeatures(groups=[\"general\", \"statistical\", \"info-theory\"]))\n\n# Check all available summary functions in the package\nprint(MFE.valid_summary())\n```\n\nIt is possible to pass custom arguments to every metafeature using `MFE`\n`extract` method kwargs. The keywords must be the target metafeature name, and\nthe value must be a dictionary in the format {`argument`: `value`}, i.e., each\nkey in the dictionary is a target argument with its respective value. In the\nexample below, the extraction of metafeatures `min` and `max`  happens as\nusual, but the metafeatures `sd,` `nr_norm` and `nr_cor_attr` will receive user\ncustom argument values, which will interfere in each metafeature result.\n\n```python\n# Extract measures with custom user arguments\nmfe = MFE(features=[\"sd\", \"nr_norm\", \"nr_cor_attr\", \"min\", \"max\"])\nmfe.fit(X, y)\nft = mfe.extract(\n    sd={\"ddof\": 0},\n    nr_norm={\"method\": \"all\", \"failure\": \"hard\", \"threshold\": 0.025},\n    nr_cor_attr={\"threshold\": 0.6},\n)\nprint(ft)\n```\n\nIf you want to extract metafeatures from a pre-fitted machine learning model\n(from `sklearn package`), you can use the `extract_from_model` method without\nneeding to use the training data:\n\n```python\nimport sklearn.tree\nfrom sklearn.datasets import load_iris\nfrom pymfe.mfe import MFE\n\n# Extract from model\niris = load_iris()\nmodel = sklearn.tree.DecisionTreeClassifier().fit(iris.data, iris.target)\nextractor = MFE()\nft = extractor.extract_from_model(model)\nprint(ft)\n\n# Extract specific metafeatures from model\nextractor = MFE(features=[\"tree_shape\", \"nodes_repeated\"], summary=\"histogram\")\n\nft = extractor.extract_from_model(\n    model,\n    arguments_fit={\"verbose\": 1},\n    arguments_extract={\"verbose\": 1, \"histogram\": {\"bins\": 5}})\n\nprint(ft)\n```\n\nYou can also extract your metafeatures with confidence intervals using\nbootstrap. Keep in mind that this method extracts each metafeature several\ntimes, and may be very expensive depending mainly on your data and the number\nof metafeature extract methods called.\n\n```python\n# Extract metafeatures with confidence interval\nmfe = MFE(features=[\"mean\", \"nr_cor_attr\", \"sd\", \"max\"])\nmfe.fit(X, y)\n\nft = mfe.extract_with_confidence(\n    sample_num=256,\n    confidence=0.99,\n    verbose=1,\n)\n\nprint(ft)\n```\n\n## Documentation\nWe write a great [Documentation](https://pymfe.readthedocs.io/en/latest/?badge=latest)\nto guide you on how to use the pymfe library.\nYou can find in the documentation interesting pages like:\n* [Getting started](https://pymfe.readthedocs.io/en/latest/install.html)\n* [API documentation](https://pymfe.readthedocs.io/en/latest/api.html)\n* [Examples](https://pymfe.readthedocs.io/en/latest/auto_examples/index.html)\n* [News about pymfe](https://pymfe.readthedocs.io/en/latest/new.html)\n\n## Developer notes\n\n* We are glad to accept any contributions, please check\n  [Contributing](https://github.com/ealcobaca/pymfe/blob/master/CONTRIBUTING.md)\n  and the [Documentation](https://pymfe.readthedocs.io/en/latest/?badge=latest).\n* To submit bugs and feature requests, report at\n  [project issues](https://github.com/ealcobaca/pymfe/issues).\n\n## License\n\nThis project is licensed under the MIT License - see the\n[License](https://github.com/ealcobaca/pymfe/blob/master/LICENCE) file for\ndetails.\n\n## Cite Us\n\nIf you use the `pymfe` in scientific publication, we would appreciate citations\nto the following paper:\n\n[Edesio Alcobaça, Felipe Siqueira, Adriano Rivolli, Luís P. F. Garcia,\nJefferson T. Oliva, \u0026 André C. P. L. F. de Carvalho (2020).\nMFE: Towards reproducible meta-feature extraction.\nJournal of Machine Learning Research, 21(111), 1-5.](http://jmlr.org/papers/v21/19-348.html)\n\nYou can also use the bibtex format:\n```bibtex\n@article{JMLR:v21:19-348,\n  author  = {Edesio Alcobaça and\n             Felipe Siqueira and\n             Adriano Rivolli and\n             Luís P. F. Garcia and\n             Jefferson T. Oliva and\n             André C. P. L. F. de Carvalho\n  },\n  title   = {MFE: Towards reproducible meta-feature extraction},\n  journal = {Journal of Machine Learning Research},\n  year    = {2020},\n  volume  = {21},\n  number  = {111},\n  pages   = {1-5},\n  url     = {http://jmlr.org/papers/v21/19-348.html}\n}\n```\n\n## Acknowledgments\nWe would like to thank every\n[Contributor](https://github.com/ealcobaca/pymfe/graphs/contributors)\nthat directly or indirectly has make this project to happen. Thank you all.\n\n## References\n1. [Brazdil, P., Carrier, C. G., Soares, C., \u0026 Vilalta, R. (2008). Metalearning:\nApplications to data mining. Springer Science\nand Business Media.](https://www.springer.com/gp/book/9783540732624)\n2. [Pinto, F., Soares, C., \u0026 Mendes-Moreira, J. (2016, April). Towards automatic\ngeneration of metafeatures. In Pacific-Asia Conference on Knowledge Discovery\nand Data Mining (pp. 215-226). Springer,\nCham.](https://link.springer.com/chapter/10.1007/978-3-319-31753-3_18)\n3. [Rivolli, A., Garcia, L. P. F., Soares, C., Vanschoren, J., and de Carvalho,\nA. C. P. L. F. (2018). Characterizing classification datasets: a study of\nmeta-features for meta-learning.\narXiv:1808.10406.](https://arxiv.org/abs/1808.10406v2)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fealcobaca%2Fpymfe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fealcobaca%2Fpymfe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fealcobaca%2Fpymfe/lists"}