代码拉取完成,页面将自动刷新
同步操作将从 mynameisi/OPTIMAL_KNN_MNIST_QUESTION 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import numpy as np
import faiss
class FaissKNeighbors:
"""
使用 FAISS 库实现的 K-近邻算法。
"""
def __init__(self, k: int = 1, res=None):
"""
初始化 FaissKNeighbors 类。
:param k: 最近邻个数。
:param res: FAISS GPU资源对象。
"""
self.index = None
self.y = None
self.k = k
self.res = res
def fit(self, X: np.ndarray, y: np.ndarray):
"""
训练模型。
:param X: 训练数据的特征。
:param y: 训练数据的标签。
"""
self.index = faiss.IndexFlatL2(self.res) if self.res is not None else faiss.IndexFlatL2()
self.y = y
self.index.add(X.astype(np.float32))
def predict(self, X: np.ndarray) -> np.ndarray:
"""
对新的数据集 X 进行分类预测。
:param X: 需要预测的数据。
:return: 预测的标签。
"""
distances, indices = self.index.search(X.astype(np.float32), self.k)
votes = self.y[indices]
predictions = np.array([np.argmax(np.bincount(vote)) for vote in votes])
return predictions
def score(self, X: np.ndarray, y_true: np.ndarray) -> float:
"""
计算预测准确率。
:param X: 需要预测的数据。
:param y_true: 真实的标签。
:return: 准确率。
"""
predictions = self.predict(X)
return np.mean(predictions == y_true)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。