鱼C论坛

 找回密码
 立即注册
查看: 1830|回复: 2

大佬们帮忙看看这个最最最基本的朴素贝叶斯代码有什么问题啊

[复制链接]
发表于 2020-5-18 15:27:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import random

def generate_dataset(num_instances, num_attributes):
    X = [] # all feature values for each instance in the dataset
    y = [] # all label values for each instance in the dataset

    for i in range(num_instances):
        current_instance = []
        for j in range(num_attributes):
            current_instance.append(random.randint(1,3))
        X.append(current_instance)
        y.append(random.randint(0,1))

    return (X, y)

def print_dataset(dataset):
    X = dataset[0]
    y = dataset[1]
    print("Dataset:")
    for i in range(len(X)):
        for j in range(len(X[i])):
            print(str(X[i][j]), end = "\t")
        print(y[i])

def NB(training_dataset, testing_dataset) :
    X_training = training_dataset[0]
    y_training = training_dataset[1]
    X_testing = testing_dataset[0]
    Freq_1 = 0
    Freq_0 = 0
    predicted_y = []
    print(X_training)###
    print(y_training)###
    print(X_testing) ###
    for h in y_training :
        if h == 1 :
            Freq_1 += 1
        else :
            Freq_0 += 1
    P_0 = Freq_1/(len(y_training))
    P_1 = Freq_0/(len(y_training))
    for i in range(len(X_testing)):
        Final_P_1 = 1
        Final_P_0 = 1
        for j in range(len(X_testing[i])) :
            freq_P_j_1 = 0
            freq_P_j_0 = 0
            for k in range(len(X_training)) :
                if X_training[k][j] == X_testing[i][j] and y_training[k] == 1 :
                    freq_P_j_1 += 1
                elif X_training[k][j] == X_testing[i][j] and y_training[k] == 0 :
                    freq_P_j_0 += 0
            P_j_1 = freq_P_j_1/(freq_P_j_1 + freq_P_j_0)
            P_j_0 = freq_P_j_0/(freq_P_j_1 + freq_P_j_0)
            Final_P_1 = Final_P_1 * P_j_1
            Final_P_0 = Final_P_0 * P_j_0
        Final_P_1 = Final_P_1 * P_1
        Final_P_0 = Final_P_0 * P_0
        if Final_P_1 > Final_P_0 :
            Output = 1
        elif Final_P_1 < Final_P_0 :
            Output = 0
        predicted_y.append(Output)
    return predicted_y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-18 15:28:38 | 显示全部楼层
最后的预测值为什么全都是1...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 15:29:49 | 显示全部楼层
emmm  机器学习还没学....不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 17:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表