Question 1 :
Maintenant, j'ai plus de 400 000 éléments de données. Je dois utiliser une sorte d'algorithme de classification d'apprentissage automatique pour créer un modèle pour ces données. Le problème que j'ai rencontré est que les données sont trop volumineuses et ne peuvent pas être lues en même temps. Je voudrais poser des questions à ce sujet. Comment traiter les données ?
Question 2 :
J'ai une question sur la validation croisée sklearn : si j'ai 10 000 données d'entraînement, ces 10 000 ensembles de données d'entraînement peuvent être divisés en n groupes d'entraînement en utilisant la méthode KFold basée sur le principe de validation croisée (les données d'entraînement comptent pour 0,7) .Je ne comprends pas maintenant. Autrement dit, j'effectue fit() sur l'ensemble d'entraînement du premier groupe, puis j'effectue une vérification de prédiction sur l'ensemble de test pour obtenir la précision de la prédiction. précision? Est-ce que cela affectera la prochaine séance d’entraînement ? De plus, le dernier modèle entraîné sera-t-il utilisé dans la prochaine fonction fit() ?
J'ai récemment étudié l'exploration de données et l'analyse du big data. Concernant la question 1, j'ai une idée pour votre référence : comme elle ne peut pas être lue en même temps, vous pouvez construire un modèle de données distribué, lire les données par lots et déterminer. l'adresse datanode (il peut s'agir d'un nom de variable), créez un namenode (une table correspondant au nom et à l'adresse), puis lors de l'obtention des données, confirmez d'abord l'adresse dans le namenode (quelle variable correspond aux données qui sont nécessaire), puis accédez à l'adresse pour obtenir Les données sont traitées. Puisque je suis débutant, je donne simplement mes réflexions personnelles. La réponse n'est pas unique et est uniquement à titre de référence. Si vous ne l'aimez pas, ne la critiquez pas.
400 000, ce n'est pas beaucoup, quelques gigaoctets au maximum...
Si la mémoire est vraiment aussi petite que 8 Go, cela dépend toujours de votre scénario spécifique. Par exemple, compter simplement tf-idf, un générateur, seulement le dernier tf. -Le dictionnaire idf est en mémoire.
La validation croisée consiste simplement à sélectionner celui avec la plus petite erreur. Derrière l'influence précédente que vous avez mentionnée se cache le concept de boosting.
Il est préférable que ce type de site Web de questions-réponses ait une question et une fosse. Si nécessaire, deux questions distinctes peuvent être utilisées pour relier les liens afin d'éviter les questions à double canon
.(1) Voir Comment optimiser la vitesse, vous constaterez qu'il existe de nombreuses façons de contrôler l'expérience, notamment (a) en utilisant autant que possible des algorithmes simples (b) en profilant l'utilisation de la mémoire et la vitesse en fonction des conditions réelles ( c) Essayez de remplacer toutes les boucles imbriquées par des tableaux Numpy (d) Utilisez Cython Wrapper si nécessaire pour régler une bibliothèque de fonctions C/C++ plus efficace. Ce ne sont que des principes et des orientations de base. En fait, cela dépend toujours de l'analyse des goulots d'étranglement du problème que vous souhaitez résoudre, qu'il s'agisse de vitesse ou d'espace. Après avoir optimisé le code, vous pouvez envisager d'utiliser le calcul parallèle et d'autres méthodes
.(2) Votre question doit faire la distinction entre les exigences mathématiques et empiriques. J'espère que vous comprenez les significations empiriques et mathématiques du surajustement et du sous-ajustement. Les questions et réponses ici sont assez bonnes.