亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

python - 急求問——關于iteritems不能用的問題

瀏覽:102日期:2022-07-29 15:15:29

問題描述

明天就是畢設中期答辯了,想趕一下進度,現在是做貝葉斯網絡預測模型,在網上找了一個例子,想跑一下試試,結果報錯iteritems用不了,好像是Python版本的問題,想問問有沒有什么比較快速一點的解決辦法,救急如救火,先謝謝各位了

# Example of Naive Bayes implemented from Scratch in Pythonimport csvimport randomimport mathdef loadCsv(filename): lines = csv.reader(open(filename, 'rb')) dataset = list(lines) for i in range(len(dataset)):dataset[i] = [float(x) for x in dataset[i]] return datasetdef splitDataset(dataset, splitRatio): trainSize = int(len(dataset) * splitRatio) trainSet = [] copy = list(dataset) while len(trainSet) < trainSize:index = random.randrange(len(copy))trainSet.append(copy.pop(index)) return [trainSet, copy]def separateByClass(dataset): separated = {} for i in range(len(dataset)):vector = dataset[i]if (vector[-1] not in separated): separated[vector[-1]] = []separated[vector[-1]].append(vector) return separateddef mean(numbers): return sum(numbers)/float(len(numbers))def stdev(numbers): avg = mean(numbers) variance = sum([pow(x-avg,2) for x in numbers])/float(len(numbers)-1) return math.sqrt(variance)def summarize(dataset): summaries = [(mean(attribute), stdev(attribute)) for attribute in zip(*dataset)] del summaries[-1] return summariesdef summarizeByClass(dataset): separated = separateByClass(dataset) summaries = {} for classValue, instances in separated.iteritems():summaries[classValue] = summarize(instances) return summariesdef calculateProbability(x, mean, stdev): exponent = math.exp(-(math.pow(x-mean,2)/(2*math.pow(stdev,2)))) return (1 / (math.sqrt(2*math.pi) * stdev)) * exponentdef calculateClassProbabilities(summaries, inputVector): probabilities = {} for classValue, classSummaries in summaries.iteritems():probabilities[classValue] = 1for i in range(len(classSummaries)): mean, stdev = classSummaries[i] x = inputVector[i] probabilities[classValue] *= calculateProbability(x, mean, stdev) return probabilitiesdef predict(summaries, inputVector): probabilities = calculateClassProbabilities(summaries, inputVector) bestLabel, bestProb = None, -1 for classValue, probability in probabilities.iteritems():if bestLabel is None or probability > bestProb: bestProb = probability bestLabel = classValue return bestLabeldef getPredictions(summaries, testSet): predictions = [] for i in range(len(testSet)):result = predict(summaries, testSet[i])predictions.append(result) return predictionsdef getAccuracy(testSet, predictions): correct = 0 for i in range(len(testSet)):if testSet[i][-1] == predictions[i]: correct += 1 return (correct/float(len(testSet))) * 100.0def main(): filename = ’pima-indians-diabetes.data.csv’ splitRatio = 0.67 dataset = loadCsv(filename) trainingSet, testSet = splitDataset(dataset, splitRatio) print(’Split {0} rows into train={1} and test={2} rows’).format(len(dataset), len(trainingSet), len(testSet)) # prepare model summaries = summarizeByClass(trainingSet) # test model predictions = getPredictions(summaries, testSet) accuracy = getAccuracy(testSet, predictions) print(’Accuracy: {0}%’).format(accuracy)main()

報錯如下:

Traceback (most recent call last): File 'E:/Data/BEYES/data_test.py', line 101, in <module> main() File 'E:/Data/BEYES/data_test.py', line 91, in main dataset = loadCsv(filename) File 'E:/Data/BEYES/data_test.py', line 8, in loadCsv dataset = list(lines)_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

數據格式如下,文件名為pima-indians-diabetes.data.csv:

6,148,72,35,0,33.6,0.627,50,11,85,66,29,0,26.6,0.351,31,08,183,64,0,0,23.3,0.672,32,11,89,66,23,94,28.1,0.167,21,00,137,40,35,168,43.1,2.288,33,15,116,74,0,0,25.6,0.201,30,03,78,50,32,88,31.0,0.248,26,110,115,0,0,0,35.3,0.134,29,02,197,70,45,543,30.5,0.158,53,18,125,96,0,0,0.0,0.232,54,14,110,92,0,0,37.6,0.191,30,010,168,74,0,0,38.0,0.537,34,110,139,80,0,0,27.1,1.441,57,01,189,60,23,846,30.1,0.398,59,15,166,72,19,175,25.8,0.587,51,17,100,0,0,0,30.0,0.484,32,10,118,84,47,230,45.8,0.551,31,17,107,74,0,0,29.6,0.254,31,11,103,30,38,83,43.3,0.183,33,01,115,70,30,96,34.6,0.529,32,13,126,88,41,235,39.3,0.704,27,08,99,84,0,0,35.4,0.388,50,07,196,90,0,0,39.8,0.451,41,19,119,80,35,0,29.0,0.263,29,111,143,94,33,146,36.6,0.254,51,1

問題解答

回答1:

lines = csv.reader(open(filename, 'rb'))

是誰教你的?建議這樣寫:

def loadCsv(filename): dataset = [] with open(filename) as f:reader = csv.reader(f)for row in reader: dataset.append([float(x) for x in row]) return dataset

文檔里有例子的。

當然還能再省三行,不過那樣就對新手不太友好了。

PS: 報錯里根本沒有提到 iteritems。這是個 Python 2.x 才需要的方法,Python 3.x 里直接用 items 就可以了。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 美女黄色网 | 亚洲欧美精品成人久久91 | 国产精品亚洲精品爽爽 | 免费观看日本a毛片 | 一级黄色斤 | 国产在视频线精品视频 | 国产免费影院 | 欧美三级成人观看 | 免费黄在线看 | 日韩一级片视频 | 久久国产精品一区二区三区 | 精品久久久久久午夜 | 亚洲国产精品日韩一线满 | 成人免费视频网 | 国产大片免费观看中文字幕 | 亚洲日本人成中文字幕 | 国产福利免费在线观看 | 国产成人精品午夜免费 | a级亚洲片精品久久久久久久 | 久久这里只有精品首页 | 免费在线观看a级毛片 | 91热成人精品国产免费 | 视频在线观看rrr在线观看 | 亚洲国产成人久久综合区 | 日韩毛片大全 | 澳门成人免费永久视频 | 亚州精品一区二区三区 | 一级毛片一级毛片免费毛片 | 成年女美黄网站大全免费播放 | 黄色中文字幕在线观看 | 日本一区毛片免费观看 | 天天噜噜色 | 日本亚洲精品无码专区 | a级毛片视频免费观看 | 日产国产精品久久久久久 | 99国内精品| 一本一道久久综合狠狠老 | 高h喷水荡肉爽文np肉色文 | 国产一区二区三区不卡在线观看 | 欧美人一级淫片a免费播放 欧美人七十二式性视频教程一 | 日本黄色网页 |