“J'ai obtenu 1 colonnes au lieu de ...” erreur dans numpy
Je suis en train de travailler sur le code suivant pour l'exécution de la Forêt au Hasard Classification des trains et des jeux de test;
from sklearn.ensemble import RandomForestClassifier
from numpy import genfromtxt, savetxt
def main():
dataset = genfromtxt(open('filepath','r'), delimiter=' ', dtype='f8')
target = [x[0] for x in dataset]
train = [x[1:] for x in dataset]
test = genfromtxt(open('filepath','r'), delimiter=' ', dtype='f8')
rf = RandomForestClassifier(n_estimators=100)
rf.fit(train, target)
predicted_probs = [[index + 1, x[1]] for index, x in enumerate(rf.predict_proba(test))]
savetxt('filepath', predicted_probs, delimiter=',', fmt='%d,%f',
header='Id,PredictedProbability', comments = '')
if __name__=="__main__":
main()
Cependant j'obtiens l'erreur suivante lors de l'exécution;
----> dataset = genfromtxt(open('C:/Users/Saurabh/Desktop/pgm/Cora/a_train.csv','r'), delimiter='', dtype='f8')
ValueError: Some errors were detected !
Line #88 (got 1435 columns instead of 1434)
Line #93 (got 1435 columns instead of 1434)
Line #164 (got 1435 columns instead of 1434)
Line #169 (got 1435 columns instead of 1434)
Line #524 (got 1435 columns instead of 1434)
...
...
...
Des suggestions quant à la façon de l'éviter?? Merci.
OriginalL'auteur user3466132 | 2014-04-29
Vous devez vous connecter pour publier un commentaire.
genfromtxt
va donner à cette erreur si le nombre de colonnes est inégale.Je peux penser de 3 façons:
1. Utiliser le
usecols
paramètreCependant, cela peut signifier que vous perdez des données (où les lignes sont plus que 1434 colonnes) - si oui ou non ce qui compte c'est à vous de voir.
2. Ajuster votre fichier de données d'entrée de sorte qu'il a un nombre égal de colonnes.
3. Utiliser autre chose que
genfromtxt:
.............comme ceci
OriginalL'auteur atomh33ls
Une exception est levée si une incohérence est détectée dans le nombre de colonnes.Un certain nombre de raisons et des solutions sont possibles.
Ajouter
invalid_raise = False
ignorer la délinquance lignes.dataset = genfromtxt(open('data.csv','r'), delimiter='', invalid_raise = False)
Si vos données contiennent des Noms, assurez-vous que le nom de champ ne contient pas d'espace ou de caractère non valide, ou qu'il ne correspond pas au nom d'un attribut standard (telles que la taille ou la forme), ce qui nuirait à l'interprète.
Référence: numpy.genfromtxt
OriginalL'auteur zeeshan khan
Vous avez trop de colonnes dans l'une de vos lignes. Par exemple
OriginalL'auteur user545424
J'ai eu cette erreur. La cause était une seule entrée dans mes données d'un espace. Cela a causé à la voir comme une ligne supplémentaire. Assurez-vous que toutes les espacement cohérente dans l'ensemble de toutes les données.
OriginalL'auteur Jonathon D
Il semble que l'en-tête qui comprend les noms de colonne ont 1 plus de colonnes que la donnée elle-même (1435 colonnes d'en-tête vs 1434 sur les données).
Vous pouvez soit:
1) Éliminer la colonne 1 de l'en-tête qui n'a pas de sens avec les données
OU
2) Utilisez le saut de l'en-tête de genfromtxt()
par exemple,
np.genfromtxt('myfile', skip_header=*how many lines to skip*, delimiter=' ')
plus d'informations trouvées dans le la documentation.
OriginalL'auteur tadf2
Dans mon cas, l'erreur a suscité en raison d'avoir un symbole spécial dans la ligne.
Cause d'erreur: avoir les caractères spéciaux comme
Exemple de fichier csv
1,bonjour,',', échoue
-----CODE-----
import numpy comme numpy
données = numpy.genfromtxt(fichier, delimiter=délimiteur) #Erreur
Environnement Note:
OS: Ubuntu
csv editor: LibreOffice
IDE: Pycharm
OriginalL'auteur hemant c
J'ai aussi eu ce message d'erreur quand je tente également de charger un texte dataset avec genfromtext et de faire de la classification de textes avec Keras.
Le format des données est:
[some_text]\t[class_label]
.Ma compréhension est qu'il y a certains caractères dans la 1ère colonne qui en quelque sorte de confondre l'analyseur et les deux colonnes ne peuvent pas être répartis correctement.
cet extrait créés de la même ValueError avec la vôtre, et ma première solution a été de tout lire en une seule colonne:
et de diviser les données plus tard par moi-même.
Cependant, ce qui a finalement fonctionné correctement était de définir explicitement le commentaire de paramètre dans genfromtxt.
Selon la documentation:
de caractères par défaut qui indique un commentaire est"#", et donc si ce caractère est inclus dans votre colonne de texte, tout est ignoré après. C'est probablement pourquoi les deux colonnes ne peuvent pas être reconnu par genfromtext.
OriginalL'auteur KLaz