诺基亚贝尔智慧城市

时间:2024-12-26 05:46 人气:0 编辑:招聘街

一、诺基亚贝尔智慧城市

诺基亚贝尔智慧城市:打造智慧出行新生活

随着城市化的不断发展,智慧城市已经成为当今社会发展的热点话题。作为全球领先的通信技术提供商,诺基亚贝尔一直在致力于推动智慧城市建设,为人们创造更加便捷、高效、智能的生活环境。

在诺基亚贝尔智慧城市的构想中,交通是其中一个重要的方面。通过先进的通信技术和物联网技术,诺基亚贝尔能够实现对城市交通系统的智能化管理,提高交通运行效率,减少拥堵问题,为市民提供更加便捷的出行体验。

智能交通管理

诺基亚贝尔智慧城市的交通管理系统基于先进的大数据分析和人工智能技术,能够实时监测城市交通情况,预测路况变化,为交通管理部门提供决策支持。通过智能交通信号灯、智能停车系统等设备的应用,诺基亚贝尔能够优化城市交通流动,减少交通事故发生率,提高道路利用率。

智慧出行体验

在诺基亚贝尔智慧城市,市民可以通过智能手机App获取实时交通信息,包括公交车实时位置、交通拥堵情况、最佳出行路线等。这些信息能够帮助市民预测出行时间,选择最佳交通方式,避开拥堵路段,从而节省时间,减少出行成本。

此外,诺基亚贝尔还推出了智能公交系统,通过互联网连接公交车辆、车站和乘客,实现公交车辆的实时监控和调度,提高公交运营效率,减少乘客等待时间。

智慧停车系统

停车问题一直是城市居民头疼的难题。诺基亚贝尔智慧城市通过智能停车系统,可以实现停车位的实时监测和管理,为市民提供智能导航,帮助他们快速找到空闲车位。这不仅减少了市民的寻车时间,也减少了城市交通拥堵问题。

数据安全与隐私保护

在推动智慧城市建设的过程中,数据安全与隐私保护是至关重要的。诺基亚贝尔使用最先进的加密技术和隐私保护机制,确保市民的个人信息不被泄露,数据传输过程安全可靠。同时,诺基亚贝尔也遵循严格的数据管理规定,保护市民的隐私权益。

结语

诺基亚贝尔智慧城市的建设,不仅提升了城市的智能化水平,也为市民的生活带来了便利和舒适。通过智能交通管理、智慧出行体验和智慧停车系统的应用,诺基亚贝尔为城市交通问题提供了全新的解决方案,为城市发展注入了新的动力。

在未来,诺基亚贝尔将继续深化智慧城市建设,不断创新技术应用,为城市居民打造更加智能、宜居的生活环境。

二、诺基亚贝尔 工业物联网

探索工业物联网的发展趋势

工业物联网是当今数字化转型的关键领域之一,越来越多的公司正在意识到其在提高生产效率、降低成本、优化供应链和创新业务模式方面的潜力。而在这一领域,诺基亚贝尔作为一家全球知名的通讯科技公司,正积极参与并推动着工业物联网技术的发展与应用。

诺基亚贝尔在工业物联网领域的优势

作为一家具有丰富通讯科技经验的企业,诺基亚贝尔在工业物联网领域拥有诸多优势。其先进的通讯技术和全球化的资源网络使其能够为客户提供高效可靠的物联网解决方案。无论是在工业自动化、智能制造还是智慧城市等领域,诺基亚贝尔都能够为客户提供定制化的解决方案,帮助他们实现数字化转型的目标。

此外,诺基亚贝尔在物联网安全领域也有着深厚的积累,其安全技术和解决方案能够帮助客户建立安全稳健的物联网环境,保护数据和隐私不受威胁。

工业物联网的应用场景

工业物联网技术的应用场景非常广泛,涵盖了工业制造、能源、农业、交通等各个领域。在工业制造领域,物联网技术可以帮助企业实现设备远程监控、预测性维护、智能制造等目标,提升生产效率和降低成本。

