我正在按照本教程编写朴素贝叶斯分类器:http: //machinelearningmastery.com/naive-bayes-classifier-scratch-python/
我不断收到此错误:
dataset[i] = [float(x) for x in dataset[i]]
ValueError: could not convert string to float:
这是我的代码中发生错误的部分:
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
这是文件的调用方式:
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()
这里出了什么问题,我该如何解决?
原文由 Thom Elliott 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试跳过标题,第一列中的空标题导致了问题。
如果你想跳过标题,你可以通过以下方式实现:
(2) 或者你可以忽略异常:
如果您决定使用选项 (2),请确保仅跳过第一行或仅跳过包含文本的行,并且您肯定知道。