Python 这是否为分类提供了一个良好的基线?

Python 这是否为分类提供了一个良好的基线?,python,keras,categorical-data,Python,Keras,Categorical Data,我读到的是,对于分类分类,你基本上可以使用你最受欢迎的分类的输出百分比作为基线。这是有意义的,因为您的模型可能只是默认为每次只猜测最流行的类别。假设这是真的,下面的代码是否完成了它应该完成的任务 # get the index of the most popular category in your training outputs pop_train_cat_ind = np.argmax(np.sum(train_Y, axis=0)) # get the count of that sa

我读到的是,对于分类分类,你基本上可以使用你最受欢迎的分类的输出百分比作为基线。这是有意义的,因为您的模型可能只是默认为每次只猜测最流行的类别。假设这是真的,下面的代码是否完成了它应该完成的任务

# get the index of the most popular category in your training outputs
pop_train_cat_ind = np.argmax(np.sum(train_Y, axis=0))

# get the count of that same category in your validation ouputs
pop_val_cat_ct = np.sum(validation_Y, axis=0)[pop_train_cat_ind]

# get the percentage compared to your total validation samples
baseline = pop_val_cat_ct / len(validation_Y)

要从列表或数组中获取最频繁的值,可以使用
scipy.stats

import numpy as np
from scipy.stats import mode
train_Y=[1,7,3,4,6,4]
pop_train_cat_ind=mode(train_Y).mode[0]
print(pop_train_cat_ind)
您使用的argmax函数不是您想要的,因为它没有获得最频繁的值,而是
train_Y
具有最大值的索引(使用
train_Y=[1,7,3,4,6,4]
它将返回1)

在计算
pop\u val\u cat\u ct
时,首先对
validation\u Y
中的所有元素求和,返回一个数字,然后尝试获取通常不存在的
pop\u val\u cat\u ct
第个元素

要正确计算
pop\u val\u cat\u ct
,应计算
validation\u Y
等于
pop\u train\u cat\u ind
的次数,并求和:

validation_Y=[1,8,4]
# get the count of that same category in your validation ouputs
pop_val_cat_ct = np.sum(validation_Y==pop_train_cat_ind)
validation\u Y==pop\u train\u cat\u ind
给出了一个与
validation\u Y
长度相同的数组,其中填充了True或False。当求和时,它返回真值的数量(对于Python真=1和假=0),因此需要的计数

然后你就可以照你写的做了

# get the percentage compared to your total validation samples
baseline = pop_val_cat_ct / len(validation_Y)

要从列表或数组中获取最频繁的值,可以使用
scipy.stats

import numpy as np
from scipy.stats import mode
train_Y=[1,7,3,4,6,4]
pop_train_cat_ind=mode(train_Y).mode[0]
print(pop_train_cat_ind)
您使用的argmax函数不是您想要的,因为它没有获得最频繁的值,而是
train_Y
具有最大值的索引(使用
train_Y=[1,7,3,4,6,4]
它将返回1)

在计算
pop\u val\u cat\u ct
时,首先对
validation\u Y
中的所有元素求和,返回一个数字,然后尝试获取通常不存在的
pop\u val\u cat\u ct
第个元素

要正确计算
pop\u val\u cat\u ct
,应计算
validation\u Y
等于
pop\u train\u cat\u ind
的次数,并求和:

validation_Y=[1,8,4]
# get the count of that same category in your validation ouputs
pop_val_cat_ct = np.sum(validation_Y==pop_train_cat_ind)
validation\u Y==pop\u train\u cat\u ind
给出了一个与
validation\u Y
长度相同的数组,其中填充了True或False。当求和时,它返回真值的数量(对于Python真=1和假=0),因此需要的计数

然后你就可以照你写的做了

# get the percentage compared to your total validation samples
baseline = pop_val_cat_ct / len(validation_Y)

我更新了我的答案以更好地解释它,我还注意到argmax部分也不起作用,所以我添加了第一部分我更新了我的答案以更好地解释它,我还注意到argmax部分也不起作用,所以我添加了第一部分