邏輯回歸演算法的一種實現

2021-08-29 18:15:35 字數 1814 閱讀 6823

"""邏輯回歸演算法的一種實現__1"""

import numpy as np

import matplotlib.pyplot as plt

"""載入資料集,將資料集中兩列資料分別儲存到datamat和labelmat"""

def loaddataset():

datamat =

labelmat =

fr = open('/home/jerry/文件/testset.csv')

for line in fr.readlines():

linearr = line.strip().split()

fr.close()

return datamat,labelmat

"""求解最佳擬合的一組回歸係數"""

def gradascent(datamatin,classlables):

datamatrix = mat(datamatin)

labelmat = mat(classlables).transpose()

m,n = shape(datamatrix)

alpha = 0.001

maxcycles = 500

weights = ones((n,1))

for k in range(maxcycles):

h = sigmoid(datamatrix*weights)

error = (labelmat - h)

weights = weights + alpha * datamatrix.transpose()*error

return weights.geta()

"""繪製決策邊界"""

def plotbestfit(weights):

datamat,labelmat = loaddataset()

dataarr = np.array(datamat) #將datamat轉換為numpy陣列

n = np.shape(datamat)[0]

xcord1 = ;ycord1 = #正樣本

xcord2 = ;ycord2 = #負樣本

for i in range(n):

if int(labelmat[i]) == 1:

else:

fig = plt.figure()

ax = fig.add_subplot(111)

ax.scatter(xcord1, ycord1, s = 20, c = 'red', marker = 's', alpha = 0.5)

ax.scatter(xcord2, ycord2, s = 20, c = 'green', alpha = 0.5)

x = np.arange(-3.0, 3.0, 0.1)

y = (-weights[0] - weights[1]*x) / weights[2]

ax.plot(x,y)

plt.title('bestfit')

plt.xlabel('x1')

plt.ylabel('x2')

plt.show()

if __name__ == '__main__':

datamat,labelmat = loaddataset()

weights = gradascent(datamat,labelmat)

plotbestfit(weights)

快速排序演算法的一種實現

參考部落格 白話經典演算法系列之六 快速排序 快速搞定 功能 實現快速排序演算法 include 方法宣告 intadjustsort int a,int m,int n void quicksort int a,int m,int n int main void printf 排序前的陣列順序.n...

邏輯回歸從原理到演算法的實現

線性回歸能對連續值進行 而現實生活中常見的是分類問題。既然能夠用線性回歸 出連續值結果,那根據結果設定一閾值是不是就可以解決這個問題了呢?事實上對於很標準的情況下確實是可以的。但很多實際的情況下,我們需要學習的分類資料並沒有那麼精準,因此引出邏輯回歸。即將線性回歸 的值通過sigmoid函式對映到0...

區域生長演算法的一種C 實現

區域生長演算法是一種影象分割方法,能夠將影象中具有相同特徵的連通區域分割出來,同時保證較好的邊緣資訊。區域生長演算法的優點是簡單,容易實現 但空間和時間複雜度較高,對分割影象要求較高,否則容易形成孔洞和過分割。如果要實現區域生長演算法,基本演算法流程是 1.選取種子點p x0,y0 用堆疊表示種子區...