修改预测函数

简介: 【7月更文挑战第22天】修改预测函数。

修改预测函数
def predict_math(X, xtrain, ytrain):

  # 求L2距离
  distances = [sqrt(np.sum((X_train - X) ** 2)) for X_train in xtrain]
  # 对数组进行排序,返回的是值的索引值
  nearest = np.argsort(distances)
  # 取出前3个离得最近的点的标签
  k = 3
  topK_y = [ytrain[i] for i in nearest[:k]]
  # 计数,取到键值对。键:标签;值:个数
  votes = Counter(topK_y)
  # 在键值对中值最多的键
  print(votes.most_common(1)[0][0])

  # 得到最接近的3个点的索引值
  k = 3
  topK_X = nearest[:k]
  for i in range(3):
       # 绘制预测点与最接近的3个点连成的直线
       plt.plot([X[0], xtrain[topK_X[i]][0]], [X[1], xtrain[topK_X[i]][1]])
       # 绘制预测点与最接近的3个点之间的长度
       plt.annotate("%s"%round(distances[topK_X[i]], 2),
                          xy=((X[0] + xtrain[topK_X[i]][0]) / 2,(X[1] + 

xtrain[topK_X[i]][1]) / 2))
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.scatter(x_train[y_train == 0, 0], x_train[y_train == 0, 1], marker="*")
plt.scatter(x_train[y_train == 1, 0], x_train[y_train == 1, 1], marker="^")
plt.scatter(x_train[y_train == 2, 0], x_train[y_train == 2, 1], marker="s")
plt.scatter(x_test[0], x_test[1], marker="o")
plt.show()
在输出所属类别的基础上绘制预测点与最接近的3个点连成的直线,并标出它们的距离,KNN结果如图所示。

KNN结果

目录
相关文章
|
3月前
|
消息中间件 网络协议 JavaScript
函数计算产品使用问题之删除应用重建后,如何快速生成之前的模型和参数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
算法
创建一个训练函数
【7月更文挑战第22天】创建一个训练函数。
34 4
|
4月前
|
机器学习/深度学习 计算机视觉 Python
`GridSearchCV` 是一种穷举搜索方法,它会对指定的参数网格中的每一个参数组合进行交叉验证,并返回最优的参数组合。
`GridSearchCV` 是一种穷举搜索方法,它会对指定的参数网格中的每一个参数组合进行交叉验证,并返回最优的参数组合。
|
6月前
|
机器学习/深度学习
R语言调整随机对照试验中的基线协变量
R语言调整随机对照试验中的基线协变量
Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行
Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行
267 0
第4章 MATLAB编程基础——4.6 M文件中变量的检测与传递
第4章 MATLAB编程基础——4.6 M文件中变量的检测与传递
|
机器学习/深度学习 并行计算 图计算
超参数设定及训练技巧
超参数设定及训练技巧
357 0
|
资源调度 算法 关系型数据库
概率图推断之变量消除算法
事实证明,推理是一项颇具挑战的任务。对于很多我们感兴趣的概率,要准确回答这些问题都是NP难题。至关重要的是,推理是否容易处理取决于描述概率的图的结构。尽管有些问题很难解决,我们仍然可以通过近似推理方法获得有用的答案。
261 0
概率图推断之变量消除算法
torch 如何在迭代训练中,只计算参数梯度,不更新参数。并且将参数的梯度保存到列表,这个列表的值不随着梯度清零而跟着变为零
在使用 torch.autograd.backward() 计算梯度后,可以通过设置参数的 requires_grad 属性为 False 来阻止参数更新。同时,通过将计算出的梯度值放入一个列表中来保存,这个列表的值不会随着梯度清零而清零
724 0