国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Logistic回歸的使用

2019-11-14 17:29:18
字體:
來源:轉載
供稿:網友

Logistic回歸的使用和缺失值的處理

從疝氣病預測病馬的死亡率

數據集:

UCI上的數據,368個樣本,28個特征

測試方法:

交叉測試

實現細節:

1.數據中因為存在缺失值所以要進行預處理,這點待會再單獨談
2.數據中本來有三個標簽,這里為了簡單直接將未能存活和安樂死合并了
3.代碼中計算10次求均值

缺失值的處理:

一般來說有這么幾種方法處理缺失值:

  • 人工填寫缺失值
  • 使用全局變量填充缺失值
  • 忽略有缺失值的樣本
  • 使用屬性的中心度量(均值或中位數等)填充缺失值
  • 使用與給定元祖同一類的所有樣本的屬性均值或中位數
  • 使用最可能的值(需要機器學習算法推到)
    對不同的數據我們要采用不同的方法,這里考慮到我們用Logistic回歸那么我們可以采用0填充,因為用0在更新weight = weight + alpha * error * dataMatrix[randIndex]的時候不會產生更新,并且sigmoid(0)=0.5,他對結果也不會產生影響。
  1.  1 #coding=utf-8 2 from numpy import * 3  4 def loadDataSet(): 5     dataMat = [] 6     labelMat = [] 7     fr = open('testSet.txt') 8     for line in fr.readlines(): 9         lineArr = line.strip().split()10         dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])11         labelMat.append(int(lineArr[2]))12     return dataMat, labelMat13     14 def sigmoid(inX):15     return 1.0/(1+exp(-inX))16     17 def stocGradAscent1(dataMatrix, classLabels, numIter=150):18     m,n = shape(dataMatrix)19     20     #alpha = 0.00121     weight = ones(n)22     for j in range(numIter):23         dataIndex = range(m)24         for i in range(m):25             alpha = 4/ (1.0+j+i) +0.0126             randIndex = int(random.uniform(0,len(dataIndex)))27             h = sigmoid(sum(dataMatrix[randIndex]*weight))28             error = classLabels[randIndex] - h29             weight = weight + alpha * error * dataMatrix[randIndex]30             del(dataIndex[randIndex])31     return weight32 33 def classifyVector(inX, weights):34     PRob = sigmoid(sum(inX*weights))35     if prob > 0.5: return 1.036     else: return 0.037 38 def colicTest():39     frTrain = open('horseColicTraining.txt'); frTest = open('horseColicTest.txt')40     trainingSet = []; trainingLabels = []41     for line in frTrain.readlines():42         currLine = line.strip().split('/t')43         lineArr =[]44         for i in range(21):45             lineArr.append(float(currLine[i]))46         trainingSet.append(lineArr)47         trainingLabels.append(float(currLine[21]))48     trainWeights = stocGradAscent1(array(trainingSet), trainingLabels, 1000)49     errorCount = 0; numTestVec = 0.050     for line in frTest.readlines():51         numTestVec += 1.052         currLine = line.strip().split('/t')53         lineArr =[]54         for i in range(21):55             lineArr.append(float(currLine[i]))56         if int(classifyVector(array(lineArr), trainWeights))!= int(currLine[21]):57             errorCount += 158     errorRate = (float(errorCount)/numTestVec)59     print "the error rate of this test is: %f" % errorRate60     return errorRate61 62 def multiTest():63     numTests = 10; errorSum=0.064     for k in range(numTests):65         errorSum += colicTest()66     print "after %d iterations the average error rate is: %f" % (numTests, errorSum/float(numTests))67             68 def main():69     multiTest()70     71 if __name__ == '__main__':72     main()

     

    機器學習筆記索引




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通海县| 青铜峡市| 女性| 咸丰县| 周口市| 安图县| 霸州市| 建湖县| 文水县| 象山县| 屯留县| 黄龙县| 陇西县| 双桥区| 铅山县| 枣强县| 大埔县| 库伦旗| 乡城县| 吉木萨尔县| 郁南县| 巨野县| 清原| 唐河县| 河津市| 永和县| 汝阳县| 桂东县| 佛坪县| 施秉县| 资源县| 青阳县| 沈阳市| 囊谦县| 禄劝| 永修县| 子洲县| 手游| 鄂托克旗| 嵊州市| 鄂伦春自治旗|