監督學習之迴歸

AIBigbull2050發表於2019-08-30
2019-08-28 19:03:20
監督學習之迴歸

小學課本上講過

線性迴歸

線性迴歸:使用形如y=w T x+b

的線性模型擬合資料輸入和輸出之

間的對映關係的。

目標:對房屋成交資訊建立迴歸方程,並依據迴歸方程對房屋價格進行預測

• 房屋面積單位為平方英尺(ft 2 )房

• 屋成交價格單位為萬

可行性分析

• 簡單而直觀的方式是透過資料的視覺化直接觀察房屋成交價格與房

屋尺寸間是否存線上性關係。

• 對於本實驗的資料來說,散點圖就可以很好的將其在二維平面中進

行視覺化表示。

可行性分析

實現步驟:

1.建立工程並匯入sklearn包

2.載入訓練資料,建立迴歸方程

3.視覺化處理

關於一些相關包的介紹:

 NumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函

數庫。

 matplotlib的pyplot子庫提供了和matlab類似的繪圖API,方便使用者快速繪製2D圖表。

實現步驟——1.建立工程並匯入sklearn包

• 建立house.py檔案

• 匯入sklearn相關包

• import matplotlib.pyplot as plt

• from sklearn import linear_model

表示,matplotlib的pyplot子庫,

它提供了和matlab類似的繪圖API。

表示,可以呼叫sklearn中的

linear_model模組進行線性迴歸。

實現步驟——2.載入訓練資料,建立迴歸方程

• datasets_X = []

• datasets_Y = []

• fr = open('prices.txt','r')

• lines = fr.readlines()

• for line in lines:

• items = line.strip().split(',')

• datasets_X.append(int(items[0]))

• datasets_Y.append(int(items[1]))

• length = len(datasets_X)

• datasets_X = np.array(datasets_X).reshape([length,1])

• datasets_Y = np.array(datasets_Y)

建立datasets_X和datasets_Y用來儲存數

據中的房屋尺寸和房屋成交價格。

開啟資料集所在檔案

prices.txt,讀取資料。

一次讀取整個檔案。

實現步驟——2.載入訓練資料,建立迴歸方程

• datasets_X = []

• datasets_Y = []

• fr = open('prices.txt','r')

• lines = fr.readlines()

• for line in lines:

• items = line.strip().split(',')

• datasets_X.append(int(items[0]))

• datasets_Y.append(int(items[1]))

• length = len(datasets_X)

• datasets_X = np.array(datasets_X).reshape([length,1])

• datasets_Y = np.array(datasets_Y)

逐行進行操作,迴圈遍歷所有資料

去除資料檔案中的逗號

將讀取的資料轉換為int型,並分別寫入

datasets_X和datasets_Y。

實現步驟——2.載入訓練資料,建立迴歸方程

• minX = min(datasets_X)

• maxX = max(datasets_X)

• X = np.arange(minX,maxX).reshape([-1,1])

• linear = linear_model.LinearRegression()

• linear.fit(datasets_X, datasets_Y)

呼叫線性迴歸模組,建立迴歸方程,

擬合資料

以資料datasets_X的最大值和最小

值為範圍,建立等差數列,方便後

續畫圖。

線性迴歸fit函式用於擬合輸入輸出資料,呼叫形式為linear.fit(X,y, sample_weight=None):

• X : X為訓練向量;

• y : y為相對於X的目標向量;

• sample_weight : 分配給各個樣本的權重陣列,一般不需要使用,可省略。

實現步驟——2.載入訓練資料,建立迴歸方程

• 如果有需要,可以透過兩個屬性檢視回歸方程的係數及截距。

• 具體的程式碼如下:

#檢視回歸方程係數

print('Coefficients:', linear.coef_)

#檢視回歸方程截距

print('intercept:', linear.intercept_)

實現步驟——3.視覺化處理

• plt.scatter(datasets_X, datasets_Y, color = 'red')

• plt.plot(X, linear.predict(X), color = 'blue')

• plt.xlabel('Area')

• plt.ylabel('Price')

• plt.show()

scatter函式用於繪製資料

點,這裡表示用紅色繪製數

據點;

plot函式用來繪製直線,這

裡表示用藍色繪製迴歸線;

xlabel和ylabel用來指定

橫縱座標的名稱。

結果展示、

監督學習之迴歸

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2655579/,如需轉載,請註明出處,否則將追究法律責任。

相關文章