python 手码实现朴素贝叶斯二分类无框架

数据集:https://archive.ics.uci.edu/ml/datasets/Adult

python 手码实现朴素贝叶斯二分类无框架_第1张图片

这个数据集是字符数据集,你需要自己进行清洗数据转换数据之类的,好在python的字符串操作特别简单,好处理。特征取了学位情况、工作职业性质、工作单位之类的。

朴素贝叶斯:https://www.bilibili.com/video/av36338359?from=search&seid=1177086802297258225

 

这个的数据集是预测一个人的年薪是否能超过50k美元/年。

具体的数据特征请看下网站的解释:

由于是2分类,所以思路非常简单。实际上只需要求出一类的概率即可。

下面代码中的ConvertFeature是来转换字符型的数据到数字类型的数据的,但是我在main函数里面直接用了数字型的,所以实际上没有用到。

注意要改一下数据集的路径。

import torch
import torch.nn.modules
import torch.nn
import numpy as np
from torch.autograd import Variable #torch的基本变量
import torch.nn.functional as F #里面有很多torch的函数
import matplotlib.pyplot as plt


class solution:
    def __init__(self):
        self.RawData=[]
        self.Data=[]
        self.GetClass={}

        self.NUMOFFEATURE=0
        self.NUMOFDATA=0
    def LoadData(self,PATH):
        with open(PATH,'r') as f:
            for line in f:
                self.RawData.append([thing.strip() for thing in line.split(',')])
        self.RawData=self.RawData[:-1]
        self.NUMOFDATA=len(self.RawData)

    def ShowRawData(self):
        for item in self.RawData:
            print(item)

    def WashData(self):
        attribute=len(self.RawData[0])-1
        #print("attribute: {}".format(attribute))

        index=0
        while indexP2: return 1#大于50k
        elif P1

 

你可能感兴趣的:(python 手码实现朴素贝叶斯二分类无框架)