首页 文章 精选 留言 我的

精选列表

搜索[fota升级],共10000篇文章
优秀的个人博客,低调大师

物联网助力制造业加速升级

数字技术包括移动通信技术、机器人技术、3D打印、云计算、大数据等多种形式,其中最适宜用于改善经营的当属物联网,Orange Business Service委托普华永道对物联网提高制造企业在高质量和高复杂度产品方面的竞争力进行了调查。调查显示,物联网对制造企业在提高生产力、提升质量控制能力和降低经营风险等方面都有突出表现。 以日本为例。日本制造企业一直提倡使用物联网来提高产能。位于日本名古屋的三菱电机厂制定和部署了自动化解决方案e-F@ctory和eco-F@ctory,用以优化增强制造及生产流程。E-F@ctory是一套控制和网络技术,可用于生产信息可视化,将这些信息融入生产计划,从而确保质量可追溯性。Eco-F@ctory则引进了支持节能工作的测量设备和技术,从而实现用电“可视化”管理。 总体来看,人机协作能够实现以下几点:生产周期缩短50%;生产力提高180%;设备运行率提高190%;制造时间缩短60%;能源成本降低10%;质量损耗降低50%。 提高生产力 通过智能技术,企业可从机械设备和传感器中收集生产周期或材料消耗等过程数据,对这些数据进行筛选后将其发送到云端进行存储以及进一步分析。通过这种方式,可将这些数据转换成实时仪表板,以便及时监测和控制工厂流程与设备,并就如何优化装置得出深远见解。 例如,在数据的支撑下,设施经理可实时洞悉所有运营事项,包括材料、设备和操作人员使用模式。如此一来,设施经理就能够更轻松地分析流程,简化工作流程,以此减少无效时间与流程,降低在制品库存,并建立有效的性能管理体系。通过这些信息,生产人员还可以更深入地了解温度、压力和湿度对性能的影响方式,并尽量减少产量损失。 据估计,使用以数据为中心的方法,可将产能提高65%。 利用物联网技术追踪实时能耗,可在能源成本最高的高峰期以外的时间段运行高能耗资产。 同时,制造企业也可以适当收集公共设施使用信息,以确定生产某种产品的精确能耗,并将结果用于分析盈利能力。 利用物联网,可将多个工厂的数据收集整合到云端。通过整合的数据可实现跨工厂监测和标杆管理,最终识别高性能和低性能设施。企业可挑选出这些设施特有的数据模式,便于识别适用于整个网络的最佳规范,也便于更正缺陷。 采用具备自校功能的机器,减少故障与浪费。 提高质量控制 质量和自动化对于高端产品尤为重要。在设备内嵌入智能功能,实现自动实时质量检验,从而加快对产品和材料缺陷的反应速度。例如,一旦在生产线检测出重大质量控制问题,通过智能技术即可立刻停止该生产线运行,以防止产出最终只有被废弃的低劣产品。这种自动化质量检验能起到防错作用,还能实现外部供应商质量管理。 研究表明,实施有针对性的控制,废品率可降低75%,验证时间由两个星期降至两个小时,大幅降低了成本。 出现设备故障时,智能设备可实时收集并分析相关数据,并根据分析结果自动推荐故障修理方案。有了这些备选方案,决策将变得更容易更快捷,从而大幅降低平均停机时间以及维修费用。 传感器还可在设备使用年限内对其进行连续监测,从而评估其运行状况。一旦识别到异常或恶意行为,传感器即可自动分析数据,准确识别潜在障碍、缺陷或故障。 随后,系统将提示适当的预防性维护措施,降低故障风险,从而尽量减少计划外停机时间,提高生产量。 基于物联网的预测性维护能够让停机时间减少50%,产能增加65%,这一点已经得到证实,而其主要得益于计划维护时间缩短,而生产线运行周期更长。 进一步来讲,网络化设备可直接处理其收集的数据,且能自主采取措施,无需手动操作。在许多维护状态下,机器系统可以自行诊断、自行调整。例如,智能设备可以识别其电池过热情况,然后自动改为低强度运行,以便在等待更换部件的同时控制温升。 除了节约时间和费用外,该技术还能预防紧急情况,如此一来,员工就可将主要精力放在意外事件监督和处理等增值活动上。 降低经营风险 在以嵌入式智能技术为依托的生产环境下,企业可将健康与安全合规性控制在零容忍水平。这种环境下,不管是事故预防及实时检测,还是险兆事件调查与解决,都会更为准确高效。 传感器数据可以结合全球定位系统(GPS)和无线电频率识别(RFID)技术,实现供应链相关事件的实时可见性和可追溯性。追踪技术在企业供应链中的应用已经屡见不鲜,而物联网则能为供应网络与工厂所有相关方提供更丰富的数据与更高级的智能服务。 制造企业利用收集的数据,能够准确预测货物从供应商处发出并到达工厂和仓库的时间,实现自动运输和交货,并据此对生产流程进行相应调整,优化资产和劳动力使用率。制造企业还可以利用数据来追踪原材料,提高交货速度,缩短生产周期。使用实例表明,在物联网的协助下,生产周期可缩短28%。 智能技术在制造企业供应链中的应用可以延伸至货物位置信息以外。 智能技术还可以协助企业监测各设备运输至智能工厂过程中的情况。 例如,传感器可以协助检测货物运输环境是否温度过高和湿度过大,运输环境是否会影响货物质量。智能工厂可在投产前查明潜在问题,并采用备选供货来取代受损材料。 制造企业还可通过智能技术为其他下游利益相关方创造更多的价值。例如,货物流转于供应链各环节时,制造企业、分销商和零售商可以利用共享标签系统实现存货的实时追踪。 这一层面的协作对于零售业等具有季节性需求的行业尤为有效。这些行业的产品可供出售的机会有限,零售商的实时补货请求能够让制造企业在控制存货成本的同时,更机动灵活地满足相关需求。 本文转自d1net(转载)

