gpt4 book ai didi

python - 迭代 numpy 数组的行以查找众数

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:19 26 4
gpt4 key购买 nike

我正在尝试创建一个决策树分类器函数,该函数将构建决策树集合,并根据所有树的多数投票预测进行最终预测。我的方法是构建一个矩阵,将每个决策树的预测放在单独的列中,然后对于每一行(对应于每个数据点),找到模态值以对该数据点进行最终预测。

到目前为止我的功能是:

def majority_classify(x_train, y_train, x_test, y_test, num_samples):

n = x_train.shape[0]
c=len(np.unique(y_train))

votes=np.zeros((n, c))
predictions_train=np.empty((n, num_samples+1))
predictions_test=np.empty((n, num_samples))


for i in range(0, num_samples):
# Randomly a sample points from the train set of size 'n'
indices = np.random.choice(np.arange(0, n), size=n)

x_train_sample = x_train[indices, :]
y_train_sample = y_train[indices]

dt_major = tree.DecisionTreeClassifier(max_depth = 2)
model_major = dt_major.fit(x_train, y_train)

predictions_train[:,i]=model_major.predict(x_train)




for r in predictions_train:
predict_train = mode(r)[0][0]

但是,我遇到的问题是如何迭代每一行并找到众数。有什么建议吗?

谢谢!

最佳答案

  • np.uniquereturn_counts 参数结合使用。
  • 在计数数组上使用 argmax 从唯一数组中获取值。
  • 使用np.apply_along_axis作为自定义函数mode
<小时/>
def mode(a):
u, c = np.unique(a, return_counts=True)
return u[c.argmax()]

a = np.array([
[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[2, 5, 6],
[4, 1, 7],
[5, 4, 8],
[6, 6, 3]
])

np.apply_along_axis(mode, 0, a)

array([2, 4, 3])

关于python - 迭代 numpy 数组的行以查找众数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40497078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com