def loadDataSet():
dataMat = []; labelMat = []
fr = open(r'data\MLiA_SourceCode\machinelearninginaction\Ch05\testSet.txt')
for line in fr.readlines():
# 按照空格分割文本,返回列表
lineArr = line.strip().split()
dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
labelMat.append(int(lineArr[2]))
return dataMat,labelMat
上述分别为读取数据文件的代码和原数据,原数据共有三列,最后一列是类别。可以看到在代码第7行,构建数据矩阵dataMatrix时不仅读取了数据的前两列,而且还增加了一列数据(常数1),因为权重向量的长度是根据特征个数定的,如果完全按照原数据,只需要设置即可,但增加了一列数据后,权重就增加了一维,变成书中给出的解释为“为了方便计算”,但我仍然不是很清楚。
后来和同学进行讨论,有了一个比较合理的解释。可以把与常数列相乘的权重分量看做偏置,即:
而增加偏置的好处可以增加函数的灵活性,提高函数的拟合能力,详情可以查看神经网络中的偏置究竟有什么用?
上述解释仅为个人的理解和猜想,本人是小白,还在学习中,写笔记旨在记录学习过程中的疑惑和解决方法,如有错误欢迎各位大佬批评指正!