Код выдает двумерную гистограмму, но результаты не совпадают с историей - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь написать конструктор гистограммы для построения 2-й гистограммы для моей работы по заданию.Это [мой код] [1]:

def Build2DHistogramClassifier(X1,X2,T,B,x1min,x1max,x2min,x2max):
 HF=np.zeros((B,B),dtype='int');#initialising a empty array of integer type
 HM=np.zeros((B,B),dtype='int');
 bin_row_indices=(np.round(((B-1)*(X1-x1min)/(x1max-x1min)))).astype('int32');"""this logic decides which bin the value goes into"""
 bin_column_indices=(np.round(((B-1)*(X2-x2min)/(x2max-x2min)))).astype('int32');"""np.round-->applies the formula to all the values in the array"""
 for i,(r,c) in enumerate(zip(bin_row_indices, bin_column_indices)):
     """enumerate-->if we put array or list into it gives output with index/count i """
     if T[i]=='Female':
         HF[r,c]+=1;
     else:
         HM[r,c]+=1;
return [HF, HM]

но проблема в том, что полученные результаты (количество в каждом бине) не совпадают с тем, что я получаю от использованияФункция Hist2D в Numpy (я передал тот же размер корзины)

Извините, если мой код не в правильном формате.Пожалуйста, нажмите на гиперссылку на гист, который я создал с тем же кодом.

в чем ошибка в моем коде?

как я могу исправить ее?

спасибо

1 Ответ

0 голосов
/ 18 мая 2018

Округляя при назначении бункеров, вы рассматриваете бункеры как центры бинов. Условное обозначение состоит в том, чтобы использовать их в качестве ребер бункера.

Удалите два вызова на round() из своего кода и измените B-1 на B. Теперь вы должны получить те же результаты с вашей функцией и с np.histogram2d.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...