python预测疾病_吴裕雄--天生自然python机器学习:使用Logistic回归从疝气病症预测病马的死亡率...
,除了部分指標主觀和難以測量外,該數據還存在一個問題,數據集中有
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.0
else:return 0.0
defcolicTest():
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.0
for 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 errorRate
defmultiTest():
numTests= 10; errorSum=0.0
for k inrange(numTests):
errorSum+=colicTest()print("after %d iterations the average error rate is: %f" % (numTests, errorSum/float(numTests)))
multiTest()
小結:
總結
以上是生活随笔為你收集整理的python预测疾病_吴裕雄--天生自然python机器学习:使用Logistic回归从疝气病症预测病马的死亡率...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于 m1 xcode12 编译报错 t
- 下一篇: python正向切片_使Python切片