np.argmax() np.bincount() # 投票

先上一段代码
import numpy as np

cv_pred = np.array([[2, 4, 7, 1, 2]])
submit = [ ]
for line in cv_pred:
submit.append(np.argmax(np.bincount(line)))
print(submit)

输出:

[2]

np.bincount(line)是统计line中每个值的数量
np.bincount([2, 4, 7, 1, 2])中1的数量1个、2的数量2个、4的数量1个,7的数量1个,所有他的返回值是 [0,1,2,0,1,0,0,1]

np.argmax([0,1,2,0,1,0,0,1])是比较所有位置出现次数的最大值,我们可以看到8个位置,只有2号位置出现了两次,所有返回[2]

所以这段代码的最根本含义就是选取cv_pred中每行出现最多的值并返回,也就是投票选取最大值。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个K最近邻分类器的Python实现,以下是每一行代码的注释: ``` class KNearestNeighbor(object): def __init__(self): pass # 训练函数,输入训练数据X和对应的标签y def train(self, X, y): self.X_train = X self.y_train = y # 预测函数,输入测试数据X和参数k表示选择的最近邻数,默认为1 def predict(self, X, k=1): num_test = X.shape[0] # 测试数据集的大小 num_train = self.X_train.shape[0] # 训练数据集的大小 dists = np.zeros((num_test, num_train)) # 创建一个距离矩阵,大小为(num_test, num_train) # 计算测试数据集和训练数据集之间的距离 d1 = -2 * np.dot(X, self.X_train.T) # 先计算两个矩阵的乘积,再将结果乘以-2 d2 = np.sum(np.square(X), axis=1, keepdims=True) # 计算测试数据集中每个数据的平方和 d3 = np.sum(np.square(self.X_train), axis=1) # 计算训练数据集中每个数据的平方和 dist = np.sqrt(d1 + d2 + d3) # 计算欧几里得距离 y_pred = np.zeros(num_test) # 创建一个长度为num_test的数组,用于存储预测结果 # 针对每个测试数据,选出距离最近的k个训练数据,并进行分类 for i in range(num_test): dist_k_min = np.argsort(dist[i])[:k] # 选出距离最近的k个训练数据 y_kclose = self.y_train[dist_k_min] # 获取这k个训练数据的标签 y_pred[i] = np.argmax(np.bincount(y_kclose.tolist())) # 对这k个训练数据的标签进行投票,选出最多的标签作为预测结果 return y_pred ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值