線性回歸的python實現

2021-07-24 10:20:35 字數 1743 閱讀 4985

最近在學習機器學習的一些演算法,從最開始的線性回歸開始。線性回歸其實就是用一條直線來模擬你的資料,並且讓所產生的誤差盡可能的小。

#coding=utf-8

import random

import numpy as np

from matplotlib import pyplot as pp

random.seed(1)#產生隨機種子

house_size = [random.randrange(70,200) for i in range(10000)]

distance_from_citycenter = [random.randrange(1,30) for i in range(10000)]

floor = [random.randrange(1,20) for i in range(10000)]

house_price =

for i in range(10000):

price = house_size[i]*random.randrange(5e4,10e4)+distance_from_citycenter[i]*(-1e4)+floor[i]*1e4+random.randrange(1,1e6)\

x = [[1,house_size[i],distance_from_citycenter[i],floor[i]] for i in range(10000)]#構建所需要的資料為乙個向量

x_matrix = np.array(x)#將它轉換為矩陣的形式

y_matrix = np.array(house_price)#已知**的矩陣

y_matrix = y_matrix.reshape(len(y_matrix),1)#將它轉換為列向量的形式

theta = [0 for i in range(4)]#假設初始的未知數全為0

theta_matrix = np.array(theta)

theta_matrix = theta_matrix.reshape(len(theta_matrix),1)

def cost_function(x,theta,y):#定義代價函式

y_pred = x.dot(theta)

diff = y_pred - y

squared_error = np.power(diff,2)

return np.sum(squared_error)/(2*len(y))

def gradient(x,theta,y):#實現梯度下降,以此來獲取最佳的未知數的值

y_pred = x.dot(theta)

diff = y_pred - y

gradient = (1/len(y))*x.t.dot(diff)

return gradient

theta_matrix = theta_matrix.astype("float64")

max_item=10000#迭代次數

learning_rate = 0.00001#學習效率

for i in range(max_item):

theta_matrix -= gradient(x_matrix,theta_matrix,y_matrix)*learning_rate

# if i%20 ==0:

# print(cost_function(x_matrix,theta_matrix,y_matrix))

print(theta_matrix)

python實現線性回歸

定義 線性回歸在假設特徵滿足線性關係,根據給定的訓練資料訓練乙個模型,並用此模型進行 文中只介紹了簡單的概念,不涉及公式的證明等。從最簡單的一元線性關係介紹,假設有一組資料型態為 y theta x,其中 x y 我們根據 x,y 模擬出近似的 theta 引數值,進而得到 y theta x 模型...

python實現線性回歸

線性回歸模型是最簡單的機器學習模型,基礎可以從線性回歸模型開始入手,慢慢地過渡到非線性回歸以及神經網路模型。1.概念 2.線性回歸 簡單回歸 乙個自變數輸入,y x是一對一的關係,對映到幾何上來說就是二維座標系的直線方程,可表示為y 多元回歸 多個自變數,改變維度的大小。即 3.最小二乘法 通過向量...

python實現線性回歸

線性回歸模型是機器學習中最基礎的演算法,同時也在工業上得到很大應用。編碼實現該方法,可以對其有個透徹理解。回歸模型 目標函式 對目標函式求偏導 更新引數 樣本矩陣表示 python 實現 import numpy as np class linear object def init self sel...