看了这篇文章你能学到什么:
了解逻辑回归,神经网络学习的基础
神经网络节点权重的计算方法
BP反向传播如何计算损失函数和代价函数
写这篇文章的目的:
当然,最初写这一篇文章的初心当然不是写一些密密麻麻的公式,并解释其中的原理,在网上看了很多的博客,基本上都是一直在解释算法是怎么实现啊,巴拉巴拉一大堆。对于我这种初学者来说那个公式看到头疼。后面我想了一下,算法的本身难道最后不就是编程来实现的吗,那如果我们用代码来反推公式,是不是会更加容易去理解公式呢?
浅谈逻辑回归
我们学习这个东西就从三个方面入手,是什么,能做什么,怎么做
机器学习-逻辑回归能解决的问题?
答:逻辑回归模型一般用来解决二分类问题。非黑即白,但也是可以解决多分类问题,
那么就引出了另外一个问题,逻辑回归是如何实现二分类的问题?
答:逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。
那行,那么你要是有另外一个问题,什么叫做服从伯努利分布?什么叫做极大化似然函数
答:伯努利分布是我们对逻辑回归模型的假设,简单的例子是抛硬币,抛中为正面的概率是,抛中为负面的概率是.在逻辑回归这个模型里面是假设 为样本为正的概率,为样本为负的概率。那么极大似然函数就是损失函数loss
机器学习-逻辑回归模型是什么?
答:广义的线性分析模型
机器学习-逻辑回归怎么实现?
答:你问到的是数学公式的本身了,既然是浅谈,就不可能无限的给你追问下去
。。。。。。
emmm接下来是进入正题的时候了
编程代码
这是那个预测心脏病的数据是一个11列303行的数据,
age - age in years
sex - (1 = male; 0 = female)
cp - chest pain type
trestbps - resting blood pressure (in mm Hg on admission to the hospital)
chol - serum cholestoral in mg/dl
fbs - (fasting blood sugar > 120 mg/dl) (1 = true; 0 = false)
restecg - resting electrocardiographic results
thalach - maximum heart rate achieved
exang - exercise induced angina (1 = yes; 0 = no)
oldpeak - ST depression induced by exercise relative to rest
slope - the slope of the peak exercise ST segment
ca - number of major vessels (0-3) colored by flourosopy
thal - 3 = normal; 6 = fixed defect; 7 = reversable defect
target - have disease or not (1=yes, 0=no)
对数据进行离散处理后
我们不难看出红色框的数据是在一百多的范围内,而蓝色框的数据是在0和1之间徘徊,使用逻辑回归的话w1x1+w2x2,因为x1的取值太大了,所以x2基本起不了作用,这样子会让特征值失去了作用,所以我们要做的事就是把数据进行标准化–这里不得不提的一个知识点就是数据归一化的两种归一化方法,
y = df.target.values
x_data = df.drop(['target'], axis = 1)
# Normalize
x = (x_data - np.min(x_data)) / (np.max(x_data) - np.min(x_data)).values
x
标准化后得到的数据是这样的
#设置初始值,21个特征值我们设置初始化每个特征的权重为0.01,偏移项为0
def initialize(dimension):
weight = np.full((dimension,1