一、逻辑回归基本流程

1、逻辑回归

从一组样本的多个特征值中学习规律,建立模型(学习的模型抽象为一个公式f(x)),用这个模型来预测其他样本的结果。而逻辑回归是将预测结果分类。
逻辑回归步骤:
(1)将x的值归一化
(2)写权重函数z=w1x1+w2x2+…+wixi
(3)写激活函数a=σ(z)
(4)写损失函数L=-ylog(a)-(1-y)log(1-a)
(5)做梯度下降w=w-αdw
(6)用训练好的权重参数w做预测

2、激活函数

针对每个特征设权重wi,计算出的z=f(x)会有很多值,想把计算结果z归类到0和1之间,要用激活函数sigmoid:y=1/(1+e^(-z)),这时得到的就是预测值。
激活函数的特点:连续且可导、非线性变换。
激活函数有很多,如sigmoid(0,1),tanh(-1,1),Relu(z>0则=z;z<0则=0)

3、损失函数

损失函数的作用:
(1)建立真实值和预测值之间的一种联系,L=-ylog(a)-(1-y)log(1-a)
(2)能衡量真实值和预测值之间的差距,当y等于0时可以算出L的值,也就知道了差距
(3)通过a、y之间的差距能反推权重w和b

4、梯度下降与学习率

损失函数实质是L与W之间的函数,梯度下降能不断找到使损失函数取最小值的w。
学习率控制权重w每次迭代的步长。

5、归一化

(1)x’=(x-xmin)/(xmax-xmin)
(2)x’=(x-均值)/标准差
归一化的公式有很多,目的是加快模型收敛速度,防止模型训练走很多弯路。

二、鸢尾花实战

项目描述:根据鸢尾花花萼长度与宽度的特征数据统计,对其进行逻辑回归分类
数据特征:花萼长度、花萼宽度
类别标签:0-山鸢尾、1-杂色鸢尾、2-维吉尼亚鸢尾
第一步:导入numpy,matplotlib,数据集

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris

第二步:可视化数据,分析数据

iris = load_iris()
iris.feature_names,
iris.target_names
iris.data/#能看特征数据的具体信息
iris.target/#能看每行数据的标签的值
##取100个样本,取前两列特征,花萼长度和宽度
x=iris.data[0:100,0:2]
y=iris.target[0:100]
##分别取前两类样本,0和1
samples_0 = x[y==0, :]#把y=0的样本取出来
samples_1 = x[y==1, :]
#散点图可视化
plt.scatter(samples_0[:,0],samples_0[:,1],marker='o',color='r')
plt.scatter(samples_1[:,0],samples_1[:,1],marker='x',color='b')
plt.xlabel('X')
plt.ylabel('Y')


第三步:分拆数据,80个训练数据,20个测试数据

x_train=np.vstack([x[:40,:],x[60:100,:]])#取前40和后40的数据
y_train=np.concatenate([y[:40],y[60:100]])
x_test=x[40:60,:]
y_test=y[40:60]

第四步:逻辑回归算法的实现

class Logistic_Regression():def __init__(self):self.w=Nonedef sigmoid(self,z):a=1/(1+ np.exp(-z))return adef output(self,x):z=np.dot(self.w,x.T)a=self.sigmoid(z)return adef compute_loss(self,x,y):num_train=x.shape[0]a=self.output(x)loss=np.sum(-y*np.log(a)-(1-y)*np.log(1-a))/num_traindw=np.dot((a-y),x)/num_trainreturn loss,dwdef train(self,x,y,learning_rate=0.01,num_iterations=10000):num_train,num_features=x.shapeself.w=0.001*np.random.randn(1,num_features)loss=[]for i in range(num_iterations):error,dw=self.compute_loss(x,y)loss.append(error)self.w-=learning_rate*dwif i%200==0:print('steps:[%d/%d],loss:%f'%(i,num_iterations,error))return lossdef predict(self,x):a=self.output(x)y_pred=np.where(a>=0.5,1,0)return y_pred

第五步:创建lr实例,训练模型

lr=Logistic_Regression()
loss=lr.train(x_train,y_train)
plt.plot(loss)
##决策边界可视化
plt.scatter(samples_0[:,0],samples_0[:,1],marker='o',color='r')
plt.scatter(samples_1[:,0],samples_1[:,1],marker='x',color='b')
plt.xlabel('x')
plt.ylabel('y')
x1=np.arange(4,7.5,0.05)
x2=(-lr.w[0][0]*x1)/lr.w[0][1]
#sigmoid=1/(1+np.exp(-x))
#x1*w1+x2*w2=0
plt.plot(x1,x2,'-',color='black')

第六步:测试集上预测

num_test=x_test.shape[0]
prediction=lr.predict(x_test)
accuracy=np.sum(prediction==y_test)/num_test
print(r'the accuracy of prediction is :', accuracy)

