Наивный байесовский Вероятность ошибки Python - PullRequest
0 голосов
/ 29 августа 2018

У меня есть вопрос, у меня есть 2 набора данных, AdultTest и AdultData. В этих наборах данных у меня есть много таких строк:

39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Female , 2174, 0, 40, United-States, >50K

И я хочу вычислить вероятность того, что у «Женщины» есть «> 50К», для этого я сделал это:

from sklearn.naive_bayes import BernoulliNB

#Read AdultData.csv and encoded in Integer, so can I calculate the NaiveBAyes
data1 = np.genfromtxt('AdultData.csv', delimiter=',',  dtype='int', skip_footer=1)
datatest=np.genfromtxt('adultTest.csv', delimiter=',',  dtype='int', skip_footer=1)

#Delete the last Column, because the last column is the Target
data_new = np.delete(data1, 14, 1)
dataTest_new = np.delete(datatest, 14, 1)

class_ = [row[14] for row in data2]

clf = BernoulliNB()
clf.fit(data_new, class_)
print(clf.predict_proba(dataTest_new))

И результатом является прогноз вероятности, и я получаю всегда:

[1. 0.]

но я не знаю, почему, даже если я поставлю AdultTest (у них есть другие данные), я получу те же результаты.

Почему я не получаю другие результаты? Кроме того, почему у меня есть 2 колонки?

P.S. Я делаю это, потому что я хочу сделать алгоритм массажа для классификации без дискриминации

Кто-нибудь может мне помочь?

Спасибо!

1 Ответ

0 голосов
/ 29 августа 2018

Я думаю, что в вашем коде есть логическая ошибка, так как вы никогда не используете dataTest_new

data_new = np.delete(data1, 14, 1)
dataTest_new = np.delete(datatest, 14, 1)

class_ = [row[14] for row in data2]

clf = BernoulliNB()
clf.fit(data_new, class_)
# you should run prediction on test data
print(clf.predict_proba(dataTest_new)) 
...