多變數線性回歸

2021-10-06 04:31:04 字數 2648 閱讀 7686

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import cost_function

import gd_function

path =

"ex1data2.txt"

data2 = pd.read_csv(path, names=

["size"

,"bedrooms"

,"price"])

data2 =

(data2 - data2.mean())

/ data2.std(

)# data2.head()

data2.insert(0,

"ones",1

)# 在訓練集中插入一列1,方便計算

# set x(training set), y(target variable)

# 設定訓練集x,和目標變數y的值

cols = data2.shape[1]

# 獲取列數

x = data2.iloc[:,

0:cols -1]

# 輸入向量x為前cols-1列

y = data2.iloc[

:, cols -

1:cols]

# 目標變數y為最後一列

x = np.array(x.values)

y = np.array(y.values)

theta = np.array([[

0,0,

0]])

gd_function.gra_des(x, y, theta,

0.01

,1000

)final_theta, cost = gd_function.gra_des(x, y, theta,

0.01

,1000

)final_cost = cost_function.compute_cost(x, y, final_theta)

print

(final_theta)

print

(final_cost)

# 由於梯度下降過程中每一次迭代都會得到乙個cost值,下面我們根據cost的值來繪製影象。

# 我們通常使用繪製cost影象的方式來觀測梯度下降演算法是否正常的執行,

# 若是演算法執行正常,該影象會一直下降

fig, ax = plt.subplots(figsize=(8

,6))

ax.plot(np.arange(0,

1000,)

, cost,

"r")

ax.set_xlabel(

"iterations"

)ax.set_ylabel(

"cost"

)ax.set_title(

"error vs traning iterations"

)plt.show(

)

由於代價函式和梯度下降函式不在主程式中,下面是兩個單獨函式的**:

import numpy as np

defcompute_cost

(x, y, theta)

: inner = np.power(x.dot(theta.t)

- y,2)

# 後面的2表示2次冪

return

sum(inner)/(

2*len(x)

)

import numpy as np

import cost_function

defgra_des

(x, y, theta, alpha, epoch)

: temp1 = np.zeros(theta.shape)

# 初始化乙個theta臨時矩陣

cost = np.zeros(epoch)

# 初始化乙個array,包含每次迭代後的cost

m = x.shape[0]

# 樣本數量m

for i in

range

(epoch)

:# 利用向量化同步計算theta值

# 注意theta是乙個行向量

temp1 = theta -

(alpha / m)

*(x.dot(theta.t)

- y)

.t.dot(x)

# 得出乙個theta行向量

theta = temp1

cost[i]

= cost_function.compute_cost(x, y, theta)

# 這個函式中,theta是變數,x,y是已知量

return theta, cost # 迭代結束之後返回theta和cost值

多變數線性回歸

固定隨機數 x1 numpy.random.random 50 x2 numpy.random.random 50 y 3 0.7 x1 2.3 x2 x numpy.c x1,x2 x numpy.c numpy.ones len x x y numpy.c y m,n x.shape alpha...

多變數線性回歸

python 推理部分 1 損失函式 注意,那個第一列為1的值是插入的,不是原始資料,為了彌補theta 0 這個引數。2 特徵歸一化 3 損失函式 特徵歸一化處理 param data 特徵值 return 特徵歸一化處理後的特徵值 return data data.mean data.std d...

C 實現線性回歸(多變數)

本文主要介紹c 實現線性回歸問題,實現房價的 可以有多個變數 1 單變數 2 多變數 1 測試資料 房價的估計 2 開發工具 vim gnu linux make gdb 3 執行環境 linux,g 4.9.2 4 動態庫 libmatrix.so 自己寫的矩陣包 libmyaxis.so 自己用...