ValueError: impossible de convertir la chaîne de flotteur:
Je suis une ce tutoriel pour écrire un Naïf Classificateur de Bayes:
http://machinelearningmastery.com/naive-bayes-classifier-scratch-python/
Je reçois cette erreur:
dataset[i] = [float(x) for x in dataset[i]]
ValueError: could not convert string to float:
Voici la partie de mon code où l'erreur se produit:
def loadDatasetNB(filename):
lines = csv.reader(open(filename, "rt"))
dataset = list(lines)
for i in range(len(dataset)):
dataset[i] = [float(x) for x in dataset[i]]
return dataset
Et voici comment le fichier est appelé:
def NB_Analysis():
filename = 'fvectors.csv'
splitRatio = 0.67
dataset = loadDatasetNB(filename)
trainingSet, testSet = splitDatasetNB(dataset, splitRatio)
print('Split {0} rows into train={1} and test={2} rows').format(len(dataset), len(trainingSet), len(testSet))
# prepare model
summaries = summarizeByClassNB(trainingSet)
# test model
predictions = getPredictionsNB(summaries, testSet)
accuracy = getAccuracyNB(testSet, predictionsNB)
print('Accuracy: {0}%').format(accuracy)
NB_Analysis()
Mon fichier fvectors.csv ressemble à ceci
Ce qui ne va pas ici, et comment puis-je résoudre ce problème?
OriginalL'auteur Thom Elliott | 2017-03-26
Vous devez vous connecter pour publier un commentaire.
Essayer de sauter un en-tête, un vide-tête de la première colonne est à l'origine du problème.
Si vous souhaitez ignorer l'en-tête, vous pouvez la réaliser avec:
(2) Ou vous pouvez simplement ignorer l'exception:
Si vous décidez d'aller avec l'option (2), assurez-vous que vous passez seulement la première ligne ou uniquement les lignes qui contiennent du texte et vous le savez pour sûr.
OriginalL'auteur Taras Matsyk
En regardant l'image de vos données, python ne peut pas convertir la dernière colonne de données avec les valeurs
square
etcircle
. Aussi, vous disposez d'un en-tête de vos données que vous devez ignorer.Essayez d'utiliser ce code:
OriginalL'auteur James
Il y a une ligne vide.
Vous pouvez vérifier la valeur avant de lancer:
OriginalL'auteur Yuval Pruss
Vous êtes le chargement des chaînes dans le
float
constructeur ici, à moins que, dans des conditions spécifiques, génère une erreur:Au lieu d'utiliser une compréhension de liste, il serait peut-être préférable d'utiliser une boucle de sorte que vous pouvez gérer plus facilement ce cas:
Voir plus au sujet de la capture des exceptions ici:
Try/except en Python: Comment bien ignorer les Exceptions?
OriginalL'auteur Julien