Я пытаюсь добавить значения, сгенерированные функцией calc_class
, но это не работает, и я не знаю причины. Я попытался использовать numpy.append
, numpy.insert
и встроенную функцию Python append
безуспешно.Не удалось добавить элемент в массив numpy
Это мой кусок кода:
def calc_class(test):
expec = []
for new in test:
prob_vector = np.zeros((len(voc)), dtype=bool) #define a 'True' array to store class probabilities
words_in_new = new[0].split() #split the new email into words
words_in_new = list(set(words_in_new)) #remove duplicated words
i = 0
for voc_word in voc: #for each element in voc
if voc_word in words_in_new:
prob_vector[i] = True #set the ith element of prob_vector to True, if voc element is in word
else:
prob_vector[i] = False #set the ith element of prob_vector to False, otherwise
i += 1
prob_ham = 1
for i in range(len(prob_vector)):
if prob_vector[i] == True:
prob_ham *= ham_class_prob[i]
else:
prob_ham *= (1 - ham_class_prob[i])
# alternative: np.prod(ham_class_prob[np.where(prob_vector==True)]) * np.prod(1- ham_class_prob[np.where(prob_vector==False)])
prob_spam = 1
for i in range(len(prob_vector)):
if prob_vector[i] == True:
prob_spam *= spam_class_prob[i]
else:
prob_spam *= (1 - spam_class_prob[i])
p_spam = 0.3
p_ham = 1 - p_spam
p_spam_given_new = (prob_spam * p_spam)/(prob_spam * p_spam + prob_ham * p_ham) # Bayes theorem
print('p(spam|new_email)=', p_spam_given_new[0])
expec.append(p_spam_given_new[0])
print(expec)
Проблема заключается в том, что print(expect)
печатает пустой массив.
(a) Отступ, показанный в вопросе (до того, как его отредактировал третий человек), был неправильным. Сделайте отступ здесь совпадением с отступом в файле, который вы фактически используете. Не просите нас угадать, какой отступ вы действительно используете. (b) 'voc' никогда не определяется. (c) В будущем перед тем, как задать вопрос, прочитайте: [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). – John1024
Делает ли 'print' перед' append' что-нибудь? – hpaulj
В вашем коде есть 4 неизвестных переменных - 'test',' voc' и т. Д. И функция ничего не возвращает. 'Expec.append' не является проблемой; просто добраться до этой точки в функции является проблемой. – hpaulj