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
    [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)

  2. #2
    Expert éminent
    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
    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é
    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
    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
    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
    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é
    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
    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

###raw>template_hook.ano_emploi###