Python學習(機器學習 多變數線性回歸)

2021-07-25 21:14:12 字數 4501 閱讀 2094

通過scale feature利用梯度下降法求theta

直接代入推導出來的theta公式

通過驗算測試引數,可以得知兩個方法**結果相同

#part1:load data

print

"loading data...\n"

f=open('c:\python27\machinelearning\ex1data2.txt')

data=

for line in f:

m=len(data)

import numpy as np

#將資料由列表形式轉化為矩陣

data=np.asmatrix(data)

#提取每一行資料

x=data[:,0]

n=data[:,1]

y=data[:,2]

x=np.hstack((x,n))

#水平合併後x包含兩個變數:房間面積和數量

print

"first 10 examples from the dataset:\n"

print

"x=\n",x[0:10]

print

"y=\n",y[0:10]

#part 2: gradient descent

#將資料引數規則化

print

"normalizing features...\n"

#定義變數引數規則化函式——參考(

deffeaturenormalize

(x):

x_norm=x

m=len(x)

import numpy as np

#初始化均值和方差

mu=np.zeros([1,x.shape[1]])

sigma=np.zeros([1,x.shape[1]])

mu=np.matrix((np.mean(x[:,0]),np.mean(x[:,1])))#均值

#(x-mu)/sigma即將變數規則化

sigma=np.matrix((np.std(x[:,0]),np.std(x[:,1])))

for i in range(0,m):

x_norm[i,:]=(x[i,:]-mu)/sigma

return mu,sigma,x_norm

[mu,sigma,x]=featurenormalize(x)

#add intercept term to x

one=np.ones((m,1))

x=np.hstack((one,x))

alpha=0.3

#定義theta變化的係數(取值要合適)

num_iters=100

#定義迭代的次數

theta=np.zeros((3,1))#初始化theta三行一列陣列

#定義代價函式

defcomputecostmulti

(x,y,theta):

j=0import numpy as np

m=len(y)

j=np.sum(np.multiply((x*theta-y),(x*theta-y)))/(2*m)

return j

#定義梯度函式

defgradientdescentmulti

(x,y,theta,alpha,num_iters,m):

import numpy as np

n=x.shape[1]

j_history=

for i in range(0,num_iters):

h=x*theta#x為矩陣,*在此處是合適的,如果是陣列,則必須np.dot(x,theta)

t=np.zeros((n,1))#初始化偏導數的數值

#迭代累加求最合適的偏導數值

for i in range(0,m):

t=t+((h[i]-y[i])*x[i,:]).t

theta=theta-(alpha*t)/m

return theta,j_history

[theta, j_history] = gradientdescentmulti(x, y, theta, alpha, num_iters,m)

import matplotlib.pyplot as plt

x=for i in range(1,101):

plt.plot(x, j_history,'r')

plt.xlabel("number of iteration")

plt.ylabel("cost j")

print

"theta computed from gradient descent:\n "

print

"theta=\n",theta

print

"to estimate the price of a 1650 sq-ft,3 br house\n"

#x1引數標準規則化

x1=np.matrix([1650,3])

x1=(x1-mu)/sigma

x1=np.matrix([1,x1[0,0],x1[0,1]])

price=x1*theta

print

"price=",price

#part 3: normal equations

print

"soving with nornal equations\n"

#you need to redefine the x,y

x=data[:,0]

n=data[:,1]

y=data[:,2]

x=np.hstack((x,n))

one=np.ones((m,1))

x=np.hstack((one,x))

defnormequation

(x,y):

import numpy as np

theta=np.linalg.inv(x.t*x)*x.t*y#套用theta的推導公式

機器學習 多變數線性回歸

注 本系列部落格是博主學習stanford大學 andrew ng 教授的 機器學習 課程筆記。博主深感學過課程後,不進行總結非常easy遺忘,依據課程加上自己對不明確問題的補充遂有此系列部落格。本系列部落格包含線性回歸 邏輯回歸 神經網路 機器學習的應用和系統設計 支援向量機 聚類 將維 異常檢測...

機器學習 多變數線性回歸

1 說明 需要 房屋的 除了房屋面積還有其他的特徵量,比如層數,年齡,臥室數目等等,如下圖。因為有多個特徵值,所以稱為多變數線性回歸。2 假設函式 單變數只有乙個特徵值,所以之前的假設函式將不再適用,下面是多變數的假設函式。其中x0設定為1 3 特徵縮放 在所有特徵值中,size的範圍大概在0 20...

Python遷移學習 機器學習演算法

終有一天,人工智慧會像我們看待非洲平原上低階生物的化石一樣看待我們。在人工智慧眼中,人類只是直立行走的猿猴,用著粗糙的語言和簡陋的工具,從誕生起就注定會滅絕。電影 機械姬 機器學習是人工智慧中乙個流行的子領域,其涉及的領域非常廣泛。流行的原因之一是在其策略下有乙個由複雜的演算法 技術和方 組成的綜合...