题海让大学四年没有难题
白天模式登陆

题目详情

多选题 这是一个标准的KNN算法实现 Plain Text# -*- coding: utf-8 -*-import numpy as npimport operatorclass KNN(object): def __init__(self, k=3): self.k = k def fit(self, x, y): self.x = x self.y = y def _square_distance(self, v1, v2): return np.sum(np.square(v1-v2)) def _vote(self, ys): ys_unique = np.unique(ys) vote_dict = {} for y in ys: if y not in vote_dict.keys(): vote_dict[y] = 1 else: vote_dict[y] += 1 sorted_vote_dict = sorted(vote_dict.items(), key=operator.itemgetter(1), reverse=True) return sorted_vote_dict[0][0] def predict(self, x): y_pred = [] for i in range(len(x)): dist_arr = [self._square_distance(x[i], self.x[j]) for j in range(len(self.x))] sorted_index = np.argsort(dist_arr) top_k_index = sorted_index[:self.k] y_pred.append(self._vote(ys=self.y[top_k_index])) return np.array(y_pred) def score(self, y_true=None, y_pred=None): if y_true is None and y_pred is None: y_pred = self.predict(self.x) y_true = self.y score = 0.0 for i in range(len(y_true)): if y_true[i] == y_pred[i]: score += 1 score /= len(y_true) return score 请问以上算法中: Plain Text for i in range(len(x)): dist_arr = [self._square_distance(x[i], self.x[j]) for j in range(len(self.x))] 这两条语句的作用是什么? Plain TextPlain Text

A. 不知道

B. 利用 _square_distance求距离

C. 计算待求的X的每一个样本与原始数据集中每一个样本的距离

D. 计算原始数据集中每一个样本之间的距离

机器学习(2024年)课程封面

学科:机器学习(2024年)

时间:2024-12-02 00:34:42

Copyright © 2022 津ICP备2021001502号