Problema: classificar se uma determinada pessoa é um macho ou uma fêmea com base nas características medidas. As características incluem a altura, peso e tamanho do pé.
Treinamento
Exemplo formação definido abaixo.
O classificador criado a partir do conjunto de treinamento usando uma suposição distribuição Gaussiana seria (dadas as variações são variâncias amostrais imparciais):
V. = Variação.
Como medir a variação
Desvio padrão de população
Desvio padrão de população
Ou Desvio padrão da amostra
Nossa média da amostra estava errado em 7%, e nossa Desvio Padrão da Amostra estava errado em 21%.
Nossa média da amostra estava errado em 7%, e nossa Desvio Padrão da Amostra estava errado em 21%.
Vamos dizer que temos classes equiprováveis de modo P (masculino) = P (feminino) = 4/8 =0,5. Esta distribuição de probabilidade prévia poderia ser baseados no nosso conhecimento de frequências na população maior, ou na frequência no conjunto de treinamento.
Testando
Abaixo está uma amostra a ser classificado como um macho ou fêmea.
Desejamos para determinar quais posterior é maior, do sexo masculino ou do sexo feminino. Para a classificação como macho posterior é dada por
Para a classificação como feminino posterior é dada por
A Evidence (também denominado constante de normalização) pode ser calculado:
No entanto, dada a amostra a evidência é uma constante e, portanto, escalas ambos os posteriors de forma igual. É, por conseguinte, não faz efeito em classificação e pode ser ignorado. Nós agora determinaremos a distribuição de probabilidade para o sexo da amostra.
P(Masculino)=0.5
Codigo em python
import math
x = input("Digite x ?")
u = input("Digite u ?")
o = input("Digite O ?")
Result = (1 / (math.sqrt(2*math.pi) *o)) * math.exp(-(math.pow(x-u,2)/(2*math.pow(o,2))))
print Result
Onde μ = 5.855 e σ = 0.162096 e x = 6 são os parâmetros de distribuição normal que tenham sido previamente determinados a partir do conjunto de treinamento. Note-se que um valor maior do que 1 é OK aqui - é uma densidade de probabilidade do que uma probabilidade, porque a altura é uma variável contínua.
P(Peso| Masculino) = 3.80206704017e-07=0,00000038
P(T.Pes| Masculino) = 0.000221871224731
Numerador posterior(Masculino) = 6.9539887e-11
P(Feminino)=0.5
P(Altura| Feminino) = 0.144231596331
P(Peso| Feminino) = 0.0193504591478
P(T.Pes| Feminino) =0.32286937325
Numerador posterior(Feminino) = 4,505557e-4
Dado que numerador posterior é maior no caso do sexo feminino, prevemos a amostra é fêmea.
Poderiamos fazer isto usando o sklearn.naive_bayes.GaussianNB
import numpy as np
X = np.array([[6, 180, 12], [5.92, 190,11], [5.58, 170, 12], [5.92,165, 10],
[5, 100,6], [5.5, 150,8],[5.42, 130, 7],[5.75, 150, 9]])
Y = np.array([1, 1, 1, 1, 2, 2, 2, 2])
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
clf.fit(X, Y)
print(clf.predict([[6, 130, 8]]))
Fonte: https://en.wikipedia.org/wiki/Naive_Bayes_classifier









Nenhum comentário:
Postar um comentário