在能源领域,物联网技术可以帮助能源公司实现对能源生产和分配过程的智能化管理,提高能源利用效率,降低能源浪费。

在农业领域,物联网技术可以为农民提供精准的农业信息和农业生产指导,帮助他们实现精准农业,提高农业生产效率。

在交通领域,物联网技术可以实现交通流量监控、智能交通信号灯控制、智能停车管理等功能,提高交通运输系统的效率和安全性。

工业物联网的未来发展

随着工业物联网技术的不断成熟和普及,其未来发展前景广阔。未来,工业物联网将更加智能化、自动化,能够实现更高级别的数据分析和决策支持,为企业带来更多商业价值。

在未来,随着5G技术的普及和应用,工业物联网的速度和带宽将得到极大提升,为工业物联网的应用场景开拓出更多可能性。人工智能、大数据分析等技术也将与工业物联网技术相结合,为企业带来更加智能化的解决方案。

总的来说,工业物联网作为数字化转型的关键驱动力量,将在未来发挥越来越重要的作用,为企业带来更多增长机会和竞争优势。而在这个领域,诺基亚贝尔作为一家具有雄厚技术积累和全球资源网络的企业,将继续在工业物联网技术的发展与应用中发挥着重要作用。

三、上海诺基亚贝尔物联网

上海诺基亚贝尔物联网技术发展趋势分析

近年来,上海诺基亚贝尔物联网技术在全球范围内蓬勃发展,为各行各业带来了革命性的变化和创新。作为物联网领域的领军企业之一,上海诺基亚贝尔一直致力于推动物联网技术的发展,不断推出具有创新意义的产品和解决方案,引领着行业的发展方向。

物联网技术应用领域扩展

随着物联网技术的不断进步与普及,其应用领域也在不断扩大。上海诺基亚贝尔物联网技术在智慧城市、工业自动化、农业、医疗健康等领域均有着广泛的应用。智慧城市建设中,物联网技术可以实现城市基础设施的智能化管理,提升城市运行效率和居民生活质量;在工业自动化领域,物联网技术可以实现设备之间的互联互通,实现生产流程的智能化和自动化;农业领域的应用则可以帮助农民实现精准种植和养殖,提高农业生产效率;而在医疗健康领域,物联网技术可以实现远程监测和诊断,提升医疗服务的质量。

技术创新驱动发展

上海诺基亚贝尔物联网在技术创新方面一直走在行业的前沿。公司不断加大对研发的投入,与各界合作共建开放创新生态系统,推动物联网技术的创新应用和商业模式的变革。

  • 5G技术的应用:作为全球领先的通信技术企业,上海诺基亚贝尔积极探索5G技术在物联网领域的应用,为各行业提供更快速、更可靠的连接服务。
  • 边缘计算技术:边缘计算技术的发展可以使物联网设备更加智能化和高效化,上海诺基亚贝尔在该领域的研究和应用方面具有独特优势。
  • 人工智能技术的融合:人工智能技术与物联网的深度融合将进一步推动物联网技术的发展,上海诺基亚贝尔在AI技术研究和应用方面也在不断取得突破。

可持续发展与未来展望

作为一家具有社会责任感的企业,上海诺基亚贝尔物联网始终将可持续发展作为企业发展的重要战略。公司致力于打造绿色、智能的物联网生态系统,通过推动行业发展,为社会创造更大的价值。

展望未来,随着物联网技术的不断创新和应用,上海诺基亚贝尔物联网将继续引领行业发展,推动物联网技术在全球范围内的普及和深入应用,为构建智能化、数字化社会作出更大贡献。

四、诺基亚瑞典

诺基亚瑞典:过去、现在和未来

诺基亚瑞典是一家领先的科技公司,专注于无线通信和数字化解决方案。自其成立以来,诺基亚瑞典就一直在塑造着通信领域的未来,并在全球范围内积极推动着技术的进步。本文将为您介绍诺基亚瑞典的过去、现在和未来。

过去

