題目:賣房子,已知一系列資料,根據房屋大小和臥室數量兩個特徵,**房子價錢,資料在(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...