一、KNN
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import numpy as np
def knn(inputX, data, lable, tempK):
m = len(lable)
diffMat = np.tile(inputX, (m, 1))
distance = ((data - diffMat) ** 2).sum(axis=1) ** 0.5
sortedIndex = distance.argsort(axis=0)
lables = []
for i in range(0, tempK):
lables.append(lable[sortedIndex[i]])
count = {
}
for lable in lables:
count[lable] = count.get(lable, 0) + 1
return max(count, key=count.get)
iris = load_iris()
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.25)
train_data = np.array(x_train)
train_lable = np.array(y_train)
A, B, C = [], [], []
for idx in range(0, len(train_lable)):
if train_lable[idx] == 0:
A.append(train_data[idx])
elif train_lable[idx] == 1:
B.append(train_data[idx])
else:
C.append(train_data[idx])
A, B, C = np.array(A), np.array(B), np.array(C)
test_data = np.array(x_test)
test_lable = np.array(y_test)
for idx in range(0, len(test_lable)):
ret = knn(test_data[idx], train_data, train_lable, 3)
if ret == test_lable[idx]:
print('预测正确')
else:
print('预测错误')