诺基亚瑞典的历史可以追溯到19世纪。1865年,诺基亚公司在芬兰创立,最初是一家造纸厂,后来转型成为电信设备制造商。20世纪初期,诺基亚开始研发和生产无线通信设备,并成为了无线通信行业的领导者之一。

在20世纪末,诺基亚成为全球最大的移动电话制造商之一。其经典款手机在全球范围内受到了广泛的欢迎,如诺基亚3210和诺基亚3310等。诺基亚的手机设计简洁、易于操作,质量可靠,因此备受消费者喜爱。

然而,随着智能手机的兴起,诺基亚在市场上的份额逐渐下降。其早期未能及时抓住智能手机的机遇,错失了成为行业领导者的机会。然而,诺基亚瑞典并没有轻易放弃,而是选择了转型和创新。

现在

诺基亚瑞典目前致力于推动5G技术的发展,并为全球范围内的运营商提供先进的无线通信解决方案。其5G技术在高速、低延迟和大容量等方面具有明显优势,被广泛认可和应用。

此外,诺基亚瑞典还专注于数字化解决方案,为各行各业的客户提供创新的技术和服务。其数字化解决方案涵盖了物联网、云计算、人工智能等领域,旨在帮助客户实现数字化转型,并提供更好的用户体验。

诺基亚瑞典在研发方面投入了大量资源,不断推动着技术的进步。其团队由一批拥有丰富经验和专业知识的工程师组成,他们致力于开发出更先进、更可靠的通信技术。诺基亚瑞典的研发实力赢得了行业的认可,并帮助公司保持了竞争优势。

未来

在未来,诺基亚瑞典将继续致力于推动科技的进步,并持续为客户提供创新的解决方案。5G技术将在全球范围内得到更为广泛的应用,而诺基亚瑞典将继续在该领域发挥重要作用。

此外,随着物联网和人工智能等技术的不断发展,诺基亚瑞典也将加大在这些领域的研发投入。公司将不断创新,提供更先进、更智能的解决方案,帮助客户在数字化时代取得成功。

总结起来,诺基亚瑞典作为一家领先的科技公司,一直在推动着无线通信和数字化解决方案的发展。其过去的成功经验、现在的技术实力以及未来的发展规划使其成为行业内的重要参与者。相信在诺基亚瑞典的努力下,科技将继续改变我们的生活,并带来更多的便利和机遇。

该博文是关于诺基亚瑞典公司的历史、现状和未来发展的。它介绍了诺基亚从最初的造纸厂到逐渐崭露无线通信设备制造商的过程。虽然在智能手机市场上错过了机遇,但诺基亚瑞典目前致力于推动5G技术的发展,并为全球的运营商提供数字化解决方案。它的研发实力和先进的通信技术使其在行业中保持竞争优势,并将继续在未来推动科技的进步,为客户提供更智能、更先进的解决方案。

五、诺基亚现状

诺基亚现状:从辉煌走向衰落的命运

诺基亚,这个曾经的手机巨头,如今已经成为了历史的一部分。回顾诺基亚的历程,我们不禁感慨万分。它以其独特的设计、卓越的品质和强大的市场份额,曾经统治了整个手机界。然而,随着科技的迅速发展和竞争对手的崛起,诺基亚不得不面临困境,最终陷入了衰落的命运。

从2000年至2010年,诺基亚的鼎盛时期可谓是手机行业的黄金岁月。它的产品线涵盖了各个市场细分领域,从普通手机到高端智能手机,无所不包。以经典的诺基亚3310为代表的功能机在全球销售额突破了20亿部,成为了一个世代人的回忆。同时,诺基亚的智能手机也成为不少人的首选,其操作系统Symbian技术的优秀性能为其赢得了高度赞誉。

然而,正是在鼎盛之时,诺基亚也未能预料到即将到来的变革。苹果公司的iPhone于2007年发布,以其全触控屏幕和强大的生态系统一炮而红,彻底改变了手机的概念。与此同时,谷歌推出的Android系统也逐渐崭露头角。诺基亚在面对这些创新时显得犹豫不决,未能及时调整战略,错失了扩大市场份额的良机。

