吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码
吳恩達《機器學習》學習筆記四——單變量線性回歸(梯度下降法)代碼
- 一、問題介紹
- 二、解決過程及代碼講解
- 三、函數解釋
- 1. pandas.read_csv()函數
- 2. DataFrame.head()函數
- 3. Dataframe.insert()函數
 
課程鏈接: https://www.bilibili.com/video/BV164411b7dx?from=search&seid=5329376196520099118
之前介紹了吳恩達機器學習課程的第一個算法——線性回歸,又可以分為一元和多元,優化參數的方法包含梯度下降和正規方程兩種。今天用python來完成一下相關的練習,雖然吳恩達推薦使用Octave,但是用python上手個人感覺更通用。一元的代碼掌握后推廣到多元很簡單,而且梯度下降的優化算法更通用,所以著重講解一下單變量線性回歸(梯度下降法)的代碼。
這次筆記用到的數據集:https://pan.baidu.com/s/1h5Ygse5q2wkTeXA9Pwq2RA
 提取碼:ottq
一、問題介紹
使用一個單變量線性回歸模型來預測食品卡車的利潤。假設你是一個特許經營餐廳的CEO,并且正在考慮在不同城市開設新的出口。這個連鎖店已經在各個城市有卡車,你有城市的利潤和人口的數據。
你希望使用此數據來幫助您選擇要擴展的下一個城市。文件ex1data1.txt包含線性回歸問題的數據集。第一列是城市人口,第二列是那個城市里一輛食品卡車的利潤,利潤為負值時表示損失。
下圖為數據集文件內容部分截圖:
 
 一句話說,就是利用城市的人口數據來預測在該城市的利潤,可以采用單變量線性回歸模型。
二、解決過程及代碼講解
首先導入需要使用的模塊:numpy,pandas和matplotlib.pyplot。
# 導入必要的模塊 import numpy as np import pandas as pd import matplotlib.pyplot as plt讀入數據集,若數據集和代碼文件放在一個文件夾下可以使用相對路徑,否則要使用絕對路徑才能找到數據集。
# 讀入數據集data1.txt path = 'data/data42661/ex1data1.txt' data = pd.read_csv(path, header=None, names=['Population', 'Profit']) data.head() #預覽數據結果如下:
 
 查看一下數據集的統計信息,包括數據個數、均值、方差、最大最小值等。
 也可以通過繪制散點圖具體查看數據集分布。
 因為是單變量問題,讀入的數據可以表示成這樣:
 而為了將假設函數變成如下形式,以便我們可以使用向量化的解決方案來計算代價和梯度:
 X需要插入一列1:
 代碼是:
 但此時X和y是DataFrame形式,需要轉換為矩陣才方便運算:
 定義代價函數:
 
然后就是定義梯度下降算法函數:
 
 還可以通過看代價函數的變化曲線來判斷是否正確工作。
三、函數解釋
1. pandas.read_csv()函數
read_csv()函數是用來讀取csv文件的內容進而轉化為易于操作的數據結構dataframe的常用函數,具有十分強大的功能。
各參數詳解參考:
 pandas.read_csv()函數
2. DataFrame.head()函數
在用Pandas讀取數據之后,我們往往想要觀察一下數據讀取是否準確,這就要用到Pandas里面的head( )函數,但是head( )函數只能讀取前五行數據。
3. Dataframe.insert()函數
在Dataframe的指定列中插入數據。各參數詳解參考:Dataframe.insert()函數
總結
以上是生活随笔為你收集整理的吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 简述SVM
- 下一篇: VS编译器安装Eigen
