彩票平台:首页 > 113彩票彩票平台 > 程序人生程序人生

113彩票官网

卞振伟2019-05-27【程序人生】人已围观

简介基于贝叶斯定理实现
样本采用无偏估计方式(/n-1)

class Bayes:
    def __init__(self):
        self.cnt = {}
        self.city = {}
        self.mins = {}
        self.minp = {}
    def fit(self, fname):
        f = open(fname, 'r')
        cot = 0
        for line in f.readlines():
            sample = line.strip().split('\t')
            # print(sample)
            if len(sample) == 1:
                continue;
            cot += 1

            if sample[1] in self.cnt:
                self.cnt[sample[1]] += 1
            else:
                self.cnt[sample[1]] = 1
            
            if sample[0] in self.city:
                if sample[1] in self.city[sample[0]]:
                    self.city[sample[0]][sample[1]] += 1
                else:
                    self.city[sample[0]][sample[1]] = 1
            else:
                self.city.setdefault(sample[0], {})[sample[1]] = 1

            if sample[1] in self.mins:
                self.mins[sample[1]].append(float(sample[2]))
            else:
                self.mins.setdefault(sample[1], []).append(float(sample[2]))

        for k, v in self.city.items():
            for kk, vv in v.items():
                self.city[k][kk] = vv / self.cnt[kk]
                # print(city[k][kk],'  **  ', vv, '  **  ',cnt[kk])

        for k, v in self.cnt.items():
            self.cnt[k] = v/cot

        for k, v in self.mins.items():
            avg = sum(v) / (len(v)-1)
            lst = [(val-avg)*(val-avg) for val in v]
            self.minp.setdefault(k, {})['avg'] = avg
            self.minp.setdefault(k, {})['delta'] = sum(lst) / (len(lst) - 1)

    def predict(self, lang, minv):
        Max = 0
        k = ''
        for cls in self.cnt:
            avg = self.minp[cls]['avg']
            delta = self.minp[cls]['delta']
            import math
            from math import pow
            left = 1/pow(2*math.pi*delta, 0.5)
            right = pow(math.e, -pow(minv-avg, 2)/(2*delta))
            rst = left * right
            pbj = self.cnt[cls]*self.city[lang][cls]*rst
            print(cls, pbj)
            if pbj > Max:
                Max = pbj
                k = cls
        print('结论:', k)
clf = Bayes()
clf.fit(r'./1.text')

print('例如:','python',' 1.0')
print('请输入关键字(语言)、期望收入(万元) 以空格分割')
while True:
    try:
        key, val = map(str,input().split())
        clf.predict('python', float(val))
    except:
        break;

Tags:编程   程序员   Python   生活

很赞哦! ()

文章评论

站点信息

  • 建站时间:2018-11-25
  • 网站程序:帝国CMS7.5
  • 文章统计:71篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 网站地图XML网站地图
  • 微信公众号:扫描二维码,关注我的公众号
  • GitHub:扫描二维码,关注我的GitHub

客服在线

QQ客服

客服微信扫码

服务时间

周一至周日 9:00-21:00