诺基亚在技术和市场上的滞后,使其在竞争中逐渐失去了优势。同时,其旗下的Symbian系统也逐渐暴露出性能不足、用户体验不佳等问题。与之相比,苹果和谷歌不断推陈出新,具备更好的用户界面和丰富的应用生态,吸引了大量消费者的眼球。

诺基亚开始意识到自己的困境,并试图重新夺回市场份额。但在推出新产品时,其设计和创新的能力明显不如以往。尽管旗下的Lumia系列智能手机设备在其中发挥了一定作用,但并未达到预期效果。延误的软件更新和缺乏应用生态的问题,进一步削弱了诺基亚的竞争力。

然而,认清现实的诺基亚并未完全放弃。在微软的收购之后,诺基亚决定转型成为一家网络设备和服务提供商。这个决定,实际上让诺基亚逃脱了完全退出市场的命运。它重新聚焦在网络设备、云计算和地图服务等领域,并取得了一定的成绩。

在网络设备领域,诺基亚保持了自己的领先地位。它在5G技术和物联网领域有着丰富的经验,为全球各地的网络提供商提供了先进的设备和解决方案。同时,诺基亚的HERE地图服务也为用户提供高精度的导航和定位功能。

然而,在如今的手机市场上,诺基亚已经成为了一个小众品牌。它的市场份额已被苹果、三星、华为等厂商分食,局限于一些特定的地区市场。因此,诺基亚需要进一步加强自己的创新能力和品牌形象,才能在竞争激烈的市场中重新崛起。

面对诺基亚现状所带来的挑战,诺基亚的高层领导们正在积极采取措施。他们加大了在研发和创新方面的投入,试图推出更具竞争力的产品。此外,诺基亚还在加强与运营商和合作伙伴的合作,共同推动5G技术和物联网的发展。

诺基亚的未来究竟如何,还有待时间去揭示。尽管它曾经走过辉煌,但现实的竞争环境和市场需求已经发生了翻天覆地的变化。诺基亚需要摆脱过去的包袱,重新焕发出创新和活力,才能在新的时代中找到自己的定位。

作为一个曾经引领行业的巨人,诺基亚的衰落教训深远。它提醒着我们,在科技领域,没有任何公司能够永远居于巅峰。只有不断创新,紧跟时代的步伐,才能在激烈的竞争中生存下去。

毋庸置疑,诺基亚在手机市场上的地位已无法再回到过去的辉煌。但它依然具备着一定的技术实力和品牌认知度,可以在其他领域发挥作用。相信在未来的发展中,诺基亚仍然有机会焕发新生,创造出属于自己的辉煌。

六、瑞典诺基亚

瑞典诺基亚 - 在全球通信行业中的领导者

介绍

瑞典诺基亚是一家全球领先的通信技术公司,总部位于瑞典斯德哥尔摩。自从公司成立以来,诺基亚一直以其创新的产品和卓越的技术在全球范围内享有盛誉。作为通信行业的领导者,诺基亚致力于为个人和企业提供最先进的解决方案。

诺基亚的历史

诺基亚成立于1865年,最初以生产纸浆为主要业务。直到20世纪90年代,诺基亚开始涉足通信领域,从此开启了它在通信行业中的崛起之路。通过持续的创新和投资,诺基亚成功地推出了第一代数字手机,这标志着它成为全球移动通信市场的领导者。

随着时间的推移,诺基亚逐渐扩大了自己的产品范围,涵盖了无线网络设备、数字媒体解决方案、网络安全和云服务等领域。如今,诺基亚是全球唯一一家涵盖了移动通信、固定网络和云端技术的综合性通信科技公司。

诺基亚的产品与解决方案

诺基亚提供广泛的产品和解决方案,满足人们对通信技术的不断增长的需求。无论是个人用户、企业还是运营商,诺基亚都能够为他们提供定制化的解决方案。

移动通信

作为全球移动通信市场的领导者,诺基亚的移动通信产品包括各种智能手机、平板电脑和其他移动设备。这些设备结合了先进的技术和出色的性能,为用户提供卓越的移动体验。

