Bonjour à tous,
Avant toute chose, je tiens à féliciter et à remercier tous les gens qui font vivre ce site. Il a régulièrement été une source d'informations précieuses au cours de mes années d'études.
Aujourd'hui je saute le pas car je me trouve face à un problème où mes limites en ML sont atteintes.
Très concrètement, tout est dans le titre: je souhaite importer de très gros fichiers de données dans ML (1Go<Taille<20Go). Ces fichiers contiennent xx colonnes qui elles même peuvent contenir des double ou des char.
En ce qui concerne ma machine, Windows 7-64 bits, ML R2010b, mémoire :
Je pense qu'on peut dire que je suis large...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Maximum possible array: 20400 MB (2.139e+010 bytes) * Memory available for all arrays: 20400 MB (2.139e+010 bytes) * Memory used by MATLAB: 554 MB (5.810e+008 bytes) Physical Memory (RAM): 6007 MB (6.299e+009 bytes)
Rq: Ce sont des CSV (qui, bien évidemment, contiennent des caractères non numériques) donc qui ne permettent pas d'utiliser csvread.
Ma première approche, qui marchait nickel pour des fichiers de taille plus petite, consistait à charger l'intégralité du fichier par le biais de importdata puis faire mon traitement pour ne garder que ce qui m'intéresse (double ou char en fonction des colonnes).
Quand j'arrive à des fichiers plus gros, ML refuse de les charger (le fameux "Out of Memory"). Donc je m'interroge sur la possibilité de scanner "ligne par ligne" ces fichiers afin de faire le traitement au "coup par coup" (ligne intéressante - je cast puis je stocke; ligne non pertinente - je passe à la suivante).
Je n'arrive pas à trouver d'information intéressante à ce sujet.
1/ Est-ce faisable?
2/ Avez-vous d'autres idées?
Rq: je ne peux même pas visualiser ces fichiers (ouverture en tableur impossible - il y a plus d'un Million de lignes). A terme, l'opération devra être totalement "aveugle" pour moi...
J'espère avoir été clair et je vous remercie d'avance, toute aide me sera précieuse!
Cdlt,
cg
Partager