37,721
社区成员
发帖
与我相关
我的任务
分享
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier#KNN
from sklearn.model_selection import train_test_split #数据分割模块
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
#准备数据集
iris=datasets.load_iris()
X=iris.data
print('X:\n',X)
Y=iris.target
print('Y:\n',Y) #处理二分类问题,所以只针对Y=0,1的行,然后从这些行中取X的前两列
x=X[Y<2,:2]
print(x.shape)
print('x:\n',x)
y=Y[Y<2]
print('y:\n',y)#target=0的点标红,target=1的点标蓝,点的横坐标为data的第一列,点的纵坐标为data的第二列
plt.scatter(x[y==0,0],x[y==0,1],color='red',marker='o')
plt.scatter(x[y==1,0],x[y==1,1],color='green',marker='x')
plt.scatter(5.6,3.2,color='blue',marker='D')
x_1=np.array([[5.6,3.2]])
plt.title('红色点标签为0,绿色点标签为1,待预测的点为蓝色')
knn=KNeighborsClassifier()
X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.3)
knn.fit(x,y)
result=knn.predict([[5.6,3.2]])