今天继续昨天的题目
利用KNN对测试数据进行预测并画出图形
R版本
生成测试数据并画图
minX1
minX2
maxX1
maxX2
X1.range
X2.range
test
ggplot(test, aes(X1, X2)) + geom_point(size=0.5)
require(class)
knnplot
KNN
test$predict
# 将因子型数据转成数值型
test$z
title = paste('k=', as.character(k), sep='')
g
geom_point(aes(colour = predict), size=0.5) +
geom_contour(aes(z=z), colour='black', size = 0.1) +
#其中opts
theme(legend.position = "none") + labs(title=title)
# training points
g
return(list(gplot=g,pred=test))
}
mm
mm$gplot
mm$pred
python版本
minx1=min(data1.X1)
minx2=min(data1.X2)
maxx1=max(data1.X1)
maxx2=max(data1.X2)
#建立两个序列
#以指定的时间间隔返回均匀间隔的数字。
#返回均匀间隔的样本,在间隔[start,stop]上计算。
#间隔的终点可以选择性地排除。
X1_range=np.linspace(start=minx1, stop=maxx1, num=100)
X2_range=np.linspace(start=minx2, stop=maxx2, num=100)
test=pd.DataFrame({'X1':np.tile(X1_range,100), 'X2':np.repeat(X2_range,100)})
#s控制每个point的大小
plt.scatter(test.X1,test.X2,s=0.5)
利用sklearn库对数据进行KNN分类
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(data1[['X1','X2']], data1['Y'])
MM=pd.DataFrame(knn.predict(test))
test_total=pd.concat([test,MM],axis=1)
test_total.columns = ['X1', 'X2','Y']
领取专属 10元无门槛券
私享最新 技术干货