def test2(): """ tests the max_kappa function that finds the maximum kappa value for 2 sets of predictions up to permutations of the cluster numberings """ pred1 = np.array([0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0]) pred2 = np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2]) x = np.array([[2, 0, 3], [5, 0, 0], [1, 4, 0]]) kappa_max, corrected_x, new_order = max_kappa(pred1, pred2) assert_allclose(x[:, new_order], corrected_x) assert kappa_max == kappa_function(x[:, new_order])
# In [2]: kmean_pred.shape # Out[2]: (4, 159, 2, 2) # data, obs, cluster options, grey # In [3]: dirichelet_pred.shape # Out[3]: (4, 159, 2, 2) # In [4]: hierarchy_pred.shape # Out[4]: (159, 5, 8) # obs, cluster type, data * grey comparison_kappa = np.zeros((4,2,2+2+5,2+2+5)) comparison_accuracy = np.zeros((4,2,2+2+5,2+2+5)) for data_num,grey_num in itertools.product(np.arange(4),np.arange(2)): predictions = -10*np.ones((X_full.shape[0],9)) predictions[:,:2] = kmean_pred[data_num,:,grey_num,:] predictions[:,2:4] = dirichelet_pred[data_num,:,grey_num,:] predictions[:,4:] = hierarchy_pred[:,:,2*data_num+grey_num] for i,pred1 in enumerate(predictions): for j,pred2 in enumerate(predictions): m_kappa, m_confusion, _ = max_kappa(pred1,pred2) comparison_kappa[data_num,grey_num,i,j] = m_kappa comparison_accuracy[data_num,grey_num,i,j] =