線性迴歸
線性迴歸:使用形如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用來指定
橫縱座標的名稱。
結果展示、