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

python編寫Logistic邏輯回歸

 更新時(shí)間:2020年12月30日 10:04:34   作者:開貳錘  
這篇文章主要介紹了python編寫Logistic邏輯回歸的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

用一條直線對(duì)數(shù)據(jù)進(jìn)行擬合的過(guò)程稱為回歸。邏輯回歸分類的思想是:根據(jù)現(xiàn)有數(shù)據(jù)對(duì)分類邊界線建立回歸公式。
公式表示為:

一、梯度上升法

每次迭代所有的數(shù)據(jù)都參與計(jì)算。

for 循環(huán)次數(shù):
        訓(xùn)練

代碼如下:

import numpy as np
import matplotlib.pyplot as plt
def loadData():
 labelVec = []
 dataMat = []
 with open('testSet.txt') as f:
  for line in f.readlines():
   dataMat.append([1.0,line.strip().split()[0],line.strip().split()[1]])
   labelVec.append(line.strip().split()[2])
 return dataMat,labelVec

def Sigmoid(inX):
 return 1/(1+np.exp(-inX))

def trainLR(dataMat,labelVec):
 dataMatrix = np.mat(dataMat).astype(np.float64)
 lableMatrix = np.mat(labelVec).T.astype(np.float64)
 m,n = dataMatrix.shape
 w = np.ones((n,1))
 alpha = 0.001
 for i in range(500):
  predict = Sigmoid(dataMatrix*w)
  error = predict-lableMatrix
  w = w - alpha*dataMatrix.T*error
 return w


def plotBestFit(wei,data,label):
 if type(wei).__name__ == 'ndarray':
  weights = wei
 else:
  weights = wei.getA()
 fig = plt.figure(0)
 ax = fig.add_subplot(111)
 xxx = np.arange(-3,3,0.1)
 yyy = - weights[0]/weights[2] - weights[1]/weights[2]*xxx
 ax.plot(xxx,yyy)
 cord1 = []
 cord0 = []
 for i in range(len(label)):
  if label[i] == 1:
   cord1.append(data[i][1:3])
  else:
   cord0.append(data[i][1:3])
 cord1 = np.array(cord1)
 cord0 = np.array(cord0)
 ax.scatter(cord1[:,0],cord1[:,1],c='red')
 ax.scatter(cord0[:,0],cord0[:,1],c='green')
 plt.show()

if __name__ == "__main__":
 data,label = loadData()
 data = np.array(data).astype(np.float64)
 label = [int(item) for item in label]
 weight = trainLR(data,label)
 plotBestFit(weight,data,label)

二、隨機(jī)梯度上升法

1.學(xué)習(xí)參數(shù)隨迭代次數(shù)調(diào)整,可以緩解參數(shù)的高頻波動(dòng)。
2.隨機(jī)選取樣本來(lái)更新回歸參數(shù),可以減少周期性的波動(dòng)。

for 循環(huán)次數(shù):
    for 樣本數(shù)量:
        更新學(xué)習(xí)速率
        隨機(jī)選取樣本
        訓(xùn)練
        在樣本集中刪除該樣本

代碼如下:

import numpy as np
import matplotlib.pyplot as plt
def loadData():
 labelVec = []
 dataMat = []
 with open('testSet.txt') as f:
  for line in f.readlines():
   dataMat.append([1.0,line.strip().split()[0],line.strip().split()[1]])
   labelVec.append(line.strip().split()[2])
 return dataMat,labelVec

def Sigmoid(inX):
 return 1/(1+np.exp(-inX))


def plotBestFit(wei,data,label):
 if type(wei).__name__ == 'ndarray':
  weights = wei
 else:
  weights = wei.getA()
 fig = plt.figure(0)
 ax = fig.add_subplot(111)
 xxx = np.arange(-3,3,0.1)
 yyy = - weights[0]/weights[2] - weights[1]/weights[2]*xxx
 ax.plot(xxx,yyy)
 cord1 = []
 cord0 = []
 for i in range(len(label)):
  if label[i] == 1:
   cord1.append(data[i][1:3])
  else:
   cord0.append(data[i][1:3])
 cord1 = np.array(cord1)
 cord0 = np.array(cord0)
 ax.scatter(cord1[:,0],cord1[:,1],c='red')
 ax.scatter(cord0[:,0],cord0[:,1],c='green')
 plt.show()

def stocGradAscent(dataMat,labelVec,trainLoop):
 m,n = np.shape(dataMat)
 w = np.ones((n,1))
 for j in range(trainLoop):
  dataIndex = range(m)
  for i in range(m):
   alpha = 4/(i+j+1) + 0.01
   randIndex = int(np.random.uniform(0,len(dataIndex)))
   predict = Sigmoid(np.dot(dataMat[dataIndex[randIndex]],w))
   error = predict - labelVec[dataIndex[randIndex]]
   w = w - alpha*error*dataMat[dataIndex[randIndex]].reshape(n,1)
   np.delete(dataIndex,randIndex,0)
 return w

