- 有甲、乙两条生产线,
- 甲生产线的产品合格率为90%,乙生产线的产品合格率为95%,
- 两条生产线的生产量占比分别为30%和70%,
- 现在发现了一件不合格品,
- 问题:这个不合格品是甲生产线生产出来的概率是多少?
症状 职业 疾病 发热 护士 感冒 发热 农民 过敏 头晕 建筑工人 脑震荡 头晕 建筑工人 感冒 发热 教师 感冒 头晕 教师 脑震荡
- 某个医院早上收了六个病人,如上表,
- 现在又来了第七个病人,是一个身上发热的建筑工人,
- 问题:请问他患上感冒的概率有多大?
- 对于SNS社区来说,不真实账号(使用虚假身份或用户的小号)是一个普遍存在的问题,作为SNS社区的运营商,希望可以检测出这些不真实账号,从而在一些运营分析报告中避免这些账号的干扰,亦可以加强对SNS社区的了解与监管。
- 拼写纠正:当用户输入了一个不在字典中的单词,如何判断:“这个家伙到底真正想输入的单词是什么呢?”
- 中文分词:机器学习的核心方法,如给定一个句子(字串):“南京市长江大桥”,如何对这个句子进行分词(词串)才是最靠谱的?
- (1)南京市 / 长江大桥 ?
- (2)南京市长 / 江大桥 ?
- (3)南京 / 市长 / 江大桥 ?
- 这三个分词,到底哪个更靠谱呢?
- 邮件过滤器:问题:给定一封邮件,如何判定它是否属于垃圾邮件?
- 反欺诈:如何在金融、保险、电信等多个领域,去除高危人群、身份假冒、账号异常、申请异常、设备异常、使用异常?
完备事件组(划分) 的定义:
设S为试验E的样本空间,B1,B2,…,Bn为E的一组事件。若
(i) Bi ∩ Bj = ∅ (i≠j且i、j=1,2,…,n);
(ii) B1∪B2∪…∪Bn = S,
则称B1,B2,…,Bn为样本空间S的一个 完备事件组(划分) 。
注:定义为充要条件,所以定义反过来说也成立
df = pd.read_csv('naivebayes_data.csv')
df
import pandas as pd
import numpy as np
class NaiveBayes(object):
def getTrainSet(self):
dataSet = pd.read_csv('naivebayes_data.csv')
dataSetNP = np.array(dataSet)
trainData = dataSetNP[:,0:dataSetNP.shape[1]-1]
labels = dataSetNP[:,dataSetNP.shape[1]-1]
return trainData, labels
def classify(self, trainData, labels, features):
labels = list(labels)
P_y = {}
for label in labels:
P_y[label] = labels.count(label)/float(len(labels))
P_xy = {}
for y in P_y.keys():
y_index = [i for i, label in enumerate(labels) if label == y]
for j in range(len(features)):
x_index = [i for i, feature in enumerate(trainData[:,j]) if feature == features[j]]
xy_count = len(set(x_index) & set(y_index))
pkey = str(features[j]) + '*' + str(y)
P_xy[pkey] = xy_count / float(len(labels))
P = {}
for y in P_y.keys():
for x in features:
pkey = str(x) + '|' + str(y)
P[pkey] = P_xy[str(x)+'*'+str(y)] / float(P_y[y])
F = {}
for y in P_y:
F[y] = P_y[y]
for x in features:
F[y] = F[y]*P[str(x)+'|'+str(y)]
features_label = max(F, key=F.get)
return features_label
nb = NaiveBayes()
# 训练数据
trainData, labels = nb.getTrainSet()
# x1,x2
features = [2,'S']
# 该特征应属于哪一类
result = nb.classify(trainData, labels, features)
print(features,'属于',result)
import pandas as pd
import numpy as np
class NavieBayesB(object):
def __init__(self):
self.A = 1
self.K = 2
self.S = 3
def getTrainSet(self):
trainSet = pd.read_csv('naivebayes_data.csv')
trainSetNP = np.array(trainSet)
trainData = trainSetNP[:,0:trainSetNP.shape[1]-1]
labels = trainSetNP[:,trainSetNP.shape[1]-1]
return trainData, labels
def classify(self, trainData, labels, features):
labels = list(labels)
P_y = {}
for label in labels:
P_y[label] = (labels.count(label) + self.A) / float(len(labels) + self.K*self.A)
P = {}
for y in P_y.keys():
y_index = [i for i, label in enumerate(labels) if label == y]
y_count = labels.count(y)
for j in range(len(features)):
pkey = str(features[j]) + '|' + str(y)
x_index = [i for i, x in enumerate(trainData[:,j]) if x == features[j]]
xy_count = len(set(x_index) & set(y_index))
P[pkey] = (xy_count + self.A) / float(y_count + self.S*self.A)
F = {}
for y in P_y.keys():
F[y] = P_y[y]
for x in features:
F[y] = F[y] * P[str(x)+'|'+str(y)]
features_y = max(F, key=F.get)
return features_y
nb = NavieBayesB()
# 训练数据
trainData, labels = nb.getTrainSet()
# x1,x2
features = [2,'S']
# 该特征应属于哪一类
result = nb.classify(trainData, labels, features)
print(features,'属于',result)