机器学习算法KNN
初学机器学习
对KNN算法进行封装
代码内容
代码如下(示例):封装
import numpy as np
from math import sqrt
from collections import Counter
class KNNClassifier:
def __init__(self,k):
#初始化KNN分类器
assert k>=1,'k must be valid'
self.k=k
self._X_train=None
self._Y_train=None
def fit(self,X_train,Y_train):
# 根据训练数据集
assert X_train.shape[0] == Y_train.shape[0], '保证训练样本与标签数目相等'
assert self.k<= X_train.shape[0], '保证维度相等'
self._X_train=X_train
self._Y_train=Y_train
return self
def predict(self,X_predict):
assert self._X_train is not None and self._Y_train is not None,\
'预测数据不能是空'
assert X_predict.shape[1]==self._X_train.shape[1],'预测数据维度必须与数据维度相等'
y_predict=[self._predict(x) for x in X_predict]
return np.array(y_predict)
def _predict(self,x):
assert x.shape[0]==self._X_train.shape[1],'保证维度相等'
distances = [sqrt(np.sum((x_train - x) ** 2)) for x_train in self._X_train]
nearst = np.argsort(distances)
top_Y = [self._Y_train[i] for i in nearst[:self.k]]
votes = Counter(top_Y)
return votes.most_common(1)[0][0]
2.调用
代码如下(示例):
kNN_classifier=KNNClassifier(k=6)#传入K值
kNN_classifier.fit(X_train,Y_train)#训练集和标签
y_predict=kNN_classifier.predict(x_pedict)#预测
y_predict
该处使用的url网络请求的数据。