关于数据X-train 和y_train之间,他们之间有什么联系?
来源:4-1 k近邻算法基础
大门旁的桂花树
2018-07-10
关于数据X-train 和y_train之间,X_train是一个数组,y_trian是一个向量,y_train和X_train是怎么建立对应关系的?我在用另一种方式来尽量表达清楚:计算机是怎么知道X_train里的数据中一行数据所对应的类别是y_train向量中的数据?
1回答
-
首先,X_train更准确的说是二维数组。行数代表有多少数据,列数代表数据的特征数量。y_train是一个向量。y_train中的元素个数和X_train的行数一样,y_train中第i个元素表示X_train中第i行的数据所对应的output。
以上的这些逻辑,就是 X_train 和 y_train的所有关联。计算机不知道X_train 和 y_train 有这样的联系。是我们算法设计者知道。所以我们在设计算法的时候会使用这些联系。我们的算法完全可以在纸上推导出来。如果你愿意,完全可以使用纸笔计算。计算机只是帮助我们快速计算而已。
再仔细理解一下这一小节我们设计的算法,以及最后完成的代码。之所以我们的代码要这样实现,正是因为X_train和y_train满足这样的关系:)
这里举一个例子。有些同学不理解为什么以下的代码可以将 y == 0 和 y == 1 的两类数据点以不同颜色分别绘制出来:
plt.scatter(X_train[y_train==0,0], X_train[y_train==0,1], color='g') plt.scatter(X_train[y_train==1,0], X_train[y_train==1,1], color='r') plt.show()
事实上,我们正是因为知道X_train和y_train之间的联系,特意设计程序,才让它能够绘制出来。具体可以参考这个问答:https://coding.imooc.com/learn/questiondetail/36343.html
请再体会一下:不是计算机知道X_train和y_train之间有联系。而是我们算法设计者将数据特意布置成这个样子,运用这种数据布置上关系,完成的算法:)
232019-07-12
相似问题