meshgrid方法
xx,yy = numpy.meshgrid(x,y)
meshgrid函数就是用两个坐标轴上的点在平面上画网格(当然这里传入的参数是两个的时候),本质上是用x和y画出一系列坐标为(x,y)的组合的二维坐标点 (xx,yy)就是组合的坐标,是通过行扩张和列扩张来完成的
arange方法
numpy.arange(start, stop, step, dtype = None)
在给定间隔内返回均匀间隔的值在半开区间 [开始,停止)内生成(换句话说,包括开始但不包括停止的区间),返回的是 ndarray 。
ravel和np.c_,np.r_方法
x_range = np.c_[xx.ravel(),yy.ravel()]
平铺后,此时X_range[xx,yy]就是x和y所对应的二维组合数据,ravel()方法将数组维度拉成一维数组,用于将矩阵向量化。
np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。
np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等。
筛选只能用训练对应的标签来筛选,所以要让模型对x_range进行预测
y_range_predict = knn_10.predict(x_range)
为什么要用x_range,因为点更多,更方便描绘图像,原数据集画连线图容易因为点太离散导致图形不连贯,视觉效果不好。得到x_range之后要用模型对其预测得到对应标签。
如何改变文本的样式
fig1= plt.figure(figsize=(10,10))
knn_bad = plt.scatter(x_range[:,0][y_range_predict==0],x_range[:,1][y_range_predict==0])
knn_good = plt.scatter(x_range[:,0][y_range_predict==1],x_range[:,1][y_range_predict==1])
bad = plt.scatter(X.loc[:,'x1'][y==0],X.loc[:,'x2'][y==0])
good = plt.scatter(X.loc[:,'x1'][y==1],X.loc[:,'x2'][y==1])
plt.legend((good,bad,knn_good,knn_bad),('good','bad','knn_good','knn_bad'))
plt.xlabel('x1')
plt.ylabel('x2')
plt.title('data_class_processed')
plt.show()
分类边界视觉效果
|