你有乙個10000平方英呎的房子,現在要進行轉買,能賣多少錢呢?
單變數線性回歸,顧名思義是乙個變數對結果產生的影響,例如上題房屋面積對房屋**的影響
回歸是統計學的乙個重要概念,其本意是根據之前的資料**乙個準確的輸出值,解題思路如下:
1、定義乙個模型 hθ(x)=θ0+θ1x,並初始化θ0 θ1的值就會產生乙個如下的影象
然後就會發現這條直線並不能很好的彌合這些資料,所以需要更新引數,但是更新引數前需要求一下這條直線的代價
2.求代價函式
3.進行梯度下降更新引數並取得θ的最小值
梯度下降後會發現這條線比之前的要好一點,接著我們重複這個步驟,最後我們會獲得這樣的乙個影象
接下來我們就以乙個例子來看一下這個流程
import numpy as np
import matplotlib.pyplot as plt
plt.rcparams[
'font.sans-serif']=
['simhei'
]plt.rcparams[
'axes.unicode_minus']=
false
# 讀取資料
data = np.loadtxt(r'c:\users\shy\pycharmprojects\untitled\week3\ex1data1.txt'
,delimiter=
',')
# print(data.shape)
# 資料提取
x = data[:,
:-1]
y = data[:,
-1]# 資料初始化
x = np.c_[np.ones(
len(x)
),x]
y = np.c_[y]
# 定義模型
defmodel
(x,theta)
: h = np.dot(x,theta)
return h
# 定義代價函式
defcostfunc
(h,y)
: m = y.shape[0]
j =1.0/(2
*m)*np.
sum(np.square(h-y)
)# j = 1.0/(2*m)*np.dot((h-y).t,(h-y))
return j
# 定義梯度下降函式
defgraddesc
(x,y,alpha=
0.01
,iter_num=
15000):
m,n = x.shape
theta = np.zeros(
(n,1))
# 初始化theta值
j_history = np.zeros(iter_num)
# 初始化代價函式值
# 執行梯度下降
for i in
range
(iter_num)
: h = model(x,theta)
j_history[i]
= costfunc(h,y)
deltatheta =
(1.0
/m)*np.dot(x.t,h-y)
theta -= alpha*deltatheta
return j_history,theta
# 呼叫梯度下降演算法
j_history,theta = graddesc(x,y)
# 畫圖
# 畫代價曲線
plt.title(
'代價曲線'
)plt.plot(j_history)
plt.xlabel(
'迭代次數'
)plt.ylabel(
'代價值'
)plt.show(
)# 畫樣本散點圖和線性回歸方程
plt.title(
'樣本分佈圖'
)# 散點圖
plt.scatter(x[:,
1],y[:,0
],c=
'pink'
)# 畫回歸方程
通過這個訓練模型,你就能清晰的看出房屋面積對**的影響,也可以知道10000平方英呎的房子能賣多少了
機器學習 單變數線性回歸
1.模型描述 1 常見的字元的意義 2 乙個監督學習演算法的工作方式 2.代價函式 1 什麼是代價函式 平方誤差函式 目標函式 我在網上找了很長時間代價函式的定義,但是準確定義並沒有,我理解的代價函式就是用於找到最優解的目的函式,這也是代價函式的作用。注意 上面的代價函式是二變數的,事實上代價函式可...
機器學習 單變數線性回歸
給定房屋面積和房屋 的資料,然後以房屋面積為橫座標,房屋 為縱座標,繪製資料點。通過繪製曲線,獲得房屋房價的模型,根據房屋面積獲得房屋 這就是乙個regression problem 回歸問題 regression指的是根據之前的資料 出乙個準確的輸出值,即predict real valued o...
機器學習 單變數線性回歸
之前寫過一篇關於線性回歸的博文,今天就單變數的線性回歸做以歸納總結。模型表達 model representation 我們的第乙個學習演算法是線性回歸演算法,讓我們通過乙個例子來開始。這個例子用來 住房 我們使用乙個資料集,該資料集包含奧勒岡州波特蘭市的住房 在這裡,我要根據不 屋尺寸所售出的 畫...