优秀的个人博客,低调大师

大数据助力农牧业转型升级

为加速大数据建设在传统农牧业的应用落地,打通整个农牧产业链的上下游数据,11月14日,全市农牧系统组织全体干部职工来到陇南市大数据政务中心培训学习。 市农牧局党组书记、局长赵亚军在参加了培训后感慨道:“近年来,我市深化实施‘433’发展战略,紧抓国家‘智慧城市’试点市创建契机,整合了全市各类信息资源,建成陇南大数据政务中心,创造了贫困地区在信息技术领域率先突破的经验,为加强社会治理、服务经济社会发展奠定了坚实基础。” 在我市大数据建设的探索征程上,市农牧局早已迈出了坚实一步。今年7月,我市举办农产品质量安全追溯平台操作技能培训班,这一举措促进了市、县级农产品质量安全追溯信息平台监管、检测等基础数据信息的录入,为全市农产品质量安全追溯体系工作全面开展起到了推动作用。 “在互联网时代,掌握了大数据就拥有了发展的基础。”赵亚军说,在今后,全市农牧系统要完善农村产权确权抵押交易平台建设,强化相关数据的采集、存储和关联分析,并与不动产登记信息管理基础平台衔接,推进数据互联互通和共建共享。要加快建设农产品质量安全追溯管理信息平台,实现生产、收购、贮藏、运输等环节的追溯管理,建立质量追溯、执法监管、检验检测等数据共享机制。要扩大数据信息覆盖范围,建立现代信息体系平台,推进物联网技术在种植、畜牧和渔业生产中的应用,形成农业物联网大数据。要推进农业数据资源共享,提高农业宏观调控的科学性、预见性和有效性;运用大数据推动行政审批流程优化,提高行政审批效率;加强和改进市场监管,构建大数据监管模型,推动政府治理精准化。 本文转自d1net(转载)

优秀的个人博客,低调大师

进阶的决策树,从ID3升级到C4.5,模型大升级

