Wat is het ARFF-bestandsformaat?
Een .arff-bestand is het eigen datasetformaat voor de Weka machine learning workbench, ontwikkeld door de Machine Learning Group aan de University of Waikato. Het slaat gelabelde datasets op als platte tekst met een gestructureerde schema-header, waardoor het een veelgebruikt uitwisselingsformaat is in academisch onderzoek naar machine learning.
Een .arff-bestand heeft twee secties. De header begint met @relation (de naam van de dataset), gevolgd door @attribute-declaraties die de naam en het type van elk kenmerk definiëren. Ondersteunde types zijn onder meer NUMERIC, INTEGER, REAL, STRING, DATE (ISO 8601) en nominaal (een expliciete lijst met waarden tussen accolades {}). De @data-sectie volgt met door komma's gescheiden instanties, één per regel; ontbrekende waarden worden gemarkeerd met ?. Regels die beginnen met % zijn commentaren.
Een sparse variant gebruikt {index waarde}-paren voor hoogdimensionale datasets waarbij de meeste waarden nul zijn - gebruikelijk bij tekstclassificatie. Het @relational attribuattype ondersteunt geneste sub-datasets voor multi-instance learning.
Ondanks de ouderdom wordt .arff breed ondersteund buiten Weka: Python leest het via scipy.io.arff.loadarff(), R verwerkt het met het foreign-pakket en veel ML-toolkits accepteren het als uitwisselingsformaat. Voor rijkere metadata en gewichten per instantie is het op XML gebaseerde .xrff de opvolger, hoewel .arff en .csv in de praktijk gebruikelijker blijven.
Beveiliging & veiligheid
RISICO: LOWTekstgebaseerd databestand; geen uitvoerbare inhoud. Veilig te openen in elke tekstverwerker. Weka verwerkt het in een JVM-sandbox.
Formaatdetails
in een notendopProgramma's die ARFF-bestanden openen
Technische details
diepe specificaties| Codering | Platte tekst (historisch ASCII; UTF-8 in modern Weka) |
| Bestandsstructuur | Header (@relation + @attribute declaraties) gevolgd door @data sectie |
| Attribuuttypes | NUMERIC, INTEGER, REAL, STRING, DATE, NOMINAL (waardenlijst tussen accolades), RELATIONAL |
| Token voor ontbrekende waarde | ? vertegenwoordigt elke ontbrekende waarde in de @data sectie |
| Commentaar-syntaxis | Regels die beginnen met % zijn commentaren; overal in het bestand toegestaan |
| Sparse ARFF variant | {index waarde} paren in @data sectie voor hoogdimensionale sparse datasets |
| Datumformaat | ISO 8601 datum/tijd-strings binnen DATE attribuutdeclaraties |
| Ondersteuning voor geneste data | @relational attribuuttype codeert sub-datasets voor multi-instance learning |
| MIME-type | text/plain (geen specifiek MIME-type geregistreerd) |
| Typische bestandsgrootte | 1 KB - 500 MB (benchmark-datasets meestal 1-50 MB) |
| Python-ondersteuning | scipy.io.arff.loadarff() in SciPy; zelfstandig arff-pakket op PyPI |
| R-ondersteuning | read.arff() in het foreign-pakket |
| Op XML gebaseerde opvolger | XRFF-formaat voegt instantie-gewichten en rijkere dataset-metadata toe |
| Platform | Cross-platform: Windows, Linux, macOS |
| Uitgebracht | 1993 (Weka project, University of Waikato) |
| Laatste versie | ARFF with relational attributes (Weka 3.x, extended ~2005) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | waikato.github.io |
ARFF conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over ARFF-bestanden.
Veelgestelde vragen
Hoe open ik een ARFF-bestand?
scipy.io.arff.loadarff() of het arff-pakket.Hoe converteer ik ARFF naar CSV?
@relation / @attribute header-regels verwijderen en de @data-sectie behouden - deze is al door komma's gescheiden.