固定网络

诺基亚在固定网络领域提供了广泛的解决方案,包括光纤网络、宽带接入技术和网络安全服务。无论是家庭用户还是企业客户,诺基亚都能够提供高速、可靠和安全的网络连接。

云端技术

诺基亚的云端技术为企业客户提供了强大的云计算和数据存储解决方案。这些解决方案不仅能够提高企业的效率和灵活性,还能够保护客户的数据安全。

诺基亚的创新精神

诺基亚一直以创新而著称,这也是它在全球通信行业中保持领导地位的关键。公司不断投资于研发,致力于推动通信技术的进步。

诺基亚的研究和开发团队与全球一流的科研机构和大学合作,共同探索下一代通信技术。他们的工作涵盖了5G网络、物联网、人工智能和数字化解决方案等领域。

诺基亚的全球影响力

作为一家全球性企业,诺基亚在世界各地都有广泛的影响力。其产品和解决方案已经覆盖了超过100个国家,为数十亿的人们提供了可靠的通信服务。

此外,诺基亚还与全球各地的运营商、合作伙伴和客户建立了紧密的合作关系。通过共同合作,诺基亚正在推动通信行业的发展,并为全球的数百万用户提供更好的通信体验。

结论

作为全球通信行业的领导者,瑞典诺基亚一直以来都保持着创新和卓越的声誉。其广泛的产品和解决方案满足了人们对通信技术不断增长的需求。通过持续的创新和投资,诺基亚将继续引领通信行业的发展,为全球用户提供更加先进和可靠的通信体验。

七、诺基亚前景

诺基亚前景:过去与未来的交叠

诺基亚,作为一家具有悠久历史的芬兰公司,曾经是全球最大的移动电话制造商。然而,在过去几年里,诺基亚在智能手机市场的份额逐渐被其他竞争对手夺取,面临着巨大的挑战。然而,随着5G技术的快速发展和全球市场对移动通信设备的需求不断增长,诺基亚的前景可能会迎来一次全新的转机。

过去的成功

诺基亚曾一度主宰了全球手机市场,其标志性的灵感设计、卓越的硬件品质和稳定的操作系统备受赞誉。多年来,诺基亚凭借其可靠性和创新性赢得了无数消费者的信任,成为世界各地人们的心头好。

然而,随着智能手机的崛起,诺基亚逐渐失去了市场份额。由于在转型至Windows操作系统时的策略失误和竞争对手的迅速崛起,诺基亚的市场地位一落千丈。苹果和安卓等其他品牌迅速占领市场,诺基亚成为移动通信行业的老字号,但不再是领军者。

挑战与调整

诺基亚在面临巨大挑战时,不得不进行公司战略的调整。他们决定放弃自家操作系统,并与微软合作开发Windows Phone系统。然而,这一合作并没有如他们所愿,Windows Phone系统的市场份额一直徘徊不前。

诺基亚意识到了他们在智能手机市场的困境,并决定在2014年将手机业务出售给了微软。这一决策为诺基亚带来了额外的资金和资源,也让他们专注于网络设备和解决方案的开发。虽然这是一个艰难的决定,但诺基亚看到了更多机会的可能性。

未来的展望

随着全球对5G技术的迫切需求,诺基亚有机会重新崭露头角。在5G技术出现之前,诺基亚已经在网络设备行业拥有着强大的技术和专业知识。他们一直在研究和开发着全球领先的通信解决方案,为全球各地的运营商提供高质量的网络服务。

如今,5G技术的发展将为诺基亚带来新的商机。随着5G网络的铺设,无论是在城市、农村还是工业领域,对高质量网络的需求将大幅增加。诺基亚作为全球领先的网络设备供应商,有机会在这个领域重新树立起自己的地位。

除了网络设备,诺基亚还积极投入到物联网和数字化转型领域。通过与不同行业的伙伴合作,诺基亚致力于帮助企业和机构实现数字化转型,开发出更加智能和高效的解决方案。