if __name__ == "__main__":
 data,label = loadData()
 data = np.array(data).astype(np.float64)
 label = [int(item) for item in label]
 weight = stocGradAscent(data,label,300) 
 plotBestFit(weight,data,label)

三、編程技巧

1.字符串提取

將字符串中的'\n', ‘\r', ‘\t', ' ‘去除,按空格符劃分。

string.strip().split()

2.判斷類型

if type(secondTree[value]).__name__ == 'dict':

3.乘法

numpy兩個(gè)矩陣類型的向量相乘,結(jié)果還是一個(gè)矩陣

c = a*b

c
Out[66]: matrix([[ 6.830482]])

兩個(gè)向量類型的向量相乘,結(jié)果為一個(gè)二維數(shù)組

b
Out[80]: 
array([[ 1.],
  [ 1.],
  [ 1.]])

a
Out[81]: array([1, 2, 3])

a*b
Out[82]: 
array([[ 1., 2., 3.],
  [ 1., 2., 3.],
  [ 1., 2., 3.]])

b*a
Out[83]: 
array([[ 1., 2., 3.],
  [ 1., 2., 3.],
  [ 1., 2., 3.]])

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python插入SVG到PDF文檔中的方法示例

    使用Python插入SVG到PDF文檔中的方法示例

    將SVG(可縮放矢量圖形)文件插入到PDF(便攜式文檔格式)文件中不僅能夠保留SVG圖像的矢量特性,確保圖像在任何分辨率下都保持清晰,使得技術(shù)文檔、手冊(cè)、報(bào)告等內(nèi)容更加豐富多樣且易于傳播,本文將介紹如何使用Python插入SVG文件到PDF文檔中,需要的朋友可以參考下
    2024-08-08
  • django 在原有表格添加或刪除字段的實(shí)例

    django 在原有表格添加或刪除字段的實(shí)例

    今天小編就為大家分享一篇django 在原有表格添加或刪除字段的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • python中如何設(shè)置list步長(zhǎng)

    python中如何設(shè)置list步長(zhǎng)

    這篇文章主要介紹了python中如何設(shè)置list步長(zhǎng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python使用ElementTree美化XML格式的操作

    Python使用ElementTree美化XML格式的操作

    這篇文章主要介紹了Python使用ElementTree美化XML格式的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python從入門到精通之條件語(yǔ)句和循環(huán)結(jié)構(gòu)詳解

    Python從入門到精通之條件語(yǔ)句和循環(huán)結(jié)構(gòu)詳解

    Python中提供了強(qiáng)大而靈活的條件語(yǔ)句和循環(huán)結(jié)構(gòu),本文將從入門到精通地介紹它們的使用方法,并通過(guò)相關(guān)代碼進(jìn)行講解,希望對(duì)大家深入了解Python有一定的幫助
    2023-07-07
  • python基礎(chǔ)之貪婪模式與非貪婪模式

    python基礎(chǔ)之貪婪模式與非貪婪模式

    這篇文章主要介紹了python貪婪模式與非貪婪模式 ,實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10
  • 基于python 二維數(shù)組及畫圖的實(shí)例詳解

    基于python 二維數(shù)組及畫圖的實(shí)例詳解

    下面小編就為大家分享一篇基于python 二維數(shù)組及畫圖的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 僅用幾行Python代碼就能復(fù)制她的U盤文件?

    僅用幾行Python代碼就能復(fù)制她的U盤文件?

    上大學(xué)的時(shí)候有老師不給上課的PPT,就總想有個(gè)程序能偷偷復(fù)制老師的U盤一直沒(méi)有去實(shí)現(xiàn),最近不想看論文就想起來(lái)這個(gè)事情了,發(fā)現(xiàn)其實(shí)用幾行python代碼就能搞定.分兩步,首先寫出來(lái)python代碼,其次把.py文件轉(zhuǎn)換成exe文件,直接在windows電腦上后臺(tái)運(yùn)行,需要的朋友可以參考下
    2021-06-06
  • 深入解析Python中占位符%的使用方法

    深入解析Python中占位符%的使用方法

    在Python中,%占位符是一種強(qiáng)大的工具,用于格式化字符串,本文將深入解析Python中占位符的使用方法,包括字符串格式化、數(shù)字格式化、日期格式化等多個(gè)方面,需要的可以參考下
    2023-12-12
  • Python2及Python3如何實(shí)現(xiàn)兼容切換

    Python2及Python3如何實(shí)現(xiàn)兼容切換

    這篇文章主要介紹了Python2及Python3如何實(shí)現(xiàn)兼容切換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

武夷山市| 鹤岗市| 芦山县| 河津市| 老河口市| 肃北| 开封县| 于都县| 汝阳县| 友谊县| 丹江口市| 文安县| 休宁县| 克山县| 成安县| 肇源县| 遵化市| 南安市| 清丰县| 灵台县| 台江县| 磴口县| 溧水县| 望江县| 云南省| 临澧县| 堆龙德庆县| 固始县| 十堰市| 黄平县| 兴文县| 哈巴河县| 缙云县| 仁化县| 彝良县| 金山区| 苏尼特右旗| 乌海市| 永济市| 周至县| 蓝山县|