最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python機器學(xué)習(xí)logistic回歸代碼解析

 更新時間:2018年01月17日 15:11:20   作者:付煒超  
這篇文章主要介紹了Python機器學(xué)習(xí)logistic回歸代碼解析,具有一定借鑒價值,需要的朋友可以參考下

本文主要研究的是Python機器學(xué)習(xí)logistic回歸的相關(guān)內(nèi)容,同時介紹了一些機器學(xué)習(xí)中的概念,具體如下。

Logistic回歸的主要目的:尋找一個非線性函數(shù)sigmod最佳的擬合參數(shù)

擬合、插值和逼近是數(shù)值分析的三大工具

回歸:對一直公式的位置參數(shù)進(jìn)行估計

擬合:把平面上的一些系列點,用一條光滑曲線連接起來

logistic主要思想:根據(jù)現(xiàn)有數(shù)據(jù)對分類邊界線建立回歸公式、以此進(jìn)行分類

sigmoid函數(shù):在神經(jīng)網(wǎng)絡(luò)中它是所謂的激勵函數(shù)。當(dāng)輸入大于0時,輸出趨向于1,輸入小于0時,輸出趨向0,輸入為0時,輸出為0.5

梯度上升:要找到某個函數(shù)的最大值,最好的方法是沿著該函數(shù)的梯度方向探尋

收斂:隨著迭代的運行算法的結(jié)果和真實結(jié)果的誤差越來越小,且趨向于一個固定值。

爬山算法:是完完全全的貪心算法,每次鼠目寸光的選擇一個當(dāng)前最優(yōu)解,英雌只能搜尋到局部最優(yōu)值

模擬退火算法:也是一種貪心算法但它的sou索過程引入了隨機因素,模擬退火算法以一定的概念來接受一個比當(dāng)前解要差的解,因此有可能會跳出這個局部最優(yōu)解,達(dá)到全局最優(yōu)解。

處理數(shù)據(jù)中的缺失值:

使用可用特征的均值來填補缺失值

使用特殊值來填補缺失值,如-1

忽略有缺失值的樣本

使用相似樣本的均值添補缺失值

使用其它機器學(xué)習(xí)算法預(yù)測缺失值

標(biāo)簽與特征不同,很難確定采用某個合適的值來替換。

#coding:utf-8
 
from numpy import *
import math
 
def loadDataSet():
  dataMat = []; labelMat = []
  fr = open('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
 
def sigmoid(inX):
  return longfloat(1.0/(1+exp(-inX))) #sigmoid函數(shù)公式
 
def gradAscent(dataMatIn, classLabels):
  #dataMatIn 一個2維的數(shù)組;classLabels 類別標(biāo)簽
  dataMatrix = mat(dataMatIn)       #轉(zhuǎn)換為矩陣
  labelMat = mat(classLabels).transpose() #得到矩陣的轉(zhuǎn)置矩陣
  m,n = shape(dataMatrix)  #讀取矩陣的長度,二維矩陣,返回兩個值
  alpha = 0.001     #向目標(biāo)移動的步長
  maxCycles = 500    #迭代次數(shù) 
  weights = ones((n,1))  #ones()函數(shù)用以創(chuàng)建指定形狀和類型的數(shù)組,默認(rèn)情況下返回的類型是float64。但是,如果使用ones()函數(shù)時指定了數(shù)據(jù)類型,那么返回的就是該類型
  for k in range(maxCycles):       
    h = sigmoid(dataMatrix*weights)   #matrix mult
    error = (labelMat - h)       #vector subtraction
    weights = weights + alpha * dataMatrix.transpose()* error #matrix mult
  return weights
 
def plotBestFit(weights):
  import matplotlib as mpl
  mpl.use('Agg')         #為了防止出現(xiàn):RuntimeError: could not open display報錯
  import matplotlib.pyplot as plt
  dataMat,labelMat=loadDataSet()
  dataArr = array(dataMat)
  n = shape(dataArr)[0] 
  xcord1 = []; ycord1 = []
  xcord2 = []; ycord2 = []
  for i in range(n):
    if int(labelMat[i])== 1:
      xcord1.append(dataArr[i,1]); ycord1.append(dataArr[i,2])
    else:
      xcord2.append(dataArr[i,1]); ycord2.append(dataArr[i,2])
  fig = plt.figure() #figure: 控制dpi、邊界顏色、圖形大小、和子區(qū)( subplot)設(shè)置
  ax = fig.add_subplot(111) # 參數(shù)111的意思是:將畫布分割成1行1列,圖像畫在從左到右從上到下的第1塊,
  ax.scatter(xcord1, ycord1, s=30, c='red', marker='s')
  ax.scatter(xcord2, ycord2, s=30, c='green')
  x = arange(-3.0, 3.0, 0.1)
  y = (-weights[0]-weights[1]*x)/weights[2]
  ax.plot(x, y)
  plt.xlabel('X1'); plt.ylabel('X2');
  plt.savefig('plotBestFit.png')  #因為我是騰訊云服務(wù)器,沒有圖形界面,所以我保存為圖片。
 
#隨機梯度上升算法
def stocGradAscent0(dataMatrix, classLabels):
  m,n = shape(dataMatrix)
  alpha = 0.01
  weights = ones(n)  #initialize to all ones
  for i in range(m):
    h = sigmoid(sum(dataMatrix[i]*weights))
    error = classLabels[i] - h
    weights = weights + alpha * error * dataMatrix[i] #回歸系數(shù)的更新操作
  return weights
 
#改進(jìn)的隨機梯度上升算法
def stocGradAscent1(dataMatrix, classLabels, numIter=150):  #較之前的增加了一個迭代次數(shù)作為第三個參數(shù),默認(rèn)值150
  m,n = shape(dataMatrix)
  weights = ones(n)  
  for j in range(numIter):
    dataIndex = range(m)
    for i in range(m):
      alpha = 4/(1.0+j+i)+0.0001  
      randIndex = int(random.uniform(0,len(dataIndex)))  #樣本隨機選擇
      h = sigmoid(sum(dataMatrix[randIndex]*weights))
      error = classLabels[randIndex] - h
      weights = weights + alpha * error * dataMatrix[randIndex] #回歸系數(shù)的更新操作
      del(dataIndex[randIndex])
  return weights
 
#以回歸系數(shù)和特征向量作為輸入計算對應(yīng)的sigmoid值
def classifyVector(inX, weights):
  prob = sigmoid(sum(inX*weights))
  if prob > 0.5: return 1.0        #如果sigmoid值大于0.5函數(shù)返回1,否則返回0
  else: return 0.0
 
#打開測試集和訓(xùn)練集,并對數(shù)據(jù)進(jìn)行格式化處理的函數(shù)
def colicTest():
  frTrain = open('horseColicTraining.txt'); frTest = open('horseColicTest.txt')
  trainingSet = []; trainingLabels = []
  for line in frTrain.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) #計算回歸系數(shù)向量
  errorCount = 0; numTestVec = 0.0
  for line in frTest.readlines():
    numTestVec += 1.0
    currLine = 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 += 1
  errorRate = (float(errorCount)/numTestVec)
  print "the error rate of this test is: %f" % errorRate
  return errorRate