诺基亚还在手机市场保持存在感,推出了一些备受好评的产品,例如搭载最新技术的智能手机和功能手机。尽管与苹果和安卓等巨头相比,诺基亚的市场份额较小,但他们能够吸引那些看中品质和可靠性的用户。

结语

诺基亚曾经是全球手机市场的巨无霸,但在智能手机的冲击下失去了领先地位。然而,随着5G技术的发展,诺基亚有机会重新崭露头角。作为全球领先的网络设备供应商,诺基亚在5G网络铺设和数字化转型领域有着巨大潜力。

通过持续的创新和合作,诺基亚可以不断提升自己的技术优势,为客户提供高品质的通信解决方案。诺基亚面临着巨大的竞争压力,但他们拥有丰富的历史和经验,以及未来发展的动力。无论是网络设备还是智能手机,诺基亚都有机会在全球市场上再次取得成功。

八、诺基亚 分析

诺基亚的分析

诺基亚作为一家全球知名的通信设备制造商,其分析能力一直备受关注。本文将介绍诺基亚在分析领域的一些关键技术和应用。

数据分析

数据分析是诺基亚的核心竞争力之一。诺基亚通过采用先进的数据分析技术,如大数据、机器学习和人工智能等,对海量的数据进行分析和挖掘,以发现隐藏在数据背后的规律和趋势。

诺基亚在数据分析领域拥有丰富的实践经验,能够为客户提供定制化的数据分析解决方案,帮助客户实现业务优化和增长。同时,诺基亚也在不断探索新的数据分析技术和应用场景,以保持其在该领域的领先地位。

数据可视化

数据可视化是数据分析的重要手段之一。诺基亚通过采用先进的可视化技术,如数据地图、数据图表和数据报告等,将复杂的数据转化为直观、易于理解的图形或图像,帮助客户更好地理解和分析数据。

诺基亚的数据可视化工具具有高度的灵活性和可定制性,能够满足不同客户的不同需求。同时,诺基亚也在不断探索新的数据可视化技术和工具,以保持其在该领域的领先地位。

人工智能

人工智能是当前最热门的技术之一。诺基亚在人工智能领域也进行了深入的研究和探索,通过将人工智能技术应用于数据分析、智能推荐和智能客服等领域,提高客户的服务质量和效率。

诺基亚的人工智能技术具有高度的自主性和智能性,能够根据不同的场景和需求,为客户提供个性化的服务。同时,诺基亚也在不断加强人工智能技术的研发和优化,以保持其在该领域的领先地位。

总结

综上所述,诺基亚在分析领域具有强大的实力和丰富的经验。通过采用先进的数据分析技术和数据可视化工具,以及人工智能技术,诺基亚能够为客户提供高质量的分析服务,帮助客户实现业务优化和增长。

未来,随着技术的不断发展,诺基亚将继续加强在分析领域的投入和创新,不断探索新的技术和应用场景,为客户提供更加优质的服务。

九、贝尔·坎贝尔著作?

拉姆齐·坎贝尔的《牵引》(1976年),可以称得上是其克苏鲁神话写作道路中的成名作之一,同年的坎贝尔也完成了罗伯特·E.霍华德未能完成的三个所罗门·凯恩的故事的创作,分别为《巴斯蒂之鹰》,《魔鬼城堡》和《亚述之子》。而坎贝尔老爷子的《牵引》也为著名的邪神格赫罗斯的出处。话虽如此,老爷子在本文极为意识流,同样的还有《湖中居民》。

十、mahout面试题?

之前看了Mahout官方示例 20news 的调用实现;于是想根据示例的流程实现其他例子。网上看到了一个关于天气适不适合打羽毛球的例子。

训练数据:

Day Outlook Temperature Humidity Wind PlayTennis

D1 Sunny Hot High Weak No

D2 Sunny Hot High Strong No

D3 Overcast Hot High Weak Yes

D4 Rain Mild High Weak Yes

D5 Rain Cool Normal Weak Yes

D6 Rain Cool Normal Strong No

D7 Overcast Cool Normal Strong Yes

D8 Sunny Mild High Weak No

