機器學習 線性回歸ex1data2

2021-10-25 09:03:06 字數 2490 閱讀 1929

題目:賣房子,已知一系列資料,根據房屋大小和臥室數量兩個特徵,**房子價錢,資料在(ex1data2.txt),計算1650平方英呎、3個臥室的房子價錢

預備知識

一、歸一化。

特徵歸一化(為了使梯度下降得更方便),(x-μ)/σ, 減去平均值再除以方差。概率模型不需要歸一化,因為它們不關心變數的值,而是關心變數的分布和變數之間的條件概率。像svm、線性回歸之類的最優化問題就需要歸一化。決策樹屬於前者。歸一化也是提公升演算法應用能力的必備能力之一。

二、用正規方程(解析解)直接計算θ 。

**

import numpy as np

import pandas as pd

path =

'e:\書籍\機器學習\機器學習題目**及資料檔案\線性回歸\資料檔案\ex1data2.txt'

data = pd.read_csv(path, names=

['size'

,'bedrooms'

,'price'])

# 特徵歸一化(為了使梯度下降得更方便),(x-μ)/σ, 減去平均值再除以方差

# 概率模型不需要歸一化,因為它們不關心變數的值,而是關心變數的分布和變數之間的條件概率。

# 像svm、線性回歸之類的最優化問題就需要歸一化。決策樹屬於前者。歸一化也是提公升演算法應用能力的必備能力之一。

mean = data.mean(

)std = data.std(

)data =

((data - mean)

/ std)

data.insert(0,

'ones',1

)#定義代價函式

defcomputecost

(x, y, theta)

: inner =

((x@theta)

- y)**2

return np.

sum(inner)/(

2*len(x)

)#定義梯度下降函式

defgradient

(x, y, theta, alpha, epoch)

:# m是樣本的數量

m =len(y)

# 初始化乙個ndarray,包含每次epoch的cost

cost = np.zeros(epoch)

for i in

range

(epoch)

: theta = theta-

(alpha/m)*(

(x@theta-y)

.t@x)

cost[i]

= computecost(x, y, theta)

return theta, cost

# alpha - 學習率,epoch - theta迭代次數,theta初始為0

alpha =

0.01

epoch =

1000

theta = np.array([0

,0,0

])# 獲取設定資料,計算最終theta值

x = data.iloc[:,

:-1]

.values

y = data.iloc[:,

-1].values

theta, cost = gradient(x, y, theta, alpha, epoch)

# size=1650 bedrooms=3 求price

price =

(theta[0]

+(([

1650,3

]- mean[0:

2])/ std[0:

2])@theta[1:

])* std[2]

+ mean[2]

print

(price)

theta = np.array([0

,0,0

])# 正規方程

defnormaleqn

(x, y, theta)

: theta = np.linalg.pinv(x.t@x)@x.t@y #x.t@x等價於x.t.dot(x)

return theta

theta = normaleqn(x, y, theta)

price =

(theta[0]

+(([

1650,3

]- mean[0:

2])/ std[0:

2])@theta[1:

])* std[2]

+ mean[2]

print

(price)

機器學習(1) 線性回歸

無正則的線性回歸模型 l1正則的lasso模型 l2正則的ridge regression 嶺回歸 模型 開方均方誤差 rooted mean squared error,rmse 平均絕對誤差 mean absolute error,mae 1.生成學習器例項 lr linearregressio...

機器學習 1 線性回歸

2 linear regression with multiple variables multivariate linear regression 多變數線性回歸 3 gradient descent in practice 3.2 learning rate 3.3 features and p...

機器學習之1 線性回歸

在最近一段時間,對機器學習進行了學習,但感覺效果不是很好。一日與朋友聊起此事,他建議建個部落格,一來梳理一下所學內容,二來和大家一起學習交流。因此,建立了此部落格,如果您發現博文中有不當之處,歡迎您來郵指明,我的郵箱為212352807 qq.com 在機器學習中,基本分為兩大問題 監督學習 sup...