国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

python - 急求問——關(guān)于iteritems不能用的問題

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

問題描述

明天就是畢設(shè)中期答辯了,想趕一下進(jìn)度,現(xiàn)在是做貝葉斯網(wǎng)絡(luò)預(yù)測模型,在網(wǎng)上找了一個例子,想跑一下試試,結(jié)果報錯iteritems用不了,好像是Python版本的問題,想問問有沒有什么比較快速一點(diǎn)的解決辦法,救急如救火,先謝謝各位了

# 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?)

數(shù)據(jù)格式如下,文件名為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

文檔里有例子的。

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

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 在线aaa| 91人成亚洲高清在线观看 | 精品日韩欧美一区二区三区 | 国产精品二区页在线播放 | 毛片在线免费播放 | 香港经典a毛片免费观看爽爽影院 | 国产成人综合视频 | 亚洲字幕 | 日本美女视频韩国视频网站免费 | 欧美国产成人在线 | 黄色资源网址 | 国产一级做a爰片在线看 | 国产ssss在线观看极品 | 欧美资源在线观看 | xxxx肥婆性bbbb欧美 | 国产精品女在线观看 | 国产一区亚洲欧美成人 | 亚洲欧洲日本天天堂在线观看 | 久久精品久久精品久久 | 精品一区二区三区在线观看l | 99久久国产综合精品五月天 | 日韩一级不卡 | 久久高清一级毛片 | 香港国产特级一级毛片 | 国产精品国产高清国产专区 | 一区二区三区在线 | 日本 | 美女视频黄免费 | 日本视频三区 | 亚洲精品色综合色在线观看 | 久久精品国产99国产精品亚洲 | 日本高清色本在线www | 欧美成人伊人十综合色 | 国产亚洲一区二区三区在线观看 | www色在线| 亚洲视频免费播放 | 国产农村乱子伦精品视频 | 成 人 黄 色 大 片 | 日本韩国中文字幕 | 国产三级日本三级日产三 | 久久99爰这里有精品国产 | 黄色a一片|