#調(diào)用函數(shù)colicTest()10次,并求結(jié)果的平均值
def multiTest():
  numTests = 10; errorSum=0.0
  for k in range(numTests):
    errorSum += colicTest()
  print "after %d iterations the average error rate is: %f" % (numTests, errorSum/float(numTests))

總結(jié)

以上就是本文關(guān)于Python機器學(xué)習(xí)logistic回歸代碼解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • Python中文件操作簡明介紹

    Python中文件操作簡明介紹

    這篇文章主要介紹了Python中文件操作簡明介紹,本文講解了打開文件、讀取方法、寫入方法、文件內(nèi)移動、文件迭代、關(guān)閉文件、截取文件等內(nèi)容,并給出了一個完整操作實例,需要的朋友可以參考下
    2015-04-04
  • 利用Python代碼實現(xiàn)數(shù)據(jù)可視化的5種方法詳解

    利用Python代碼實現(xiàn)數(shù)據(jù)可視化的5種方法詳解

    在數(shù)據(jù)科學(xué)中,有多種工具可以進(jìn)行可視化。下面這篇文章主要給大家介紹了關(guān)于利用Python代碼實現(xiàn)數(shù)據(jù)可視化的5種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2018-03-03
  • Python編程基礎(chǔ)之字典

    Python編程基礎(chǔ)之字典

    這篇文章主要為大家介紹了Python的字典,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • python wav模塊獲取采樣率 采樣點聲道量化位數(shù)(實例代碼)

    python wav模塊獲取采樣率 采樣點聲道量化位數(shù)(實例代碼)

    這篇文章主要介紹了python wav模塊獲取采樣率 采樣點聲道量化位數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Python+OpenCV+圖片旋轉(zhuǎn)并用原底色填充新四角的例子

    Python+OpenCV+圖片旋轉(zhuǎn)并用原底色填充新四角的例子

    今天小編就為大家分享一篇Python+OpenCV+圖片旋轉(zhuǎn)并用原底色填充新四角的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python安裝與使用redis的方法

    python安裝與使用redis的方法

    這篇文章主要介紹了python安裝與使用redis的方法,分析了安裝與配置的具體步驟,并結(jié)合實例詳細(xì)分析了redis數(shù)據(jù)庫的具體使用技巧,需要的朋友可以參考下
    2016-04-04
  • python如何繪制路段時變車速熱力圖

    python如何繪制路段時變車速熱力圖

    本文通過熱力圖形式展示了24小時內(nèi)某個路段的車速變化和特定時刻某條路徑的車速情況,數(shù)據(jù)是通過Numpy隨機生成的,用以模擬真實的車速情況,文章還展示了如何利用pandas和seaborn庫中的pivot_table()和heatmap()函數(shù)生成熱力圖
    2024-09-09
  • pycharm 如何跳出服務(wù)器證書不受信任的提示

    pycharm 如何跳出服務(wù)器證書不受信任的提示

    這篇文章主要介紹了pycharm 跳出服務(wù)器證書不受信任的提示操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • matplotlib 向任意位置添加一個子圖(axes)

    matplotlib 向任意位置添加一個子圖(axes)

    這篇文章主要介紹了matplotlib 向任意位置添加一個子圖(axes),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 13個Pandas實用技巧,助你提高開發(fā)效率

    13個Pandas實用技巧,助你提高開發(fā)效率

    這篇文章主要介紹了13個Pandas實用技巧,幫助你提高python開發(fā)的效率,感興趣的朋友可以了解下
    2020-08-08

最新評論

红原县| 定南县| 商都县| 寿光市| 罗田县| 纳雍县| 长乐市| 蓬莱市| 延长县| 温泉县| 通榆县| 邛崃市| 内丘县| 丰台区| 应用必备| 曲沃县| 赣榆县| 乌拉特中旗| 来宾市| 京山县| 于都县| 苗栗县| 偃师市| 商水县| 台山市| 德清县| 新巴尔虎左旗| 华亭县| 临湘市| 泰州市| 察哈| 隆安县| 宁波市| 达孜县| 金华市| 石门县| 高雄市| 都昌县| 吐鲁番市| 屏南县| 西盟|