IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques d'apprentissage automatique Discussion :

[scikit-learn] text features in csv large files


Sujet :

Bibliothèques d'apprentissage automatique

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut [scikit-learn] text features in csv large files
    Bonjour

    J'ai un dataset (fichier csv, ci-joint en extension txt).
    Il contient des features de type texte.
    Le fichier original contient beaucoup de lignes (+50000)

    Je veux travailler avec ce fichier dans sklearn.
    Quand le nombre de lignes est réduit à 1000 les choses marchent normales.
    Mais avec un nombre de lignes (+50000) l''ordinateur Bug cause de mémoire est c'est normal, car j'ai fait:

    1- Encoding categorical data (colonne 3,4,5 et 6)
    2- Splitting the dataset into the Training set and Test set
    3- Feature Scaling

    Bag word model est une solution
    C'est normal que l'ordinateur bloque à cause de ça, car il y a un très grand nombre de colonnes à cause des points 1 et 3.

    Proposez-moi des solutions
    Merci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    # Simple Linear Regression
     
    # Importing the libraries
    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
     
    # Importing the dataset
    dataset = pd.read_csv('Data_Small.csv', header = None)
    X = dataset.iloc[:, :-1].values
    y = dataset.iloc[:, 7].values
     
    # Encoding categorical data
    # Encoding the Independent Variable
    from sklearn.preprocessing import LabelEncoder, OneHotEncoder
     
    labelencoder_X_3 = LabelEncoder()
    X[:, 3] = labelencoder_X_3.fit_transform(X[:, 3])
    labelencoder_X_4 = LabelEncoder()
    X[:, 4] = labelencoder_X_4.fit_transform(X[:, 4])
    labelencoder_X_5 = LabelEncoder()
    X[:, 5] = labelencoder_X_5.fit_transform(X[:, 5])
    labelencoder_X_6 = LabelEncoder()
    X[:, 6] = labelencoder_X_6.fit_transform(X[:, 6])
     
    onehotencoder = OneHotEncoder(categorical_features = [3,4,5,6])
    X = onehotencoder.fit_transform(X).toarray()
     
    # Splitting the dataset into the Training set and Test set
    from sklearn.cross_validation import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
     
    # Feature Scaling
    from sklearn.preprocessing import StandardScaler
    sc_X = StandardScaler()
    X_train = sc_X.fit_transform(X_train)
    X_test = sc_X.transform(X_test)
     
    # Fitting Logistic Regression to the Training set
    from sklearn.linear_model import LogisticRegression
    classifier = LogisticRegression(random_state = 0)
    classifier.fit(X_train, y_train)
     
    # Predicting the Test set results
    y_pred = classifier.predict(X_test)
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je ne connais pas sklearn (et c'est bien dommage...), mais s'il est possible de faire un traitement ligne par ligne, cela permettrait d'échapper au problème de mémoire. Pour la lecture du fichier csv, aucun problème pour lire ligne par ligne.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut csv
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    Je ne connais pas sklearn (et c'est bien dommage...), mais s'il est possible de faire un traitement ligne par ligne, cela permettrait d'échapper au problème de mémoire. Pour la lecture du fichier csv, aucun problème pour lire ligne par ligne.
    Merci, avec sklearn le travail est dans une boite noir

  4. #4
    Membre habitué Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Points : 137
    Points
    137
    Par défaut
    Es-tu obligé de traiter le fichier en entier d'un coup?
    Sinon, il y a la solution de découper ce fichier en plusieurs morceaux et de traiter chaque 'sous fichier' indépendamment, puis de regrouper les résultats ensuite.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 277
    Points : 36 762
    Points
    36 762
    Par défaut
    Salut,

    scikit-learn documente quelques stratégies à appliquer dans ce cas là.

    note: savoir laquelle serait la plus pertinente à appliquer dans votre cas (et la mettre en musique) est un travail qui demande du temps à passer dans l'étude de votre jeu de données et dans une série d'essais/erreurs pour la mise au point... Mais quelqu'un passant par là aura peut être une idée géniale plus facilement exploitable.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut sklearn
    Citation Envoyé par racine carrée Voir le message
    Es-tu obligé de traiter le fichier en entier d'un coup?
    Sinon, il y a la solution de découper ce fichier en plusieurs morceaux et de traiter chaque 'sous fichier' indépendamment, puis de regrouper les résultats ensuite.
    Quand le travail est fait avec un bibliothèque comme sklearn, je pense que l'algorithme fonctionne directement sur l'intégralité des données. Exemple k plus proches voisins

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    scikit-learn documente quelques stratégies à appliquer dans ce cas là.

    note: savoir laquelle serait la plus pertinente à appliquer dans votre cas (et la mettre en musique) est un travail qui demande du temps à passer dans l'étude de votre jeu de données et dans une série d'essais/erreurs pour la mise au point... Mais quelqu'un passant par là aura peut être une idée géniale plus facilement exploitable.

    - W
    Merci.
    Au début j'ai que 7 features (7 colonne) là les choses sont normal.
    Mais quand je fais:
    - Encoding of categorical data (columns 3,4,5 and 6)

    Le nombre de colonnes devient grand à cause des fetures text différents

  8. #8
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Bonjour zargooo04,

    Scikit-Learn ne permet pas de découper les données comme le font certaines Frameworks de deep-learning et oblige à charger tout le jeu de données en RAM.

    Pour résoudre ton problème, au vu de ce que j'en comprends, je réduirais les dimensions comme tu le fais ou à partir d'un PCA ou d'une clusterisation.

    Je connais mal tes données dont tu dis qu’elles sont en partie textuelles, la labellisation d'un texte peut être extrêmement coûteuse et le passage à ma matrice terme-document aussi. Tu peux si c'est du texte français supprimer les mots vides et faire toute une suite d'opération pour simplifier ton jeu de données comme la tokenisation par exemple.

    Bien cordialement,

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut categorical features grand nombre de valeur
    Bonjour,

    Je cherche une solution pour résoudre le problème des features catégoriques.
    Mes features catégoriques ont plusieurs valuer, donc après ce code:
    ------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    from sklearn.preprocessing import LabelEncoder, OneHotEncoder
    labelencoder_X_3 = LabelEncoder()
    X[:, 3] = labelencoder_X_3.fit_transform(X[:, 3])
    onehotencoder = OneHotEncoder(categorical_features = [3])
    X = onehotencoder.fit_transform(X).toarray()
    ------

    J'ai beaucoup de colonnes.
    Y a une solution pour résoudre ce problème ?
    Le programme est utilisé dans un algorithme d'apprentissage "classification" bibliothèque sklearn

Discussions similaires

  1. Lecture d'un fichier texte dans un batch file
    Par cels dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 06/08/2009, 11h12
  2. Couleur du texte en export CSV / XLS
    Par afrodje dans le forum ASP
    Réponses: 7
    Dernier message: 17/02/2009, 13h23
  3. CSV Files à nouveau
    Par zis0907 dans le forum MATLAB
    Réponses: 0
    Dernier message: 09/04/2008, 11h11
  4. Matab csv files
    Par zis0907 dans le forum MATLAB
    Réponses: 18
    Dernier message: 07/04/2008, 14h50
  5. Convertir un fichier texte du format csv au format hws
    Par slayer23 dans le forum MATLAB
    Réponses: 8
    Dernier message: 14/06/2007, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo