代码:
# 声明
# -*- coding: utf-8 -*-
"""
Created on Mon May 13 12:16:01 2024
@author: admin
"""
# 导入库
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
# 下面是两个机器学习的库
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
#定义函数
x1,y1=[],[]
#导入本地数据
fr = open('F:/bigdata/knn.txt', mode='r', encoding='gbk')
for line in fr.readlines():
lineArr=line.strip().split()
x1.append([int(lineArr[0]),int(lineArr[1])])
y1.append(int(lineArr[2]))
# 转换数据类型
X=np.array(x1)
y=np.array(y1)
X_train,X_test,Y_train,Y_test=train_test_split(X,y,test_size=0.16)
#网格采样点的个数,采样点越多,分析界面越清晰
N,M=90,90
#分割成训练集合测试集
knn=KNeighborsClassifier(3)
knn.fit(X,y)
#生成采样点的横坐标值S
t1=np.linspace(0,25,N)
#生成采样点的纵坐标值
t2=np.linspace(0,12,N)
#生成网格采样点S
x1,x2=np.meshgrid(t1,t2)
#将采样点作为测试点
x_show=np.stack((x1.flat,x2.flat),axis=1)
#print(x_show)
knn=KNeighborsClassifier(3)
knn.fit(X,y)
#预测采样点的值
y_show_hat=knn.predict(x_show)
#使之与输入的形状相同
y_show_hat=y_show_hat.reshape(x1.shape)
cm_light=mpl.colors.ListedColormap(['#A0FFA0','#FFA0A0','#A0A0FF'])
#预测值的显示
plt.pcolormesh(x1,x2,y_show_hat,cmap=cm_light,alpha=0.3)
plt.show()
导入的文件knn.txt,自己在本地新建文件放入数据:
2 4 1
4 3 2
10 6 3
12 9 2
3 11 3
20 7 2
22 5 2
21 10 1
11 2 3
24 1 1
效果图: