-
2022-04-20 14:44:07
三种交换方式如下:
- 电路交换
- 分组交换
- 报文交换
一、电话交换
1.1 概念引导
电话之间通过电线交换:
电话之间需要两两相连,如果数量太大,电话线就太多了…如果是n个电话,那么需要n*(n-1)/2对电线。由上面可知,这样是很麻烦的,所以我们需要一个中间设备把它们连接起来,它就叫做:电话交换机
由此能减少一定的电话线数量。1…2 电话交换步骤
从通信资源的分配角度来看,交换(Switching)就是按照某种方式动态地分配传输线路的资源。
- 建立连接(分配通信资源),就是拨号
- 通话(一直占用资源),就是一直通话中,占用专有物理通道
- 释放连接(归还资源)
如图所示:
当使用电路交换来传送计算机数据时,其线路的传输效率往往很低,所以我们需要分组交换。
二、分组交换
分组交换做重要的交换机就是用过通过路由器,将各种网络互连起来,并接收到的分组进行转发,也就是进行分组交换。
例如:H6用户需要发送消息给H2用户。这样的消息整块数据叫做电报。
发送报文之前,我们把一个它拆分成三个等长数据段,每一个数据段会加上控制信息,构成一个分组,也叫做“包”
添加首部的作用:包含分组的目的地址,路由器根据首部地址查找转发,最终到达目的
收到数据后,接收方会去掉首部,还原数据为原报文:
在分组交换中的角色和作用:
该交换方式用于比较早期的通信,所以也基本不怎么使用了。三、三种交换对比
3.1 电路交换优缺点
电路交换优点:
- 通信时延小
- 有序传输3)没有冲突
- 适用范围广
- 实时性强
- 控制简单
电路交换缺点:
- 建立连接时间长
- 线路独占,使用效率低
- 灵活性差。任何一方连接错误,就需要重新连接。
- 难以规格化
3.2 报文优缺点
优点:
- 无需建立连接
- 动态分配线路
- 提高线路可靠性
- 提高线路利用率
- 提供多目标服务
缺点:
- 无需建立连接
- 动态分配线路
- 提高线路可靠性
- 提高线路利用率
- 提供多目标服务
3.3 分组交换优缺点
优点:
- 无需建立连接
- 线路利用率高
- 简化了存储管理
- 加速传输
- 减少出错概率和重发数据量
缺点:
- 引起了转发时延
- 需要传输额外的信息量
- 对于数据报服务,存在失序、丢失或重复分组的问题;对于虚电路服务,存在呼叫建立、数据传输和虚电路释放三个过程
四、听课参考
听课于湖南科技大学计算机网络:
https://www.bilibili.com/video/BV1c4411d7jb?p=3
更多相关内容 -
行业分类-设备装置-一种紧凑型切换式三视场中波红外光学系统.zip
2021-09-04 05:26:05行业分类-设备装置-一种紧凑型切换式三视场中波红外光学系统.zip -
小程序分类页实现三级分类,顶部导航栏,左侧分类栏,右侧数据列表
2021-03-27 10:06:04但是又时候我们想实现三级分类,该怎么做呢,今天就来教大家如何实现三级分类。随便教下大家如何把excel数据批量的导入到云开发数据库 一,老规矩,先看效果图 先来给大家分析下原理 二,原理分析 首先来分析下有那...如果大家一直读石头哥的文章,或者看石头哥的视频,肯定知道,石头哥的点餐小程序有实现二级菜品或者商品分类。
如下图
但是有时候我们想实现三级分类,该怎么做呢,今天就来教大家如何实现三级分类。随便教下大家如何把excel数据批量的导入到云开发数据库一,老规矩,先看效果图
先来给大家分析下原理二,原理分析
首先来分析下有那三级
可以看出,我们最顶部是一级菜单,左侧是二级菜单,右侧是最终的三级列表。我们来理一理层级关系
- =宿舍楼号
- ====宿舍号
- ========学生
聪明的人肯定知道,我们是一个宿舍楼里包含很多宿舍,宿舍里有包含很多学生。这样我们的三级就是 楼号》宿舍》学生。
当我们切换楼号时,就会重新获取当前楼号包含的宿舍。
比如下图左为惠兰楼,右为学苑楼的数据,可以看出每个楼里的宿舍和学生信息。
分析完原理,我们就来看技术实现了。三,获取分类数据
这里先给大家说下,我这里是用一张表来存的所有信息
既然是一张表存所有数据,我们就要做下分组,看数据里都有哪些楼号。3-1,借助group实现楼号分组(一级数据)
具体代码如下
然后获取到的数据如下
可以看出我们一共有11个宿舍楼。就是我们顶部的这些区域
3-2,借助group和match实现宿舍分组(二级数据)
这个时候,我们就要根据用户选择的楼号,来对当前楼号下所有数据进行分组了
分组后的数据如下
可以看出,前进楼有两个宿舍3-3,借助where获取宿舍里的学生数据(三级)
获取的数据如下
到这里我们的三级分类就实现了四,完整项目代码
下面把完整项目代码,贴出来给大家
4-1,wxml
<!-- 导航栏 --> <scroll-view scroll-x class="navbar" scroll-with-animation scroll-left="{{scrollLeft}}rpx"> <view class="nav-item" wx:for="{{tabs}}" wx:key="id" bindtap="tabSelect" data-id="{{index}}"> <view class="nav-text {{index==tabCur?'tab-on':''}}">{{item._id}}</view> </view> </scroll-view> <view class="container"> <!-- 左边的 --> <scroll-view class='nav_left' scroll-y='true'> <block wx:for="{{lefts}}" wx:key="{{index}}"> <view class="nav_left_items {{leftCur==index?'active':''}}" bindtap="switchLeftTab" data-index='{{index}}'> {{item._id}}</view> </block> </scroll-view> <!-- 右边的 --> <scroll-view class="nav_right" scroll-y="true"> <view class="{{topx}}"> <block wx:for="{{rights}}" wx:key="index"> <view class="nav_right_items" data-id="{{item._id}}"> <image src="{{item.touxiang}}"></image> <text>{{item.mingzi}}</text> </view> </block> </view> </scroll-view> </view>
4-2,wxss样式
/* 导航栏布局相关 */ .navbar { width: 100%; height: 90rpx; /* 文本不换行 */ white-space: nowrap; display: flex; box-sizing: border-box; border-bottom: 1rpx solid #eee; background: #fff; align-items: center; /* 固定在顶部 */ position: fixed; left: 0rpx; top: 0rpx; } .nav-item { padding-left: 25rpx; padding-right: 25rpx; height: 100%; display: inline-block; /* 普通文字大小 */ font-size: 28rpx; } .nav-text { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; letter-spacing: 4rpx; box-sizing: border-box; } .tab-on { color: #000080; /* 选中放大 */ font-size: 38rpx !important; font-weight: 600; border-bottom: 4rpx solid #000080 !important; } /* 正文部分 */ .container { position: fixed; width: 100%; height: 90%; top: 100rpx; background-color: #FFF; } .nav_left { width: 25%; height: 100%; background: #F2F2F2; text-align: center; position: absolute; top: 0; left: 0; } .nav_left .nav_left_items { height: 100rpx; line-height: 100rpx; font-size: 28rpx; } .nav_left .nav_left_items.active { position: relative; background: #FFF; color: #000080; } .nav_left .nav_left_items.active::before { display: inline-block; width: 6rpx; height: 60rpx; background: #000080; content: ''; position: absolute; top: 20rpx; left: 0; } .nav_right { position: absolute; top: 0; right: 0; width: 75%; height: 100%; } .nav_right .nav_right_items { float: left; width: 33.33%; text-align: center; padding: 30rpx 0; } .nav_right .nav_right_items image { width: 120rpx; height: 160rpx; } .nav_right .nav_right_items text { display: block; margin-top: 20rpx; font-size: 28rpx; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .nocate { padding: 100rpx; text-align: center; } .nocate image { width: 70rpx; height: 70rpx; } .nocate text { font-size: 28rpx; display: block; color: #BBB; } /*隐藏滚动条*/ ::-webkit-scrollbar { width: 0; height: 0; color: transparent; } .topx { width: 90%; /* height: 700rpx; */ margin: 30rpx auto; z-index: 1; border-radius: 10rpx; background-size: cover; }
4-3,js实现分类逻辑
const db = wx.cloud.database() const $ = db.command.aggregate Page({ data: { tabs: [], tabCur: 0, //默认选中 lefts: [], leftCur: 0, rights: [], }, onLoad: function (options) { db.collection('demo').aggregate() .group({ _id: '$louhao' }) .end() .then(res => { console.log('楼号列表', res) this.setData({ tabs: res.list }) this.sushehao(res.list[0]._id) }) }, //加载当前楼号所有的宿舍号 sushehao() { let louhao = this.data.tabs[this.data.tabCur]._id db.collection('demo').aggregate() .match({ louhao }) .group({ _id: '$sushe' }) .sort({ sushe: -1 //宿舍号升序排列 }) .end() .then(res => { console.log(louhao + '宿舍号列表', res) this.setData({ lefts: res.list }) this.xuesheng() }) }, //加载当前宿舍号里所有的学生 xuesheng() { let louhao = this.data.tabs[this.data.tabCur]._id let sushe = this.data.lefts[this.data.leftCur]._id db.collection('demo') .where({ louhao, sushe }).get() .then(res => { console.log(louhao + sushe + '室学生列表', res) this.setData({ rights: res.data }) }) }, //顶部选择分类条目 tabSelect(e) { this.setData({ tabCur: e.currentTarget.dataset.id, scrollLeft: (e.currentTarget.dataset.id - 2) * 200 }, success => { this.sushehao() }) }, //左侧条目选择 switchLeftTab(e) { let index = e.target.dataset.index; this.setData({ leftCur: index, }, success => { this.xuesheng() }) }, })
4-4,记得修改数据表权限
修改权限为所有用户可读,仅创建者可读写
到这里我们的三级分类就完整的实现了。关于excel数据批量导入,我下节再做讲解的。欢迎关注,欢迎留言交流。 -
LTE系统内切换流程分析
2021-06-08 09:29:20分类专栏: 通信 文章标签: LTE切换信令 版权 UE在LTE系统内的移动性分为空闲态的移动性和激活态的移动性。空闲态UE已在网络上完成注册,一般执行两个流程:小区重选和寻呼消息监听流程。当UE处于激活态时,eNodeB...UE在LTE系统内的移动性分为空闲态的移动性和激活态的移动性。空闲态UE已在网络上完成注册,一般执行两个流程:小区重选和寻呼消息监听流程。当UE处于激活态时,eNodeB会在网络控制和UE辅助下对UE执行切换。
图1.移动性管理分类
花开两朵,各表一枝。我们先说切换流程。
当正在使用网络服务的UE从一个小区移动到另一个小区,或由于无线传输业务负荷量调整、激活操作维护、设备故障灯原因,为了保证通信的连续性和服务的质量,系统要将用户与原小区的通信链路转移到新的小区上,这个过程就是切换。
切换的四个不同阶段包括如图2所示:
图2. LTE系统内切换的四个阶段
1)测量和报告阶段:UE对邻区进行测量,并将结果报告给服务eNodeB,eNodeB判断是否满足切换条件;
2)准备切换阶段:当eNodeB判断目前所有的切换条件都满足时,就开始为UE选择目标eNodeB。选择目标eNodeB的过程可能触发eNodeB之间的信令交换;
3)切换执行阶段:目的eNodeB选定后,当前eNodeB就会告知UE何时执行切换,以及其他一些接入目的eNodeB时需要得到的消息。因为UE和目的eNodeB之间没有建立,所以UE会采用随机接入流程来接入目的eNodeB (参见《LTE随机接入过程》);
4)切换完成阶段:源基站释放资源、链路,删除用户信息。
当UE从原小区逐渐靠近目标小区时,原小区的RSRP逐渐降低,目标小区RSRP逐渐升高。LTE系统内切过程如图3.所示。
图3. LTE系统内切换示意图
根据切换的源小区和目标小区的不同,切换的信令流程也不一样,由此可以分为三种类型的切换:1)站内切换;2)X2的切换;3)S1的切换。一般来说X2切换的优先级高于S1切换。图4.展示了基站之间的S1接口
图4. LTE网络架构与接口
这三种切换分别表示:
站内切换:当UE所在的源小区和要切换的目标小区同属一个eNodeB时,发生eNodeB内切换。eNodeB内切换是各种情形中最为简单的一种,因为切换过程中不涉及eNodeB与eNodeB之间的信息交互,也就是X2、S1接口上没有信令操作,只是在一个eNodeB内的两个小区之间进行资源配置,所以基站在内部进行判决,并且不需要向核心网申请更换数据传输路径。
X2切换:当UE所在的源小区和要切换的目标小区不属于同一eNodeB时,发生eNodeB间切换,eNodeB间切换流程复杂,需要加入X2和S1接口的信令操作。X2切换的前提条件是目标基站和源基站配置了X2链路,且链路可用。
S1切换:S1切换流程与X2切换类似,只不过所有的站间交互信令及数据转发都需要通过S1口到核心网进行转发,时延比X2口略大。协议36.300中规定eNodeB间切换一般都要通过X2接口进行,但当源eNodeB和目标eNodeB之间不存在X2接口,或者源eNodeB尝试通过X2接口切换,但被目标eNodeB拒绝,则会触发S1接口的eNodeB间切换。
这三种类型的切换信令流程如下图5~7所示:
5.站内切换
6.X2切换
7. S1切换
由于接口的不同,上述的三个切换信令流程不同,但是他们都满足上文所说的切换的四个阶段。
图8.LTE系统内切换的不同阶段的异同
我们可以总结一些相同点和不同点,我们把相同的信令用蓝框圈起来,不同的信令用红框圈起来。
相同点:三类切换中测量和报告阶段和切换执行阶段是相同的,因为这两个阶段不涉及到源eNodeB和目标eNodeB之间的通信,所以虽然不同形式的切换的接口不同,但是这三个阶段的信令是一样的。
不同点:与之对应的是涉及到源eNodeB和目标eNodeB之间的通信准备切换阶段、切换完成阶段阶段,信令是不一样的。
下面我们对这四个阶段的具体内容详细的说明一下。
第一阶段:测量和报告
eNodeB向UE下发测量控制,通过RRC ConnectionReconfigration消息对UE的测量类型进行配置;
UE按照eNodeB下发的测量控制在UE的RRC协议端进行测量配置,并向eNodeB发送RRC Connection ReconfigrationComplete消息表示测量配置完成;
UE按照测量配置向eNodeB上报测量报告;
eNodeB根据测量报告进行判决,判决该UE将发生eNodeB内切换(或者eNodeB间切换),在新小区内进行资源准入,资源准入成功后为该UE申请新的空口资源;
在实际的应用中,UE按照测量配置向eNodeB上报测量报告,UE的测量上报机制分为周期性的测量上报和事件性的测量上报,如图9所示。图9.基于不同上报机制的测量上报
图9.可以看出,基于事件的测量上报可以减少UE的测量上报次数,同时又能够保证UE及时切换,这样可以延长电池的使用时间。基于事件的测量上报,系统内的事件包括A1~A5事件,他们分别是:
A1事件:服务小区质量高于一个绝对门限,用于关闭正在进行的频间测量;
A2事件:服务小区质量低于一个绝对门限,用于打开频间测量;
A3事件:同优先级邻区比服务小区质量高于一个绝对门限,用于频内/频间基于覆盖的切换;
A4事件:邻区质量高于一个绝对门限,主要用于基于负荷的切换;
A5事件:服务小区质量低于一个绝对门限1,且邻区质量高于一个绝对门限2,用于频内/频间基于覆盖的切换。
通过UE上报的事件内容,源eNodeB判断是否进行切换,至此切换的第一步已全部完成。第二阶段:准备切换阶段
这一阶段是源eNodeB和目标eNodeB之间的“对话沟通”阶段,因为他们之间连接方式不同,所以才会有站内切换、X2切换、S1切换。二者之间交换信令的目的都是在新小区内进行资源准入,资源准入成功后为UE的接入分配空口资源。可以用,幅漫画10来描述这个过程,目标eNodeB“资源准入成功”后,源eNodeB就可以顺利的把UE交给目标eNodeB了。
图10.准备切换阶段漫画
由于鉴于作者水平有限,同时这一阶段的信令在eNodeB之间传递,空口上无法接收到该阶段的信令,所以本文未添加这阶段的信令流程实例分析。
第三阶段:切换执行阶段
源eNodeB将分配的专用接入签名配置给UE,向UE发送RRCConnection Reconfigration消息命令指示UE切换指定的小区;
UE向目标eNodeB发送RRC Connection Reconfigration Complete消息指示UE已经接入新小区,表示UE已经切换成功。同时,切换期间的业务数据转发开始进行;
第四阶段:切换完成阶段
该阶段的主要认识是告知UE已经接入新的小区,并且在新的小区能够进行业务通信,需要释放在源小区所占用的资源,目标eNodeB向源eNodeB发送UECONTEXTRELEASE消息, 源eNodeB释放该UE的上下文,包括空口资源和SAE bearers资源。
下面,我们通过TEMS Discovery软件,以一段路测LOG来分析该阶段的相关信令。如图11.所示
图11.站内切换测试LOG
图12.站内切换测试LOG信令流程
终端UE从基站西二环北路绿色小区切换的蓝色小区,UE首先上报A3事件,经过eNodeB判断,下发RRCConnectionReconfiguration信令,指示UE切换到同频目标小区(PCI = 323, 频点 1650),切换成功后,UE上报RRCConnectonReconfigurationComplete 信令。由于空口无法获得切换过程中阶段二,四的信令,这两个阶段的信令不做详细分析。
-
机器学习中的七种分类算法
2021-10-03 20:35:276.6 K最近邻分类算法 6.6.1 优点 6.6.2 缺点 6.6.3 应用 6.7 K-Means聚类算法 6.7.1 优点 6.7.2 缺点 6.7.3 应用 7 如何决定选择哪种分类算法 1 分类任务的类型 1.1 二元分类 主要将数据集分类两类,也意味着输出...
目录
1 分类任务的类型
1.1 二元分类
主要将数据集分类两类,也意味着输出变量只有两个值。比如将邮件标记为“垃圾邮件”还是“非垃圾邮件”。
1.2 多元分类
数据集分为多个种类,输出变量也有多个值。比如经典的Iris数据集,根据花的花瓣长度、萼片长度、花瓣宽度和萼片宽度,分成三种花。
1.3 多标签分类
一种特殊类型的分类任务,对于数据集中的每个实例具有多个输出变量,也就是说,一个实例可以有多个标签。比如在图像分类中,单个的图像可能包含多个对象,这些对象可以通过算法进行标记,例如公共汽车、红绿灯、斑马线等。
1.4 不平衡分类
不平衡分类是指数据集的实例中具有偏向或者偏态分布的分类问题,也就是一类输入变量的频率高于其他输入变量。比如通过交易数据集中的信用卡检测欺诈交易。通常,此类交易的数量要少得多,因此这会使机器难以学习此类交易。
2 分类算法如何工作
为了解决分类问题,我们使用称为机器学习分类算法的数学模型。他们的任务是找出目标变量如何与输入特征 xi 和输出值 yi 相关联。在数学方面,估计函数 f(xi) 通过将相关特征作为输入来预测输出变量的值。我们可以这样写,
其中 y'i 表示输出变量的预测响应。
3 数据预处理
在将任何统计算法应用于数据集之前,我们必须彻底了解输入变量和输出变量。在分类问题中,目标总是定性的,但有时,甚至输入值也可以是分类的,例如著名的 Mall Customer Dataset 中客户的性别。由于分类算法是从数学上推导出来的,因此必须将所有变量转换为数值。分类算法工作的第一步是确保变量,无论是输入还是输出,都已正确编码。
4 创建测试集和训练集
处理完数据集后,下一步是将数据集分为两部分:测试数据集和训练数据集。这一步允许使用训练数据集让我们的机器学习输入和输出值之间的模式。另一方面,测试数据集测试模型的准确性,我们将尝试将其放入我们的数据集中。
5 选择模型
一旦我们将数据集拆分为训练和测试,下一个任务就是选择最适合我们问题的模型。为此,我们需要了解流行的分类算法。因此,让我们深入研究不同类型的分类算法池并探索我们的选择。
6 分类算法的类型
以下是您将了解的不同类型分类算法的列表:
- 朴素贝叶斯分类器
- 逻辑回归
- 决策树
- 随机森林
- 支持向量机
- K-最近邻
- K-均值聚类
6.1 朴素贝叶斯分类器
朴素贝叶斯分类器,最简单有效的分类算法之一。它的基础是贝叶斯定理,它描述了如何根据可能与事件相关的条件的先验知识来评估事件的概率。在数学上,这个定理指出——
其中 P(Y|X) 是事件 Y 的概率,假设 X 已经发生。
P(X) 是事件 X 的概率,
P(Y) 是事件 Y 的概率,
P(X|Y) 是给定 Y 的固定值时事件 X 的可能性。
如果 X 代表一个特征变量,Y 代表一个目标变量,那么贝叶斯分类器会将该标签分配给产生最高概率的特征。为简单起见,考虑一个二分类问题,其中特征变量只能有两个可能的值,Y=1 或 Y=0。然后,如果 Pr(Y=1|X=x0) > 0.5,贝叶斯分类器将预测类别 1,否则预测类别 2。
在不止一个特征的情况下,我们可以使用以下公式来评估概率,
我们假设两个特征 X1 和 X2 是相互独立的。事实上,由于这个假设,“朴素”这个词被附加到贝叶斯的分类器上。
6.1.1 优点
- 它很简单,实现也很简单。
- 机器使用这个分类器学习模式所需的时间更少。
- 它在输入变量具有分类值的情况下表现良好。
- 它为复杂的现实世界问题提供了良好的结果。
- 它在多类分类的情况下表现良好。
6.1.2 缺点
- 它假设特征变量之间的独立性,但情况并非总是如此。
- 我们经常将其称为坏估计,因此概率并不总是很重要。
- 如果在训练期间模型不知道任何分类变量并且该变量在测试期间通过,则模型分配 0(零)似然并因此替换称为“零频率”的零概率。可以通过使用平滑程序(例如拉普拉斯估计)来避免这种情况。
6.1.3 应用
- 垃圾邮件分类: 根据电子邮件的内容识别电子邮件是否为垃圾邮件
- 实时预测系统: 该模型相对较快,因此可以实时预测目标变量。
- 情绪分析: 识别产品的反馈并将其分类为“正面”或“负面”。
- 多类预测: 朴素贝叶斯适用于多类分类问题。
6.2 逻辑回归
该算法类似于贝叶斯分类器,因为它也预测 Y 与输入变量 X 相关联的概率。它使用逻辑函数,
并使用最大似然技术拟合参数 ð??›ƒ0 和 ð??›ƒ1。该技术涉及最大化由下式给出的似然函数
在评估这两个参数后,可以轻松地使用逻辑函数来预测给定输入 xi 的目标变量概率 p(xi)。
对于不止一个特征变量(X1, X2,..., XP),公式可以概括为
6.2.1 优点
- 这是一个简单的模型,因此训练所需的时间很少。
- 它可以处理大量的特征。
6.2.2 缺点
- 虽然它的名字中有回归这个词,但我们只能将它用于分类问题,因为它的范围总是在 0 和 1 之间。
- 只能用于二分类问题,对多分类问题响应较差
6.2.3 应用
- 信用评分: 根据年收入、账户余额等一些特征来预测个人的信用(偿还借入贷款的能力)。
- 预测用户行为: 许多网站使用逻辑回归来预测用户行为并引导他们点击可能感兴趣的链接。
- 离散选择分析: 逻辑回归是预测人们分类偏好的绝佳选择。这方面的例子可能是买哪辆车、上哪所学校或大学等,这取决于人们的属性和他们可用的各种选择。
6.3 决策树分类算法
该算法涉及根据数据集中的某些特征变量将数据集划分为多个段。这些划分的阈值通常是各自特征变量的平均值或众数(如果它们是数字)。由于树可以表示用于分割数据集的一组分割规则,因此该算法称为决策树。
查看下面的示例以更好地理解它。
红色文本表示如何根据输出变量将数据集拆分为多个段。结果是具有最高比例的班级。
现在,很自然要问的问题是该算法使用什么标准来分割数据。有两种广泛使用的度量来测试分割的纯度(如果数据集的片段只有一个类的数据点,则它是纯的)。
第一个是定义的基尼指数
测量 N 个类别的总方差。另一种度量是交叉熵,定义为
在两个等式中,pmk 表示第 m 个片段中属于第 k 个类别的训练变量的比例。
我们根据该特征将数据集拆分为多个段,从而产生熵或基尼指数的最小值。
6.3.1 优点
- 该算法允许数据的简单表示。因此,更容易向高管解释和解释它。
- 决策树模仿人类在日常生活中做出决策的方式。
- 他们顺利处理定性目标变量。
- 它们有效地处理非线性数据。
6.3.2 缺点
- 它们可能会创建有时变得无关紧要的复杂树。
- 与其他算法相比,它们的预测精度水平不同。
6.3.3 应用
- 情感分析:它用作文本挖掘中的分类算法,以确定客户对产品的情感。
- 产品选择:公司可以使用决策树来了解哪种产品在推出时会给他们带来更高的利润。
6.4 随机森林分类算法
森林由大量的树木组成。同样,随机森林涉及处理许多决策树。每棵树预测目标变量的概率值。然后我们对产生最终输出的概率进行平均。
我们评估每棵树如下:
- 通过选择有替换的数据点来创建数据集的第一个样本。
- 接下来,我们不使用所有输入变量来创建决策树。我们只使用可用的一个子集。
- 每棵树都被允许长到尽可能大的长度,并且不涉及修剪。
6.4.1 优点
- 对于大型数据集,它是有效的。
- 它允许估计输入变量在分类中的重要性。
- 它比决策树更准确。
6.4.2 缺点
- 在实施方面更为复杂,因此需要更多时间进行评估。
6.4.3 应用
- 信用卡违约: 信用卡公司使用随机森林来预测持卡人是否会违约。
- 股票市场预测: 股票投资者使用它来指示特定股票的趋势并分析其损失和利润。
- 产品推荐: 可以根据用户的喜好使用它向用户推荐产品。
6.5 支持向量机
该算法利用具有令人兴奋的变化的支持向量分类器,使其适用于评估非线性决策边界。通过使用称为kernels 的特殊函数扩大特征变量空间,这成为可能 。该算法考虑的决策边界允许将特征变量标记为目标变量。它用于评估边界的数学函数由下式给出
其中 K 代表核函数。
6.5.1 优点
- 它使训练数据集变得容易。
- 当数据是高维时,它表现良好。
6.5.2 缺点
- 当数据包含噪声元素时,它表现不佳。
- 它对核函数很敏感,因此必须明智地选择它们。
6.5.3 应用
- 人脸检测: 用于读取图像(像素数数组)并根据通常的人类特征识别是否包含人脸。
- 图像分类: SVM 是用于根据图像特征对图像进行分类的图像分类算法之一。
- 手写字符识别: 我们可以用它来识别手写字符。
6.6 K最近邻分类算法
KNN 算法通过识别给定观察点的 K 个最近邻居来工作。然后它使用 K 个点评估每种类型的目标变量的比例,然后预测具有最高比例的目标变量。例如,考虑以下情况,我们必须将目标值标记为点 X。然后,如果我们在它周围取四个邻居,该模型将预测该点属于粉红色的类。
6.6.1 优点
- 可以将其应用于任何分布的数据集。
- 它很容易理解并且非常直观。
6.6.2 缺点
- 它很容易受到异常值的影响。
- 它偏向于在数据集中具有更多实例的类。
- 有时很难找到 K 的最佳数字。
6.6.3 应用
- 检测异常值: 由于该算法对异常值很敏感,因此可以检测异常值。
- 识别相似文档: 识别语义相似的文档。
6.7 K-Means聚类算法
K-Means Clustering 是一种将数据集划分为 K 个不重叠的组的聚类算法。该算法的第一步是指定预期的簇数 K。然后,任务是将数据集划分为 K 个簇,以使簇内变化尽可能小。算法过程如下:
- 为每个输入变量随机分配一个从 1 到 K 的数字。这些是变量的初始聚类标签。
- 重复该步骤,直到集群分配保持不变:
- 为 K 个集群中的每一个评估集群质心。
- 将每个输入变量集分配给质心最近的簇(这里最接近可以用欧氏距离来定义)
总之,该算法最小化输入点与相应聚类质心之间的偏差平方和。将其命名为 K 均值聚类的原因是步骤 2a) 将属于特定聚类的观测值的均值评估为聚类质心。
6.7.1 优点
- 我们可以将其应用于大型数据集。
- 实施起来毫不费力。
- 它保证了定位集群的收敛性。
6.7.2 缺点
- 它有一个限制,因为必须首先提供 K 的值。
- 它对异常值很敏感。
6.7.3 应用
- 添加推荐: 公司可以识别共享金钱消费习惯的客户群,并展示他们更有可能购买的广告。
- 识别城市中的犯罪区域: 使用 K 均值聚类,我们可以识别更容易发生犯罪案件的区域。
- 文档分类: 识别写在类似主题上的文档
7 如何决定选择哪种分类算法
下面我们有一个列表,可以帮助您了解应该使用哪些分类算法来解决业务问题。
- 问题识别: 首先要做的是彻底了解手头的任务。如果是有监督的分类案例,可以使用逻辑回归、随机森林、决策树等算法。另一方面,如果是无监督的分类案例,则应该使用聚类算法。
- 数据集 的大小:数据集的大小也是您在选择算法时应该考虑的一个参数。由于很少有算法相对较快,因此最好切换到那些算法。如果数据集的大小很小,您可以坚持使用像朴素贝叶斯这样的低偏差/高方差算法。相反,如果数据集很大,特征数量很多,那么你应该使用高偏差/低方差算法,如 KNN、决策树和 SVM。
- 预测准确度: 模型的准确度是测试分类器好坏的参数。它反映了预测输出值与正确输出值的匹配程度。当然,更高的精度是可取的,但还应检查模型是否过拟合。
- 训练时间: 有时,像 SVM 和随机森林这样的复杂算法可能会占用大量计算时间。此外,更高的准确性和大数据集无论如何需要更多时间来学习模式。像逻辑回归这样的简单算法更容易实现并节省时间。
- 数据集的线性: 输入变量和目标变量之间并不总是存在线性关系。因此,必须分析这种关系并仔细选择算法,因为其中一些仅限于线性数据集。检查线性的最佳方法是拟合线性线或运行逻辑回归或 SVM 并查找残差。较高的误差表明数据是非线性的,需要实施复杂的算法。
- 特征数量: 有时,数据集可能包含不必要的许多特征,并且并非所有特征都相关。然后可以使用最适合这种情况的 SVM 等算法,或者使用主成分分析来确定哪些特征是重要的。
-
Android仿美团菜单(点击可连续切换)
2016-04-21 22:21:47Android仿美团菜单(点击可连续切换) -
移动端几种tab切换及实现方式
2019-05-23 17:00:19选项三 *{ margin: 0; padding: 0; } ul, li{ list-style: none; } .navbar{ width: 100%; position: absolute; top: 0; left: 0; background: #fafafa; display: flex; } .navbar .... -
三种经典的图像分类的模型
2019-04-24 11:16:26在VGG网络中从头到尾使用的是3x3的卷积核,使用这种小卷积核会带来两个主要的好处,在论文中一一提到了:一是两个3x3卷积具有和5x5卷积相同的感受野,三个3x3卷积具有和7x7相同的感受野,但是与它们后者相比却增加了... -
小程序上拉加载更多数据,分类切换状态等实例
2017-04-25 10:59:12上拉加载更多其实很简单,关键点只是知道上拉加载是变相的分页加载,然后通过初始化记录值和通过数组来保存加载过的数据(用户看回加载过的数据),同样的每行解析,分类切换的状态显示的想法是慕课网的七月讲师在... -
Vue的三种路由模式
2021-03-03 19:31:20而实际使用vue和vue-router开发就会明白,在切换页面时是没有重新进行请求也没有重新刷新页面,使用起来就好像页面是有状态的,这是什么原因呢。这其实是借助了浏览器的History API来实现的,这样可以使得页面跳转而... -
JavaScript实现分类列表显示与隐藏的切换
2015-09-05 19:06:27因为我懒得重新写页面,也就是不从数据库中取值,而是单纯的实现显示与隐藏小分类的切换,这样效果也是一样的。但是实际中,往往都是要从数据库中取值的,例如添加或删除了分类什么的,所以直接用商城项目里的代码了... -
人工智能实验三:分类算法实验
2019-04-14 17:19:141、巩固4种基本的分类算法的算法思想:朴素贝叶斯算法,决策树算法,人工神经网络,支持向量机算法; 2、能够使用现有的分类器算法代码进行分类操作; 3、学习如何调节算法的参数以提高分类性能; 二、实验硬件... -
多电脑切换器(KVM切换器)工作原理
2016-11-30 16:55:00多电脑切换器(KVM切换器)工作原理 电子元器件知识,1月6日讯,电脑切换器又名KVM切换器,或者叫多电脑切换器,一般简称KVM,KVM为英语中键盘(Keyboard),显示器(Video)与鼠标(Mouse)等三个单字字首的缩写。... -
【小程序项目开发-- 京东商城】uni-app之分类导航区域
2022-06-17 11:20:32二、获取分类导航数据 在data节点定义 数据在method 定义调取数据函数在生命周期函数onload调用函数 调取成功 在需要循环标签的属性节点需要在前面加上 提示后面的是变量或变量表达式 开发中可将页面复制到分栏,... -
使用git命令——分支切换
2020-12-21 13:30:09使用git命令——分支切换全智甜 2018-10-27 17:20:49 13445 收藏 12分类专栏: git命令版权git一般有很多分支,我们clone到本地的时候一般都是master分支,那么如何切换到其他分支呢?有些IDE可以使用git插件轻松... -
vue手写三级分类折叠展开
2018-09-10 17:42:10-- 遍历第三层 --> {{child1.catename}} 启用'?'bgYes':'bgNo'">{{child1.enabled_text}} 这是逻辑层: 模拟数据(data里的数据): menulist:[{ catename:'水果', expanded:... -
23 种设计模式详解(全23种)
2019-06-09 00:21:59设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式... -
Vim操作的四种模式与切换
2017-05-18 17:08:36Vim操作的四种模式 Vim的四种模式 一.启动Vim 1.双击桌面的图标,就可以启动Vim(是图形界面的) 2.在开始菜单---点--运行 接着输入 vim 或者gvim,就可以启动Vim或Gvim了. 二.Vim的模式 1.Vim... -
[4G&5G专题-94]:流程 - 4G LTE 同频切换与异频切换的案例分析
2021-05-06 23:15:35第1章 同频切换 1.1 同频切换的三大步骤 同频测量的配置是在RRC连接建立的时候就配置好了。 1.2 信令跟踪 1.3 A3事件上报的原理 第2章 同频切换 -
LTE切换
2018-07-30 19:37:55测量过程主要包括以下三个步骤:测量配置:由eNB通过RRCConnectionReconfigurtion消息携带的measConfig信元将测量配置消息通知给UE,即下发测量控制。测量执行:UE会对当前服务小区进行测量,并根据... -
uniapp 选项卡 切换组件内容
2020-07-05 11:45:27第一种 <view class="end-title"> <view @tap="change(0)" :class="{btna:btnnum == 0}">基本信息</view> <view @tap="change(1)" :class="{btna:btnnum == 1}">公告信息</view> ... -
一文读懂机器学习分类全流程
2022-05-30 15:21:32在本文中,作者将带你了解机器学习分类的全流程,从问题分析>数据预处理>分类器选择>模型构建>精度评价>模型发布为Web应用。从0带读者入门机器学习分类。 -
【操作系统】第五话·进程的切换与进程控制
2022-04-02 10:01:30想要搞定,搞透计算机操作系统的同学,本专栏将会通过模块化的分类,刷够1000道题,为大家提供点对点的考点相关知识轰炸!值得注意的是,本专栏将会通过教程+课后习题的方式来进行巩固教学,课后习题的题量也是算入... -
mymps蚂蚁分类信息系统单城市5.8E 非多城市版仿58 百姓 赶集网
2017-03-26 22:29:27非常不错的蚂蚁分类信息系统5.8E单城市版本,门户。三种风格,好几种颜色,后台任意切换! -
运维的工作内容是什么?有哪几种分类?
2020-06-12 16:54:56有哪几种分类?下面和千锋广州小编一起来看看吧! 互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。 运维人员对公司互联网业务所依赖... -
点击菜单栏实现内容切换
2016-07-27 14:28:45主要通过js以及css样式的设置来实现tab切换显示的效果 -
一篇文章带你「重新认识」线程上下文切换怎么玩儿
2020-02-21 10:28:20第三种情况是,当进程阻塞在 I/O 、信号量或其他原因时,必须选择另外一个进程来运行。有时,阻塞的原因会成为选择进程运行的关键因素。例如,如果 A 是一个重要进程,并且它正在等待 B 退出关键区域,让 B 退出关键... -
7-24 整数的分类处理 (20 分)
2019-03-24 15:34:29给定 N 个正整数,要求你从中得到下列三种计算结果: A1 = 能被 3 整除的最大整数 A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数 A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 ... -
Vue+element tabs标签页切换提醒/切换渲染页面
2020-07-02 21:51:45基本tab html ,主要看第三行,第四行 <el-tabs v-model="activeIndex" tab-position="left" :before-leave="beforeTagsLeave" @tab-click="tabsClicked"> <el-tab-pane label="基本信息" name="0">...