机器学习3-5神经网络对数据实现分类(上)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution), np.arange(x2_min,x2_max, resolution))
print(x1_min, x1_max) print(x2_min, x2_max) print(np.arange(x1_min, x1_max, resolution).shape)
print(xx1.ravel()) print(xx2.ravel()) print (Z)
xx1.ravel(), xx2.ravel() 把二二维矩阵还原会原来的一一维向量量,然后输入入到模 型中让模型对 数据进行行行预测,Z是预测得到的结果向量量,从结果上看, 如 果数据组合是(3.3, 0) 模型分类结果是-1, 如果数据组合是(6.98,5.08)模型 预测的分类结果是1
plot_decision_regions(X, y, ppn, resolution=0.02) plt.xlabel('花径⻓长度 [cm]') plt.ylabel('花瓣⻓长度 [cm]') plt.legend(loc='upper left') plt.show()
从图示结果看,我们的模型能够对数据进行行行分类并在两种分类的中间分界 出画出了了分界线,所以分类为-1的数据,分布在下半部红色色部分,分类为1 的数据集中在蓝色色的上半部,由此看,我们所构造的神经模型对可以进行行行 线性分类的数据能够做出准确的识别。
for idx, cl in enumerate(np.unique(y)) :
plt.scatter(x = X[y == cl, 0], y = X[y==cl,1],
alpha=0.8, c=cmap[idx], marker = markers[idx], label=cl)
上面面代码的作用用是对不不同分类的数据进行行行信息表明。然后我们就可以把绘 制后的图像显示出来了了
上面面代码的作用用是根据向量量y中不不同元素的种类分配不不同的颜色色,y是结果向 量量,从前面面的代码我们知道,y中不不同的元素种类只有两种,因为y里里里面面的 元素不不是1,就是-1,因此len(np.unique(y))得到的值是2,于是上面面代码的功 能是准备好两种不不同的颜色色,根据数据属于哪一一种类,绘制时便便使用用哪一一 种颜色色。
Z = Z.reshape(xx1.shape) plt.contourf(xx1, xx2, Z, alpha=0.4, cmap=cmap)
plt.xlim(xx1.min(), xx1.max())
plt.ylim(xx2.min(), xx2.max())
我们把Z转换成像xx1那wenku.baidu.com的二二维矩阵,然后对分类后的数据 画出分界线
from matplotlib.colors import ListedColormap
def plot_decision_regions(X, y, classifier, resolution = 0.02):
markers = ('s', 'x', 'o' , 'v') colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan') cmap = ListedColormap(colors[:len(np.unique(y))])
xx2 也是一一个二二维矩阵,它把np.arange(x2_min, x2_max, resolution) 所生生 成的向量量中的每个元素分别重复185次,形成一一行行行,由于向量量有255个元 素,因此构成了了一一个255*185的二二维矩阵。
接着我们把数据输入入模型,然后得到预测结果
Z = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)
x1_min, x1_max = X[:,0].min() - 1, X[:, 0].max() x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max()
X包含两列列数据,这两列列数据分布描述花径⻓长度和花瓣⻓长度,上面面两行行行代码 获得花径和花瓣⻓长度的最大大值和最小小值。
print(np.arange(x2_min, x2_max, resolution).shape) print(xx1.shape) print(xx1)
x1_min=3.3, x2_max=7.0,np.arange(x1_min, x1_max,resolution) 可以得 到一一个向量量: [3.3, 3.32, ... 6.98] 向量量中每个元素间的差值正好等于0.02, 向量量中的元素个数是185 np.arange(x2_min,x2_max, resolution)作用用同 理理,得到的向量量其中元素的个数是255, meshgrid 作用用是把两个单维的向 量量扩展成二二维矩阵,以便便后面面画图方方便便,执行行行完该函数后,xx1对应一一个二二 维矩阵,它把np.arange(x1_min, x1_max, resolution)所生生成的向量量当做 xx1的每一一行行行,并把这个向量量重复255次,从而而形成xx1矩阵
培训好了了神经网网络后,我们就可以使用用训练好的模型,对数据进行行行预测和 分类了了。我们通过代码,看看模型是如何将数据进行行行分类的,并把分类结 果以可视化的方方式展现出来。
我们通过python代码编写一一个函数,它的功能是把预测数据输入入到神经网网 络模型,得到模型的分类结果,并把结果通过图形的方方式绘制出来,首首先, 我们需要做的是准备可视化所需要的数据:
相关文档
最新文档