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

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

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

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

問(wèn)題描述

明天就是畢設(shè)中期答辯了,想趕一下進(jìn)度,現(xiàn)在是做貝葉斯網(wǎng)絡(luò)預(yù)測(cè)模型,在網(wǎng)上找了一個(gè)例子,想跑一下試試,結(jié)果報(bào)錯(cuò)iteritems用不了,好像是Python版本的問(wèn)題,想問(wèn)問(wèn)有沒(méi)有什么比較快速一點(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()

報(bào)錯(cuò)如下:

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

問(wèn)題解答

回答1:

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

是誰(shuí)教你的?建議這樣寫:

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)然還能再省三行,不過(guò)那樣就對(duì)新手不太友好了。

PS: 報(bào)錯(cuò)里根本沒(méi)有提到 iteritems。這是個(gè) Python 2.x 才需要的方法,Python 3.x 里直接用 items 就可以了。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 黄页美女 | 国产精品一在线观看 | 午夜欧美精品久久久久久久久 | 男人的天堂久久香蕉国产 | 特级做a爰片毛片免费看 | 国内精品视频成人一区二区 | 日韩欧美一二区 | 亚洲视频一区二区三区 | 国产美女一级毛片 | 免费人欧美成又黄又爽的视频 | 国产xh98hx在线观看 | 好爽~好硬~好紧~蜜芽 | 能看毛片的网址 | 国产成人精品久久一区二区三区 | 国产区网址 | 手机看片1024精品日韩 | 亚洲视频免费一区 | 欧美3p精品三区 | 欧美日韩亚洲第一页 | 亚洲精品亚洲人成在线麻豆 | 欧美做爰野外在线视频观看 | 最新在线精品国自拍视频 | 日韩免费在线 | 亚洲影院手机版777点击进入影院 | 免费一区二区三区视频狠狠 | 中日韩一区二区三区 | 伊大人香蕉久久网 | 国产精品1区 2区 3区 | 日韩久久久精品中文字幕 | 国产一区二区在免费观看 | 热99re久久精品香蕉 | 在线观看人成网站深夜免费 | 99视频国产精品 | 99精品高清不卡在线观看 | 91精品专区 | 精品国产品欧美日产在线 | 亚洲欧洲一区二区三区在线 | 91视频久久| 久久久久久免费视频 | 久久99精品综合国产首页 | 中文字幕国产视频 |