吳恩達機器學習作業(2) 多元線性回歸

2021-09-02 11:42:25 字數 2809 閱讀 1077

目錄

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...