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