今天是机器学习专题的第22篇文章,我们继续决策树的话题。 上一篇文章当中介绍了一种最简单构造决策树的方法——ID3算法,也就是每次选择一个特征进行拆分数据。这个特征有多少个取值那么就划分出多少个分叉,整个建树的过程非常简单。如果错过了上篇文章的同学可以从下方传送门去回顾一下: 如果你还不会决策树,那你一定要进来看看 既然我们已经有了ID3算法可以实现决策树,那么为什么还需要新的算法?显然一定是做出了一些优化或者是进行了一些改进,不然新算法显然是没有意义的。所以在我们学习新的算法之前,需要先搞明白,究竟做出了什么改进,为什么要做出这些改进。 一般来说,改进都是基于缺点和不足的,所以我们先来看看ID3算法的一些问题。 其中最大的问题很明显,就是它无法处理连续性的特征。不能处理的原因也很简单,因为ID3在每次在切分数据的时候,选择的不是一个特征的取值,而是一个具体的特征。这个特征下有多少种取值就会产生多少个分叉,如果使用连续性特征的话,比如说我们把西瓜的直径作为特征的话。那么理论上来说每个西瓜的直径都是不同的,这样的数据丢进ID3算法当中就会产生和样本数量相同的分叉,这显然是没有意义的。 其实还有一个问题,藏得会比较深一点,是关于信息增益的。我们用划分前后的信息熵的差作为信息增益,然后我们选择带来最大信息增益的划分。这里就有一个问题了,这会导致模型在选择的时候,倾向于选择分叉比较多的特征。极端情况下,就比如说是连续性特征好了,每个特征下都只有一个样本,那么这样算出来得到的信息熵就是0,这样得到的信息增益也就非常大。这是不合理的,因为分叉多的特征并不一定划分效果就好,整体来看并不一定是有利的。 针对这两个问题,提出了改进方案,也就是说C4.5算法。严格说起来它并不是独立的算法,只是ID3算法的改进版本。 下面我们依次来看看C4.5算法究竟怎么解决这两个问题。 信息增益比 首先,我们来看信息增益的问题。前面说了,如果我们单纯地用信息增益去筛选划分的特征,那么很容易陷入陷阱当中,选择了取值更多的特征。 针对这个问题,我们可以做一点调整,我们把信息增益改成信息增益比。所谓的信息增益比就是用信息增益除以我们这个划分本身的信息熵,从而得到一个比值。对于分叉很多的特征,它的自身的信息熵也会很大。因为分叉多,必然导致纯度很低。所以我们这样可以均衡一下特征分叉带来的偏差,从而让模型做出比较正确的选择。 我们来看下公式,真的非常简单: 这里的D就是我们的训练样本集,a是我们选择的特征,IV(a)就是这个特征分布的信息熵。我们再来看下IV的公式: 解释一下这里的值,这里的V是特征a所有取值的集合。自然就是每一个v对应的占比,所以这就是一个特征a的信息熵公式。 处理连续值 C4.5算法对于连续值同样进行了优化,支持了连续值,支持的方式也非常简单,对于特征a的取值集合V来说,我们选择一个阈值t进行划分,将它划分成小于t的和大于t的两个部分。也就是说C4.5算法对于连续值的切分和离散值是不同的,对于离散值变量,我们是对每一种取值进行切分,而对于连续值我们只切成两份。其实这个设计非常合理,因为对于大多数情况而言,每一条数据的连续值特征往往都是不同的。而且我们也没有办法很好地确定对于连续值特征究竟分成几个部分比较合理,所以比较直观的就是固定切分成两份,总比无法用上好。在极端情况下,连续值特征的取值数量等于样本条数,那么我们怎么选择这个阈值呢?即使我们遍历所有的切分情况,也有n-1种,这显然是非常庞大的,尤其在样本数量很大的情况下。针对这个问题,也有解决的方法,就是按照特征值排序,选择真正意义上的切分点。什么意思呢,我们来看一份数据: 这份数据是我们队西瓜直径这个特征排序之后的结果,我们可以看出来,训练目标改变的值其实只有3个,分别是直径5,7还有8的时候,我们只需要考虑这三种情况就好了,其他的情况可以不用考虑。我们综合考虑这两点,然后把它们加在之前ID3模型的实现上就好了。 代码实现 光说不练假把式,我们既然搞明白了它的原理,就得自己亲自动手实现一下才算是真的理解,很多地方的坑也才算是真的懂。我们基本上可以沿用之前的代码,不过需要在之前的基础上做一些修改。首先我们先来改造构造数据的部分,我们依然沿用上次的数据,学生的三门考试等级以及它是否通过达标的数据。我们认为三门成绩在150分以上算是达标,大于70分的课程是2等级,40-70分之间是1等级,40分以下是0等级。在此基础上我们增加了分数作为特征,我们在分数上增加了一个误差,避免模型直接得到结果。 import numpy as np import math def create_data(): X1 = np.random.rand(50, 1)*100 X2 = np.random.rand(50, 1)*100 X3 = np.random.rand(50, 1)*100 def f(x): return 2 if x > 70 else 1 if x > 40 else 0 # 学生的分数作为特征,为了公平,加上了一定噪音 X4 = X1 + X2 + X3 + np.random.rand(50, 1) * 20 y = X1 + X2 + X3 Y = y > 150 Y = Y + 0 r = map(f, X1) X1 = list(r) r = map(f, X2) X2 = list(r) r = map(f, X3) X3 = list(r) x = np.c_[X1, X2, X3, X4, Y] return x, ['courseA', 'courseB', 'courseC', 'score'] 由于我们需要计算信息增益比,所以需要开发一个专门的函数用来计算信息增益比。由于这一次的数据涉及到了连续型特征,所以我们需要多传递一个阈值,来判断是否是连续性特征。如果是离散型特征,那么阈值为None,否则为具体的值。 def info_gain(dataset, idx): # 计算基本的信息熵 entropy = calculate_info_entropy(dataset) m = len(dataset) # 根据特征拆分数据 split_data, _ = split_dataset(dataset, idx) new_entropy = 0.0 # 计算拆分之后的信息熵 for data in split_data: prob = len(data) / m # p * log(p) new_entropy += prob * calculate_info_entropy(data) return entropy - new_entropy def info_gain_ratio(dataset, idx, thred=None): # 拆分数据,需要将阈值传入,如果阈值不为None直接根据阈值划分 # 否则根据特征值划分 split_data, _ = split_dataset(dataset, idx, thred) base_entropy = 1e-5 m = len(dataset) # 计算特征本身的信息熵 for data in split_data: prob = len(data) / m base_entropy -= prob * math.log(prob, 2) return info_gain(dataset, idx) / base_entropy, thred split_dataset函数也需要修改,因为我们拆分的情况多了一种根据阈值拆分,通过判断阈值是否为None来判断进行阈值划分还是特征划分。 def split_dataset(dataset, idx, thread=None): splitData = defaultdict(list) # 如果阈值为None那么直接根据特征划分 if thread is None: for data in dataset: splitData[data[idx]].append(np.delete(data, idx)) return list(splitData.values()), list(splitData.keys()) else: # 否则根据阈值划分,分成两类大于和小于 for data in dataset: splitData[data[idx] < thread].append(np.delete(data, idx)) return list(splitData.values()), list(splitData.keys()) 前面说了我们在选择阈值的时候其实并不一定要遍历所有的取值,因为有些取值并不会引起label分布的变化,对于这种取值我们就可以忽略。所以我们需要一个函数来获取阈值所有的可能性,这个也很简单,我们直接根据阈值排序,然后遍历观察label是否会变化,记录下所有label变化位置的值即可: def get_thresholds(X, idx): # numpy多维索引用法 new_data = X[:, [idx, -1]].tolist() # 根据特征值排序 new_data = sorted(new_data, key=lambda x: x[0], reverse=True) base = new_data[0][1] threads = [] for i in range(1, len(new_data)): f, l = new_data[i] # 如果label变化则记录 if l != base: base = l threads.append(f) return threads 有了这些方法之后,我们需要开发选择拆分值的函数,也就是计算所有特征的信息增益比,找到信息增益比最大的特征进行拆分。其实我们将前面拆分和获取所有阈值的函数都开发完了之后,要寻找最佳的拆分点就很容易了,基本上就是利用一下之前开发好的代码,然后搜索一下所有的可能性: def choose_feature_to_split(dataset): n = len(dataset[0])-1 m = len(dataset) # 记录最佳增益比、特征和阈值 bestGain = 0.0 feature = -1 thred = None for i in range(n): # 判断是否是连续性特征,默认整数型特征不是连续性特征 # 这里只是我个人的判断逻辑,可以自行diy if not dataset[0][i].is_integer(): threds = get_thresholds(dataset, i) for t in threds: # 遍历所有的阈值,计算每个阈值的信息增益比 ratio, th = info_gain_ratio(dataset, i, t) if ratio > bestGain: bestGain, feature, thred = ratio, i, t else: # 否则就走正常特征拆分的逻辑,计算增益比 ratio, _ = info_gain_ratio(dataset, i) if ratio > bestGain: bestGain = ratio feature, thred = i, None return feature, thred 到这里,基本方法就开发完了,只剩下建树和预测两个方法了。这两个方法和之前的代码改动都不大,基本上就是细微的变化。我们先来看建树,建树唯一的不同点就是在dict当中需要额外存储一份阈值的信息。如果是None表示离散特征,不为None为连续性特征,其他的逻辑基本不变。 def create_decision_tree(dataset, feature_names): dataset = np.array(dataset) # 如果都是一类,那么直接返回类别 counter = Counter(dataset[:, -1]) if len(counter) == 1: return dataset[0, -1] # 如果只有一个特征了,直接返回占比最多的类别 if len(dataset[0]) == 1: return counter.most_common(1)[0][0] # 记录最佳拆分的特征和阈值 fidx, th = choose_feature_to_split(dataset) fname = feature_names[fidx] node = {fname: {'threshold': th}} feature_names.remove(fname) split_data, vals = split_dataset(dataset, fidx, th) for data, val in zip(split_data, vals): node[fname][val] = create_decision_tree(data, feature_names[:]) return node 最后是预测的函数,逻辑和之前一样,只不过加上了阈值是否为None的判断而已,应该非常简单: def classify(node, feature_names, data): key = list(node.keys())[0] node = node[key] idx = feature_names.index(key) pred = None thred = node['threshold'] # 如果阈值为None,那么直接遍历dict if thred is None: for key in node: if key != 'threshold' and data[idx] == key: if isinstance(node[key], dict): pred = classify(node[key], feature_names, data) else: pred = node[key] else: # 否则直接访问 if isinstance(node[data[idx] < thred], dict): pred = classify(node[data[idx] < thred], feature_names, data) else: pred = node[data[idx] < thred] # 放置pred为空,挑选一个叶子节点作为替补 if pred is None: for key in node: if not isinstance(node[key], dict): pred = node[key] break return pred 总结 到这里整个决策树的C4.5算法就开发完了,整体来说由于加上了信息增益比以及连续性特征的逻辑,所以整体的代码比之前要复杂一些,但是基本上的逻辑和套路都是一脉相承的,基本上没什么太大的变化。决策树说起原理来非常简单,但是很多细节如果没有亲自做过是意识不到的。比如说连续性特征的阈值集合应该怎么找,比如说连续性特征和离散型的特征混合的情况,怎么在代码当中区分,等等。只有实际动手做过,才能意识到这些问题。虽然平时也用不到决策树这个模型,但是它是很多高级模型的基础,吃透它对后面的学习和进阶非常有帮助,如果有空,推荐大家都亲自试一试。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册