z
=
W
T
X
=
w
0
+
w
1
x
1
+
w
2
x
2
+
.
.
.
.
.
.
+
w
n
x
n
z =W^{T}X=w^{0}+w^{1}x^{1}+w^{2}x^{2}+......+w^{n}x^{n}
z=WTX=w0+w1x1+w2x2+......+wnxn
逻辑回归通过sigmoid函数将输入值映射到 [0,1] 的区间范围。
y
=
p
=
s
i
g
m
o
i
d
(
z
)
=
1
1
+
e
−
z
y=p=sigmoid(z)=\frac{1}{1+e^{-z}}
y=p=sigmoid(z)=1+e−z1
逻辑回归的目标函数:
J
(
w
)
=
−
∑
1
n
y
(
i
)
l
o
g
(
s
(
z
(
i
)
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
s
(
z
(
i
)
)
)
J(w)=-\sum^{n}_{1}y^{(i)}log(s(z^{(i)}))+(1-y^{(i)})log(1-s(z^{(i)}))
J(w)=−1∑ny(i)log(s(z(i)))+(1−y(i))log(1−s(z(i))) 因此,当目标函数最小时,w的值,就是我们要求的最终权重值。
二、算法实现
1、鸢尾花的数据集
通过sklearn的包导入鸢尾花的数据集:
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
用pd.DataFrage函数对数据集的显示进行整理:
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)# 通过 pd.DataFrame 函数对数据集进行更清晰的展示
data['Kind']= iris['target']# 插入列表 (kind表示花的种类)
data = data[data["Kind"]!=2]# 该实验只用到前两类的鸢尾花,故删除第三类。