python中从头开始的朴素贝叶斯,结果为';进程已完成,退出代码为0';

python中从头开始的朴素贝叶斯,结果为';进程已完成,退出代码为0';,python,naivebayes,Python,Naivebayes,我是PyCharm的新手,我在网上发现了两个关于分类技术的代码,使用朴素贝叶斯分类。此代码没有错误。但是我可以看到结果,即使我使用print()。我正在使用库虹膜数据集。这是我的密码 import csv import math import random import pandas as pd from sklearn import datasets def loadCsv(filename): #lines = csv.reader(open(r'E:\KULIAH\TUGAS A

我是PyCharm的新手,我在网上发现了两个关于分类技术的代码,使用朴素贝叶斯分类。此代码没有错误。但是我可以看到结果,即使我使用
print()
。我正在使用库虹膜数据集。这是我的密码

import csv
import math
import random
import pandas as pd
from sklearn import datasets

def loadCsv(filename):
    #lines = csv.reader(open(r'E:\KULIAH\TUGAS AKHIR\MachineLearning\kananniih.csv'))
    lines = datasets.load_iris()
    print(lines)
    dataset = list(lines)
    for i in range(len(dataset)):
        dataset[i] = [float(x) for x in dataset[i]]
        return dataset;

#spliit dataa
def 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]

#dikumpulkan berdasar kelas
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 separated

#hitung mean
def mean(numbers):
    return sum(numbers)/float(len(numbers))

#hitung standard deviasi
def stdev(numbers):
    avg = mean(numbers)
    variance = sum([pow(x-avg,2) for x in numbers])/float(len(numbers)-1)
    return math.sqrt(variance)

#hitung jumlah dataset
def summarize(dataset):
    summaries = [(mean(attribute), stdev(attribute)) for attribute in zip(*dataset)]
    del summaries[-1]
    return summaries

#hitung atribut tiap kelas
def summarizeByClass(dataset):
    separated = separateByClass(dataset)
    summaries = {}
    for classValue, instances in separated.items():
        summaries[classValue] = summarize(instances)
        return summaries

#hitung Gaussian PDF
def 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))*exponent

#hitung probabilitas kelas
def calculateClassProbabilities(summaries, inputVector):
    probabilities = {}
    for classValue, classSummaries in summaries.items():
        probabilities[classValue] = 1
        for i in range(len(classSummaries)):
            mean, stdev = classSummaries[i]
            x = inputVector[i]
            probabilities[classValue] *= calculateProbability(x, mean, stdev)
            return probabilities

#make prediction
def predict(summaries, inputVector):
    probabilities = calculateClassProbabilities(summaries, inputVector)
    bestLabel, bestProb = None, -1
    for classValue, probability in probabilities.items():
        if bestLabel is None or probability > bestProb:
            bestProb = probability
            bestLabel = classValue
            return bestLabel

#make prediction
def getPredictions(summaries, testSet):
    predictions = []
    for i in range(len(testSet)):
        result = predict(summaries, testSet[i])
        predictions.append(result)
        return predictions

#get accurancy
def 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.0

def main():
    filename = datasets.load_iris()
    splitRatio = 0.67
    dataset = loadCsv(filename)
    print(dataset)
    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()
导入csv
输入数学
随机输入
作为pd进口熊猫
从sklearn导入数据集
def loadCsv(文件名):
#lines=csv.reader(打开(r'E:\KULIAH\TUGAS-AKHIR\MachineLearning\kanannih.csv'))
行=数据集。加载\u iris()
打印(行)
数据集=列表(行)
对于范围内的i(len(数据集)):
数据集[i]=[数据集[i]中x的浮点(x)]
返回数据集;
#spliit dataa
def splitDataset(数据集,拆分比率):
列车大小=整数(长度(数据集)*拆分比率)
列车组=[]
复制=列表(数据集)
而len(列车组)<列车尺寸:
索引=随机。随机范围(len(副本))
列车组追加(复制.弹出(索引))
返回[列车组,副本]
#迪库姆普尔坎-贝尔达萨群岛
def separateByClass(数据集):
分离={}
对于范围内的i(len(数据集)):
向量=数据集[i]
如果(向量[-1]未分隔):
分离的[向量[-1]]=[]
分隔的[vector[-1]]。追加(vector)
分开返回
#hitung mean
def平均值(数字):
返回和(数字)/浮动(长度(数字))
#希通标准设备
def stdev(编号):
平均值=平均值(数字)
方差=总和([pow(x-avg,2)表示x个数字])/float(len(数字)-1)
返回math.sqrt(方差)
#hitung jumlah数据集
def汇总(数据集):
摘要=[(平均值(属性)、标准偏差(属性))用于zip(*数据集)中的属性]
del摘要[-1]
报税表摘要
#hitung atribut tiap kelas
def SummaryByClass(数据集):
separated=separateByClass(数据集)
摘要={}
对于classValue,在分离的.items()中的实例:
摘要[classValue]=摘要(实例)
报税表摘要
#希东高斯PDF
def计算概率(x,平均值,标准差):
指数=math.exp(-(math.pow(x-mean,2)/(2*math.pow(stdev,2)))
返回(1/(数学sqrt(2*数学pi)*标准差))*指数
#希东概率
def计算分类概率(摘要、输入向量):
概率={}
对于classValue,在summaries.items()中选择classSummaries:
概率[类别值]=1
对于范围内的i(len(类摘要)):
平均值,stdev=classSummaries[i]
x=输入向量[i]
概率[classValue]*=计算概率(x,平均值,标准差)
返回概率
#预测
def预测(摘要、输入向量):
概率=计算的分类概率(摘要、输入向量)
bestLabel,bestProb=无,-1
对于classValue,概率中的概率。items()
如果bestLabel为无或概率>bestProb:
bestProb=概率
bestLabel=classValue
返回最佳标签
#预测
def getPredictions(摘要、测试集):
预测=[]
对于范围内的i(len(testSet)):
结果=预测(摘要,测试集[i])
预测。追加(结果)
回归预测
#准确
def GetAccurance(测试集、预测):
正确=0
对于范围内的i(len(testSet)):
如果测试集[i][1]==预测[i]:
正确+=1
返回(正确/浮动(len(testSet)))*100.0
def main():
filename=dataset.load_iris()
分流比=0.67
dataset=loadCsv(文件名)
打印(数据集)
trainingSet,testSet=splitDataset(dataset,splitRatio)
打印('Split{0}行为train={1}和test={2}行')。格式(len(数据集)、len(训练集)、len(测试集)))
#准备模型
摘要=摘要周期类(培训集)
#测试模型
预测=获取预测(摘要、测试集)
精度=获取精度(测试集、预测)
打印(('accurity:{0}%')。格式(accurity))
main()
你们能帮帮我吗?非常感谢!
向你问好,Eliya

对不起,我打错了。我的意思是我看不到结果不要缩进最后一行:
main()