目錄
1)資料處理
2)代價函式
3)scikit-learn訓練資料集
4)正規方程
練習1還包括乙個房屋**資料集,其中有2個變數(房子的大小,臥室的數量)和目標(房子的**)。 我們使用我們已經應用的技術來分析資料集。
還是那個建議,大家拿到資料先看看資料長什麼樣子。
path = 'ex1data2.txt'
data2 = pd.read_csv(path, header=none, names=['size', 'bedrooms', 'price'])
data2.head()
對於此任務,我們新增了另乙個預處理步驟 - 特徵歸一化。 這個對於pandas來說很簡單
data2 = (data2 - data2.mean()) / data2.std()
data2.head()
現在我們重複第1部分的預處理步驟,並對新資料集執行線性回歸程式。
data2.insert(0, 'ones', 1)
# set x (training data) and y (target variable)
cols = data2.shape[1]
x2 = data2.iloc[:,0:cols-1]
y2 = data2.iloc[:,cols-1:cols]
# convert to matrices and initialize theta
x2 = np.matrix(x2.values)
y2 = np.matrix(y2.values)
theta2 = np.matrix(np.array([0,0,0]))
# perform linear regression on the data set
g2, cost2 = gradientdescent(x2, y2, theta2, alpha, iters)
# get the cost (error) of the model
computecost(x2, y2, g2)
0.13070336960771892
我們也可以快速檢視這乙個的訓練程序。
我們也可以使用scikit-learn的線性回歸函式,而不是從頭開始實現這些演算法。 我們將scikit-learn的線性回歸演算法應用於第1部分的資料,並看看它的表現。
from sklearn import linear_model
model = linear_model.linearregression()
model.fit(x, y)
scikit-learn model的**表現
x = np.array(x[:, 1].a1) #選取x的第1列(從0列開始)
f = model.predict(x).flatten()
fig, ax = plt.subplots(figsize=(12,8))
ax.plot(x, f, 'r', label='prediction')
ax.scatter(data.population, data.profit, label='traning data')
ax.legend(loc=2)
ax.set_xlabel('population')
ax.set_ylabel('profit')
ax.set_title('predicted profit vs. population size')
plt.show()
正規方程是通過求解下面的方程來找出使得代價函式最小的引數的:
假設我們的訓練集特徵矩陣為 x(包含了?0=1)並且我們的訓練集結果為向量 y,則利用正規方程解出向量:
梯度下降與正規方程的比較:
梯度下降:需要選擇學習率α,需要多次迭代,當特徵數量n大時也能較好適用,適用於各種型別的模型;
正規方程:不需要選擇學習率α,一次計算得出,需要計算
# 正規方程
def normaleqn(x, y):
theta = np.linalg.inv(x.t@x)@x.t@y#x.t@x等價於x.t.dot(x)
return theta
final_theta2=normaleqn(x, y)#感覺和批量梯度下降的theta的值有點差距
final_theta2
matrix([[-3.89578088],
[ 1.19303364]])
吳恩達機器學習筆記 多元線性回歸
之前的文章中已經講述了簡單的一元線性回歸的基礎知識,現在我們來繼續討論多元線性回歸。本文針對吳恩達機器學習第二週課程多元線性回歸部分。所謂多元線性回歸正如其名字一樣,就是說這裡的變數是多個的,下面介紹一下如何表示含有多個變數情況下的假設函式 h theta x theta 0 theta 1x 1 ...
吳恩達機器學習作業Python實現 一 線性回歸
參考 import numpy as np import pandas as pd import matplotlib.pyplot as plt 讀取資料 path i 吳恩達機器學習 test1 資料集 ex1data1.txt names 新增列名,header 用指定的行為作為標題,若原無標...
吳恩達 多元線性回歸
練習1還包括乙個房屋 資料集,其中有2個變數 房子的大小,臥室的數量 和目標 房子的 我們使用我們已經應用的技術來分析資料集 匯入資料集並檢視 把資料進行歸一化 處理資料得到x,y與theta data2.insert 0,one 1 cols data2.shape 1 x2 data2.iloc...