**實現
邏輯回歸-線性不可分案例公式推導案例:設想你是工廠的生產主管,你要決定是否晶元要被接受或拋棄
資料集: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 線性回歸就不在討論了 這裡學習一下 邏輯回歸 邏輯回歸 聽起來是回歸 但實際上他是解決分類問題的 是乙個...