機器學習 線性回歸python簡單實現

2021-07-25 09:27:44 字數 2475 閱讀 8857

寫下這篇部落格只是為了當做乙個記錄記下來,以後可以回頭看看,不至於每遇到一次都要去實現一遍。

線性回歸的主要內容如下:

因為要最小化j,有兩種方法,一種是最小二乘法直接求解,另一種是梯度下降法。這裡記錄的是梯度下降法。

梯度下降法可以歸結為ng課程中以下的:

所以線性回歸梯度下降法的主要核心就在於對theta的更新,以下是本文**,**比較粗糙原生,容易理解。資料集用的其實是離散的分類資料集,不過是二維的,

畫出圖來比較容易看。

#-*-coding:utf-8-*-

import numpy as np

import matplotlib.pyplot as plt

data =

f = open("logistic_x.txt", "r")

for line in f:

field = line.split()

field = [float(x) for x in field]

f.close()

data = np.array(data)

data = np.concatenate((np.ones((data.shape[0], 1)), data), axis=1)

label =

f = open("logistic_y.txt", "r")

for line in f:

field = line.split()

field = [float(x) for x in field]

f.close()

"""# 這一段注釋用sklearn裡的波斯頓房價資料集,用了所有維度,也可以試試兩個維度的

from sklearn import datasets

boston = datasets.load_boston()

data = boston.data

data = np.concatenate((np.ones((data.shape[0], 1)), data), axis=1)

label = boston.target

def preprocess(data):

for ii in range(data.shape[1]):

divd = np.max(data[:, ii] - np.min(data[:, ii]))

if divd != 0:

data[:, ii] = data[:, ii] / divd

return data

data = preprocess(data)

label = preprocess(label.reshape(1, len(label))).transpose()

"""features_num = data.shape[1]

w = np.array([1.0 / (features_num)] * (features_num))

alpha = 0.05

j = 1

while j > 0.1:

w_old = w

j = 0

for w_num in range(len(w)):

loss = 0

for ii in range(data.shape[0]):

loss += (np.dot(data[ii], w_old) - label[ii]) * data[ii][w_num]

w[w_num] -= alpha * (loss / data.shape[0])

for ii in range(data.shape[0]):

j += (abs(np.dot(data[ii], w) - label[ii]) / (2.0 * data.shape[0]))

print j

# j /= (2.0 * data.shape[0])

x = np.arange(np.min(data[:, 1]), np.max(data[:, 1]), 0.01)

y = -(w[0]/w[2]) - (w[1]/w[2]) * x

plt.figure()

label_type = np.unique(label)

for ii in range(data.shape[0]):

if label[ii] == label_type[0]:

plt.scatter(data[ii, 1], data[ii, 2], c='g')

else:

plt.scatter(data[ii, 1], data[ii, 2], c='r')

plt.plot(x, y)

plt.show()

python機器學習 線性回歸

要理解線性回歸,首先得對線性和回歸的基本概念進行回顧。線性 兩個變數之間存在一次方函式關係即一階導數為常數的函式。回歸 確定兩種或兩種以上變數間相互依賴的定量關係的一種統計分析方法。回歸分析按照涉及的變數的多少,分為一元回歸和多元回歸分析。分類與回歸的區別 分類 輸出為離散資料 目的 尋找決策邊界 ...

回歸 好壞 機器學習 python機器學習線性回歸

線性回歸是最簡單的機器學習模型,其形式簡單,易於實現,同時也是很多機器學習模型的基礎。對於乙個給定的訓練集資料,線性回歸的目的就是找到乙個與這些資料最吻合的線性函式。一般情況下,線性回歸假設模型為下,其中w為模型引數 線性回歸模型通常使用mse 均方誤差 作為損失函式,假設有m個樣本,均方損失函式為...

機器學習 線性回歸

可以說基本上是機器學習中最簡單的模型了,但是實際上其地位很重要 計算簡單 效果不錯,在很多其他演算法中也可以看到用lr作為一部分 先來看乙個小例子,給乙個 線性回歸是什麼 的概念。圖來自 2 假設有乙個房屋銷售的資料如下 面積 m 2 銷售價錢 萬元 123 250 150 320 87 160 1...