《機器學習》第三章 對率回歸

2022-07-22 12:06:21 字數 1561 閱讀 1098

import numpy as np

from numpy import random

def dataload(filename,l,r):#匯入資料,感覺匯入的有點困難

f=open(filename)

ar=f.readlines()

num=len(ar)

mat=np.zeros((r-l+1,num))

ind=0

for line in ar:

line.split('\n')

linelist=line.split(' ')

mat[0:r-l,ind]=linelist[l:r]

mat[r-l:r-l+1,ind]=1.0

ind=ind+1

return mat

x=dataload("1.txt",0,2)

y=dataload("1.txt",2,3)

beta=random.random(size=(3,1))#隨機生成初始的beta矩陣

def p1(mat,p):

ha=np.dot(mat.t,x[:,p])

return np.exp(ha)/(1+np.exp(ha))

def one(mat):#求關於beta函式的一階導

tep=np.zeros((3,1))

for i in range(17):

temp=np.zeros((3,1))

for j in range(3):

temp[j,0]=x[j,i]

tep=tep+temp*(y[0,i]-p1(mat,i))

return -1.0*tep

def two(mat):#二階導

tep=np.zeros((3,3))

for i in range(17):

temp=np.zeros((3,1))

for j in range(3):

temp[j,0]=x[j,i]

tep=tep+np.dot(temp,temp.t)*p1(mat,i)*(1-p1(mat,i))

return tep

cnt=10000

for i in range(cnt):#使用牛頓法迭代cnt次得到beta矩陣

tep=two(beta)

if(np.linalg.det(tep)==0):

break

else :

tep=np.linalg.inv(tep)

beta=beta-np.dot(tep,one(beta))

ans=np.dot(beta.t,x)

def sigmoid(p):#sigmoid 函式

return 1.0/(1+np.exp(-p))

for i in range(17):

print(sigmoid(ans[0,i]))

這是用對率回歸得到的資料集3.0的結果,第一次寫python的**,好多東西不會,希望有大神能指點指點我,感覺沒人交流我都不知到我自學的對不對,畢竟學習能力不行

機器學習(西瓜書)第三章 3 3對率回歸程式設計

常用 1.f csv.reader open watermelon3 0 ch.csv r 2.enumerate 3.concatenate np.concatenate px1,px2,np.ones 50,1 axis 1 4.np.where ans 0.5,是 否 5.import mat...

scikit learn機器學習 第三章 複習題

1.什麼是過擬合?什麼是欠擬合?怎麼樣去診斷演算法是否是過擬合或欠擬合?過擬合 訓練誤差很小,驗證誤差較大。高方差,欠擬合 訓練誤差和驗證誤差都很大。高偏差,診斷演算法 繪製這個模型的學習曲線 2.模型的擬合成本是什麼意思?它和模型的準確性有什麼關係?擬合成本 衡量模型與訓練樣本符合程度的指標 關係...

OpenGl學習第三章

上個星期學習了下金字塔的繪製,然後這週有看了看正方體的繪製,通過依次繪製6個面來繪製正方體,整體 跟上次的金三角沒有區別,只是座標點,顏色,已經繪製的 有點區別,上 看看 這是座標 private static float cubevertexcoords new float new float n...