百度云盘下载,新乡seo,点击网站,注册公司流程和费用一共多少钱#xff0c;除了部分指标主观和难以测量外#xff0c;该数据还存在一个问题#xff0c;数据集中有30%的值是缺失的。下面将首先介绍如何处理数据集中的数据缺失问题#xff0c;然 后 再 利 用 Logistic回 归和随机梯度上升算法来预测病马的生死。准备数据#xff1a;处理被…除了部分指标主观和难以测量外该数据还存在一个问题数据集中有30%的值是缺失的。下面将首先介绍如何处理数据集中的数据缺失问题然 后 再 利 用 Logistic回 归和随机梯度上升算法来预测病马的生死。准备数据处理被据中的缺失值因为有时候数据相当昂贵扔掉和重新获取都是不可取的所以必须采用一些方法来解决这个问题。下面给出了一些可选的做法这里选择实数0来替换所有缺失值恰好能适用于Logistic回归。这样做的直觉在于 我们需要的是一个在更新时不会影响系数的值。回归系数的更新公式如下使 用 Logistic回归方法进行分类并不需要做很多工作所需做的只是把测试集上每个特征向量乘以最优化方法得来的回归系数再将该乘积结果求和最后输人到sigmoid 函数中即可0 如果对应的sigmoid值大于0.5就预测类别标签为1,否则为0。defclassifyVector(inX, weights):prob sigmoid(sum(inX*weights))if prob 0.5:return 1.0else:return 0.0defcolicTest():frTrain open(F:\\machinelearninginaction\\Ch05\\horseColicTraining.txt)frTest open(F:\\machinelearninginaction\\Ch05\\horseColicTest.txt)trainingSet[]trainingLabels[]for line infrTrain.readlines():currLine line.strip().split(\t)lineArr[]for i in range(21):lineArr.append(float(currLine[i]))trainingSet.append(lineArr)trainingLabels.append(float(currLine[21]))trainWeights stocGradAscent1(array(trainingSet), trainingLabels, 1000)errorCount 0; numTestVec 0.0for line infrTest.readlines():numTestVec 1.0currLine line.strip().split(\t)lineArr[]for i in range(21):lineArr.append(float(currLine[i]))if int(classifyVector(array(lineArr), trainWeights))! int(currLine[21]):errorCount 1errorRate (float(errorCount)/numTestVec)print(the error rate of this test is: %f %errorRate)return errorRatedefmultiTest():numTests 10; errorSum0.0for k inrange(numTests):errorSumcolicTest()print(after %d iterations the average error rate is: %f % (numTests, errorSum/float(numTests)))multiTest()小结