D9 Sunny Cool Normal Weak Yes

D10 Rain Mild Normal Weak Yes

D11 Sunny Mild Normal Strong Yes

D12 Overcast Mild High Strong Yes

D13 Overcast Hot Normal Weak Yes

D14 Rain Mild High Strong No

检测数据:

sunny,hot,high,weak

结果:

Yes=》 0.007039

No=》 0.027418

于是使用Java代码调用Mahout的工具类实现分类。

基本思想:

1. 构造分类数据。

2. 使用Mahout工具类进行训练,得到训练模型。

3。将要检测数据转换成vector数据。

4. 分类器对vector数据进行分类。

接下来贴下我的代码实现=》

1. 构造分类数据:

在hdfs主要创建一个文件夹路径 /zhoujainfeng/playtennis/input 并将分类文件夹 no 和 yes 的数据传到hdfs上面。

数据文件格式,如D1文件内容: Sunny Hot High Weak

2. 使用Mahout工具类进行训练,得到训练模型。

3。将要检测数据转换成vector数据。

4. 分类器对vector数据进行分类。

这三步,代码我就一次全贴出来;主要是两个类 PlayTennis1 和 BayesCheckData = =》

package myTesting.bayes;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.util.ToolRunner;

import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;

import org.apache.mahout.text.SequenceFilesFromDirectory;

import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;

public class PlayTennis1 {

private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";

/*

* 测试代码

*/

public static void main(String[] args) {

//将训练数据转换成 vector数据

makeTrainVector();

//产生训练模型

makeModel(false);

//测试检测数据

BayesCheckData.printResult();

}

public static void makeCheckVector(){

//将测试数据转换成序列化文件

try {

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String input = WORK_DIR+Path.SEPARATOR+"testinput";

String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";

Path in = new Path(input);

Path out = new Path(output);

FileSystem fs = FileSystem.get(conf);

if(fs.exists(in)){

if(fs.exists(out)){

//boolean参数是,是否递归删除的意思

fs.delete(out, true);

}

SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();

String[] params = new String[]{"-i",input,"-o",output,"-ow"};

ToolRunner.run(sffd, params);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("文件序列化失败!");

System.exit(1);

}

//将序列化文件转换成向量文件

try {

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";

String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";

Path in = new Path(input);

Path out = new Path(output);

FileSystem fs = FileSystem.get(conf);

if(fs.exists(in)){

if(fs.exists(out)){

//boolean参数是,是否递归删除的意思

fs.delete(out, true);

}

SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();

String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};

ToolRunner.run(svfsf, params);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("序列化文件转换成向量失败!");

System.out.println(2);

}

}

public static void makeTrainVector(){

//将测试数据转换成序列化文件

try {

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String input = WORK_DIR+Path.SEPARATOR+"input";

String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";

Path in = new Path(input);

Path out = new Path(output);

FileSystem fs = FileSystem.get(conf);

if(fs.exists(in)){

if(fs.exists(out)){

//boolean参数是,是否递归删除的意思

fs.delete(out, true);

}

SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();

String[] params = new String[]{"-i",input,"-o",output,"-ow"};

ToolRunner.run(sffd, params);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("文件序列化失败!");

System.exit(1);

}

//将序列化文件转换成向量文件

try {

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";

String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";

Path in = new Path(input);

Path out = new Path(output);

FileSystem fs = FileSystem.get(conf);

if(fs.exists(in)){

if(fs.exists(out)){

//boolean参数是,是否递归删除的意思

fs.delete(out, true);

}

SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();

String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};

ToolRunner.run(svfsf, params);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("序列化文件转换成向量失败!");

System.out.println(2);

}

}

public static void makeModel(boolean completelyNB){

try {

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";

String model = WORK_DIR+Path.SEPARATOR+"model";

String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";

Path in = new Path(input);

Path out = new Path(model);

Path label = new Path(labelindex);

FileSystem fs = FileSystem.get(conf);

if(fs.exists(in)){

if(fs.exists(out)){

//boolean参数是,是否递归删除的意思

fs.delete(out, true);

}

if(fs.exists(label)){

//boolean参数是,是否递归删除的意思

fs.delete(label, true);

}

TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();

String[] params =null;

if(completelyNB){

params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};

}else{

params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};

}

ToolRunner.run(tnbj, params);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("生成训练模型失败!");

System.exit(3);

}

}

}

package myTesting.bayes;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

import org.apache.commons.lang.StringUtils;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.fs.PathFilter;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.mahout.classifier.naivebayes.BayesUtils;

import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;

import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;

import org.apache.mahout.common.Pair;

import org.apache.mahout.common.iterator.sequencefile.PathType;

import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;

import org.apache.mahout.math.RandomAccessSparseVector;

import org.apache.mahout.math.Vector;

import org.apache.mahout.math.Vector.Element;

import org.apache.mahout.vectorizer.TFIDF;

import com.google.common.collect.ConcurrentHashMultiset;

import com.google.common.collect.Multiset;

public class BayesCheckData {

private static StandardNaiveBayesClassifier classifier;

private static Map<String, Integer> dictionary;

private static Map<Integer, Long> documentFrequency;

private static Map<Integer, String> labelIndex;

public void init(Configuration conf){

try {

String modelPath = "/zhoujianfeng/playtennis/model";

String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";

String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";

String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";

dictionary = readDictionnary(conf, new Path(dictionaryPath));

documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));

labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));

NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);

classifier = new StandardNaiveBayesClassifier(model);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("检测数据构造成vectors初始化时报错。。。。");

System.exit(4);

}

}

/**

* 加载字典文件,Key: TermValue; Value:TermID

* @param conf

* @param dictionnaryDir

* @return

*/

private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {

Map<String, Integer> dictionnary = new HashMap<String, Integer>();

PathFilter filter = new PathFilter() {

@Override

public boolean accept(Path path) {

String name = path.getName();

return name.startsWith("dictionary.file");

}

};

for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {

dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());

}

return dictionnary;

}

/**

* 加载df-count目录下TermDoc频率文件,Key: TermID; Value:DocFreq

* @param conf

* @param dictionnaryDir

* @return

*/

private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {

Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();

PathFilter filter = new PathFilter() {

@Override

public boolean accept(Path path) {

return path.getName().startsWith("part-r");

}

};

for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {

documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());

}

return documentFrequency;

}

public static String getCheckResult(){

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String classify = "NaN";

BayesCheckData cdv = new BayesCheckData();

cdv.init(conf);

System.out.println("init done...............");

Vector vector = new RandomAccessSparseVector(10000);

TFIDF tfidf = new TFIDF();

//sunny,hot,high,weak

Multiset<String> words = ConcurrentHashMultiset.create();

words.add("sunny",1);

words.add("hot",1);

words.add("high",1);

words.add("weak",1);

int documentCount = documentFrequency.get(-1).intValue(); // key=-1时表示总文档数

for (Multiset.Entry<String> entry : words.entrySet()) {

String word = entry.getElement();

int count = entry.getCount();

Integer wordId = dictionary.get(word); // 需要从dictionary.file-0文件(tf-vector)下得到wordID,

if (StringUtils.isEmpty(wordId.toString())){

continue;

}

if (documentFrequency.get(wordId) == null){

continue;

}

Long freq = documentFrequency.get(wordId);

double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);

vector.setQuick(wordId, tfIdfValue);

}

// 利用贝叶斯算法开始分类,并提取得分最好的分类label

Vector resultVector = classifier.classifyFull(vector);

double bestScore = -Double.MAX_VALUE;

int bestCategoryId = -1;

for(Element element: resultVector.all()) {

int categoryId = element.index();

double score = element.get();

System.out.println("categoryId:"+categoryId+" score:"+score);

if (score > bestScore) {

bestScore = score;

bestCategoryId = categoryId;

}

}

classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";

return classify;

}

public static void printResult(){

System.out.println("检测所属类别是:"+getCheckResult());

}

}

相关资讯
热门频道

Copyright © 2024 招聘街 滇ICP备2024020316号-38