"""邏輯回歸演算法的一種實現__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 用堆疊表示種子區...