哥很生气 3星
共回答了354个问题采纳率:93.6% 评论
这个简单,尽管Python的scikit-learn库提供了易于使用和高效的LogisticRegression类,但我们自己使用NumPy创建自己的实现,可以更好地理解逻辑回归算法。
资料集
我们将使用Iris数据集,它包含3个类别,每个类别有50个实例,其中每个类别都表示一种鸢尾花植物。为简化目标,我们仅介绍前两个特征,而且我们简单使用其中两个分类,所以这是个二分类模型。
算法
给定一组输入X,我们希望将它们分配给两个可能的类别(0或1)之一。Logistic回归模型对每个输入属于特定类别的概率进行建模。
假设
一个函数接受输入并返回输出。为了生成概率,逻辑回归使用的函数为X的所有值提供0到1之间的输出。有许多满足此描述的函数,但是在这种情况下使用的是逻辑函数。在这里,我们将其称为sigmoid函数。
梯度下降
我们的目标是最小化损失函数,而我们必须达到的方法是通过增加/减少权重,即拟合权重。问题是,我们如何知道哪些参数应该更大,哪些参数应该更小?答案是相对于每个权重的损失函数的导数。它告诉我们如果修改参数,loss将如何变化。
然后,我们通过将它们减去导数乘以学习率来更新权重。
我们应该重复几次此步骤,直到获得最佳解决方案。
预测
通过调用sigmoid函数,我们可以得出某些输入x属于类别1的概率。让我们假设所有概率≥0.5 =类别1,所有概率<0 =类别0,应根据我们正在处理的业务问题来定义此阈值。
那现在我们把代码全部放在一起。
评估
以上代码如果我们以较小的学习率和更多的迭代来训练实现,我们将发现跟sklearn其中逻辑回归的权重大致相等。所以我们把上面的代码整合一下,就可以得到我们想要的逻辑回归算法,包括梯度下降法。
4小时前
猜你喜欢的问题
5个月前1个回答
5个月前1个回答
5个月前1个回答
5个月前2个回答
5个月前1个回答
5个月前2个回答
热门问题推荐
2个月前2个回答
2个月前1个回答
1个月前1个回答
3个月前2个回答
1个月前5个回答
3年前4个回答
1个月前1个回答
4个月前1个回答
3个月前2个回答