# 固定隨機數
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, iter0 =
0.01
,20000
theta, j = numpy.zeros(
(n,1))
, numpy.zeros(iter0)
# 梯度下降法
for i in
range
(iter0)
: h = numpy.dot(x, theta)
# 公式一
j[i]=(
0.5/ m)
* numpy.
sum(numpy.square(h - y)
)# 公式二
grad =(1
/ m)
* numpy.dot(x.t, h - y)
# 公式三
theta -= alpha * grad
(theta)
(j)# 資料視覺化:繪製三維圖形
plt.figure(
) ax1 = plt.axes(projection=
'3d'
) xx1 = numpy.sort(x[:,
1]) xx2 = numpy.sort(x[:,
2]) x, y = numpy.meshgrid(xx1, xx2)
(x)print
(y) h = theta[0]
+ theta[1]
* x + theta[2]
* y ax1.plot_su***ce(x, y, h, cmap=
'rainbow'
) plt.show(
)
import numpy
import matplotlib.pyplot as plt
if __name__ ==
'__main__'
: numpy.random.seed(12)
x0 = numpy.random.random(50)
y0 =2+
0.5* x0 -
1.5* x0 **
2+ x0 **
3 d =
3 x = numpy.c_[numpy.ones(
len(x0))]
y = numpy.c_[y0]
for i in
range(1
, d +1)
: x = numpy.c_[x, x0 ** i]
m, n = x.shape
alpha, iter0 =1,
20000
theta, j = numpy.zeros(
(n,1))
, numpy.zeros(iter0)
# 梯度下降法
for i in
range
(iter0)
: h = numpy.dot(x, theta)
# 公式一
j[i]=(
0.5/ m)
* numpy.
sum(numpy.square(h - y)
)# 公式二
grad =(1
/ m)
* numpy.dot(x.t, h - y)
# 公式三
theta -= alpha * grad
print
(theta)
print
(j) plt.subplot(
121)
plt.plot(j)
plt.subplot(
122)
plt.scatter(x[:,
1], y, c=
'g', marker=
'.')
x1 = numpy.sort(x0)
y1 = numpy.zeros(
len(y0)
)for i in
range
(d +1)
: y1 += theta[i]
*(x1 ** i)
plt.plot(x1, y1, c=
'r')
plt.grid(
true
) plt.show(
)
多變數線性回歸
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 pat...
多變數線性回歸
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 自己用...