逻辑回归基本流程及鸢尾花项目实战相关推荐

  1. 【机器学习】逻辑回归案例二:鸢尾花数据分类,决策边界绘制逐步代码讲解

    逻辑回归案例二:鸢尾花数据分类,决策边界绘制逐步代码讲解 1 数据加载 2 数据EDA 3 模型创建及应用 3.1 数据切分 3.2 创建模型与分类 3.3 决策边界绘制 3.3.1 二分类决策边界绘 ...

  2. 【机器学习】逻辑回归-基础认识与鸢尾花分类实操案例

    文章目录 前言 一.基本理解 二.数学原理 三.简单二元分类算法实现 四.实战案例 总结 前言 本文将会对逻辑回归的基础理解,数学原理,简单算法实现,鸢尾花分类问题实操案例去学习我们的逻辑回归. 一. ...

  3. orange实现逻辑回归_分别用逻辑回归和决策树实现鸢尾花数据集分类

    学习了决策树和逻辑回归的理论知识,决定亲自上手尝试一下.最终导出决策树的决策过程的图片和pdf.逻辑回归部分参考的是用逻辑回归实现鸢尾花数据集分类,感谢原作者xiaoyangerr 注意:要导出为pd ...

  4. 【机器学习算法笔记系列】逻辑回归(LR)算法详解和实战

    逻辑回归(LR)算法概述 逻辑回归(Logistic Regression)是用于处理因变量为分类变量的回归问题,常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法. 逻辑 ...

  5. python实现逻辑回归的流程_逻辑回归原理及其python实现

    September 28, 2018 7 min to read 逻辑回归原理及其python实现 原理 逻辑回归模型: $h_{\theta}(x)=\frac{1}{1+e^{-{\theta}^ ...

  6. 用逻辑回归对用户分类 (理论+实战)

    2019独角兽企业重金招聘Python工程师标准>>> 如果你在运营一个2C的平台,那么你肯定关心用户流失的问题.腾讯有个产品叫信鸽Pro,它能够通过对用户往期行为的挖掘,预测用户潜 ...

  7. mllib逻辑回归 spark_《Spark大数据分析实战》笔记

    写在前面:此书很棒,但需要一定的编程功底,此外强烈建议买书,因为很多架构图.算子列表,我也不会摘抄下来. 第一章 简介 1.Spark执行的特点 Hadoop中包含计算框架MapReduce和分布式文 ...

  8. 逻辑回归分类鸢尾花和红酒等级

    逻辑回归分类鸢尾花和红酒等级 源代码以及训练数据和测试数据已上传:https://download.csdn.net/download/j__max/10816259 一.实验准备 1.实验内容和目的 ...

  9. 数据量大了一定要分表,分库分表 Sharding-JDBC 入门与项目实战

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:juejin.im/post/684490418236581 ...

最新文章

  1. Centos 7 安装 rabbitmq 3.6.6
  2. 你的灯亮着吗 读后感2
  3. angr学习笔记(10)(hook)
  4. UNIX再学习 -- 网络与网络协议
  5. Ibatis学习总结1--ibatis简介和SQL Maps
  6. 什么是技术,技术是什么
  7. 【图片识别】java 图片文字识别 ocr (转)
  8. html页面和Chrome开发者工具elements界面不一致的一个可能原因:没有在Chrome开发者工具里打开对Shadow DOM显示的支持
  9. react(90)--时间戳比较
  10. 面试官:高并发下重启服务,接口调用老是超时,你有什么解决办法?
  11. mysql_install_db参数_MySQL初始化脚本mysql_install_db使用简介及选项参数
  12. activity销毁时执行执行方法是_[Android开发 VIII ]销毁一个activity
  13. 使用超时加锁:pthread_mutex_timedlock
  14. PGP加密软件介绍、下载地址(官方发行最新版)及安装教程
  15. win10或11非华为电脑安装最新的电脑管家(支持移动应用引擎)安装方法及问题解决
  16. 国美易卡存储引擎和事务的关系(国美易卡)
  17. 软件测试工程师简历项目经验怎么写?--1000个已成功入职的软件测试工程师简历范文模板(含真实简历)
  18. 基佬大乱斗自建服务器,玩家必看干货基佬大乱斗怎么联机实现双人作战
  19. 联通光纤服务器没有响应怎么办,联通网速不稳定(联通光纤不稳定解决方法)
  20. 常用测速网站及工具(IPv4/IPv6)

热门文章

  1. Unity高级知识点总结:性能优化与图形渲染进阶!
  2. 浪潮服务器光盘装系统教程图解,浪潮服务器安装操作系统简要步骤说明.doc
  3. 大数据学习之sqoop
  4. 如何在电脑上看微信阅读
  5. 《偏生要鲜花着景,应这急景流年》
  6. 简单笔记本无线热点开启
  7. AppleTV相关使用教程
  8. OCI动态链接ORACLE
  9. uboot drm框架
  10. 如何解决因网络问题导致的 github 下载出错