邏輯回歸之線性可分

2021-10-10 08:11:30 字數 4172 閱讀 6745

**實現

邏輯回歸-線性不可分案例

案例:設想你是工廠的生產主管,你要決定是否晶元要被接受或拋棄

資料集:ex2data2.txt,晶元在兩次測試中的測試結果

公式推導
站在巨人的肩膀上

1.sigmoid函式

2.損失函式

3. 梯度下降函式

**實現

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

path =

'ex2data1.txt'

data = pd.read_csv(path, names=

['exam1'

,'exam2'

,'accepted'])

fig, ax = plt.subplots(

)ax.scatter(data[data[

'accepted']==

0]['exam1'

], data[data[

'accepted']==

0]['exam2'

], c=

'r',

marker=

'x', label=

'y = 0'

)ax.scatter(data[data[

'accepted']==

1]['exam1'

], data[data[

'accepted']==

1]['exam2'

], c=

'b',

marker=

'o', label=

'y = 0'

)ax.legend(

)ax.

set(xlabel=

'exam1'

, ylabel=

'exam2'

)plt.show(

)def

get_xy

(data)

:'''

處理原始資料,變成我們想要的

:param data:前期從檔案中讀取的data資料

:return: 返回特徵矩陣和標籤矩陣

'''data.insert(0,

'ones',1

) x_ = data.iloc[:,

0:-1

] x = x_.values

y_ = data.iloc[:,

-1] y = y_.values.reshape(

len(y_),1

)return x, y

x, y = get_xy(data)

defsigmoid

(z):

""" 實現sigmoid函式

:param z:

:return:

"""return1/

(1+ np.exp(

-z))

defcostfunction

(x, y, theta)

:"""

損失函式

:param x:特徵值

:param y: 標籤值

:param theta: 引數

:return:

"""a = sigmoid(x.dot(theta)

) first = y * np.log(a)

second =(1

- y)

* np.log(

1- a)

return

-np.

sum(first + second)

/len

(x)# 生產原始引數

theta = np.zeros((3

,1))

defgradientdescent

(x, y, theta, iters, alpha)

: m =

len(x)

costs =

for i in

range

(iters)

: a = sigmoid(x.dot(theta)

) theta = theta - alpha / m * x.t.dot(a - y)

cost = costfunction(x, y, theta)

if i %

1000==0

:print

(cost)

return costs, theta

# 步長

alpha =

0.004

# 迭代次數

iters =

200000

# 梯度下降法擬合引數theta,並求出損失函式的值

costs, theta_final = gradientdescent(x, y, theta, iters, alpha)

print

(theta_final)

'''output值

[[-23.77361748]

[ 0.18688137]

[ 0.18042754]]

'''def

predict

(x, theta)

:"""

根據我們擬合出的theta值去預判y的值,並返回

:param x: 特徵矩陣

:param theta: 擬合引數theta

:return: 返回根據擬合引數進行預判的y值

"""prob = sigmoid(x.dot(theta)

)return[1

if x >=

0.5else

0for x in prob]

y_ = np.array(predict(x, theta_final)

)y_pre = y_.reshape(

len(y_),1

)acc = np.mean(y == y_pre)

print

(acc)

# 0.86

# 畫出擬合直線

線性回歸與邏輯回歸

cost functionj 12m i 1m h x i y i hypothesish x tx 梯度下降求解 為了最小化j j j 1m i 1m h x i y i x i j 每一次迭代更新 j j 1m i 1m h x i y i x i j 正規方程求解 最小二乘法 xtx 1x t...

線性回歸和邏輯回歸

最近開始學習機器學習,有點心得體會,記錄一下,希望大家批評指正 監督學習 supervised learning 根據已有的資料集,知道輸入和輸出結果之間的關係。根據這種已知的關係,訓練得到乙個最優的模型。也就是說,在監督學習中訓練資料既有特徵 feature 又有標籤 label 通過訓練,讓機器...

線性回歸 和 邏輯回歸

跟著b站乙個小姐姐學的 很不錯 1 什麼是回歸 什麼是分類?簡單來說一般回歸問題在數值上是乙個連續的 而分類問題在數值上一般是離散型的 回歸 回歸模型的更傾向於很小的區域 或者是乙個x對應乙個y 線性回歸就不在討論了 這裡學習一下 邏輯回歸 邏輯回歸 聽起來是回歸 但實際上他是解決分類問題的 是乙個...