Python 物联网入门指南(二)(3)

简介: Python 物联网入门指南(二)

Python 物联网入门指南(二)(2)https://developer.aliyun.com/article/1507137

使用主题建模在文本中识别模式

主题建模是指识别手稿信息中隐藏模式的过程。其目标是在一系列文件中揭示一些隐藏的主题结构。

如何做…

  1. 导入以下包:
from nltk.tokenize import RegexpTokenizer
from nltk.stem.snowball import SnowballStemmer
from gensim import models, corpora
from nltk.corpus import stopwords
  1. 加载输入数据:
def load_words(in_file):
  element = []
  with open(in_file, 'r') as f:
    for line in f.readlines():
      element.append(line[:-1])
  return element
  1. 预处理文本的类:
classPreprocedure(object):
  def __init__(self):
 # Create a regular expression tokenizer    self.tokenizer = RegexpTokenizer(r'w+')
  1. 获取停用词列表以终止程序执行:
self.english_stop_words= stopwords.words('english')
  1. 创建一个 Snowball 词干提取器:
self.snowball_stemmer = SnowballStemmer('english')  
  1. 定义一个执行标记化、停用词去除和词干处理的函数:
def procedure(self, in_data):
# Tokenize the string
    token = self.tokenizer.tokenize(in_data.lower())
  1. 从文本中消除停用词:
tokenized_stopwords = [x for x in token if not x in self.english_stop_words]
  1. 对标记进行词干处理:
token_stemming = [self.snowball_stemmer.stem(x) for x in tokenized_stopwords]
  1. 返回处理过的标记:
return token_stemming
  1. main函数加载输入数据:
if __name__=='__main__':
 # File containing input data  in_file = 'data_topic_modeling.txt'
 # Load words  element = load_words(in_file)
  1. 创建一个对象:
preprocedure = Preprocedure()
  1. 处理文件并提取标记:
processed_tokens = [preprocedure.procedure(x) for x in element]
  1. 根据标记化的文档创建一个字典:
dict_tokens = corpora.Dictionary(processed_tokens)
  corpus = [dict_tokens.doc2bow(text) for text in processed_tokens]
  1. 开发一个 LDA 模型,定义所需的参数,并初始化 LDA 目标:
num_of_topics = 2
  num_of_words = 4
  ldamodel = models.ldamodel.LdaModel(corpus,num_topics=num_of_topics, id2word=dict_tokens, passes=25)
  print "Most contributing words to the topics:"
  for item in ldamodel.print_topics(num_topics=num_of_topics, num_words=num_of_words):
    print "nTopic", item[0], "==>", item[1]
  1. 执行topic_modelling.py时获得的结果如下截图所示:


情感分析的应用

情感分析在社交媒体如 Facebook 和 Twitter 中使用,以找出公众对某个问题的情感(积极/消极)。它们还用于确定人们对广告的情感以及人们对您的产品、品牌或服务的感受。

第五章:在图像中检测边缘和轮廓

本章介绍以下主题:

  • 加载、显示和保存图像
  • 图像翻转和缩放
  • 腐蚀和膨胀
  • 图像分割
  • 模糊和锐化图像
  • 在图像中检测边缘
  • 直方图均衡化
  • 在图像中检测角点

介绍

图像处理在几乎所有工程和医学应用中都起着至关重要的作用,用于从灰度/彩色图像中提取和评估感兴趣区域。图像处理方法包括预处理、特征提取和分类。预处理用于增强图像的质量;这包括自适应阈值处理、对比度增强、直方图均衡化和边缘检测。特征提取技术用于从图像中提取显著特征,以供后续分类使用。

本章介绍了构建图像预处理方案的程序。

加载、显示和保存图像

本节介绍了如何通过 OpenCV-Python 处理图像。此外,我们讨论了如何加载、显示和保存图像。

如何做…

  1. 导入计算机视觉包-cv2
import cv2 
  1. 使用内置的imread函数读取图像:
image = cv2.imread('image_1.jpg')
  1. 使用内置的imshow函数显示原始图像:
cv2.imshow("Original", image) 
  1. 等待按下任意键:
cv2.waitKey(0) 
  1. 使用内置的imwrite函数保存图像:
cv2.imwrite("Saved Image.jpg", image) 
  1. 用于执行 Python 程序Load_Display_Save.py的命令如下所示:


  1. 执行Load_Display_Save.py后获得的结果如下所示:


图像翻转

在图像翻转操作中,我们可以水平、垂直、水平和垂直翻转输入图像。

如何做…

  1. 导入计算机视觉包-cv2
import cv2 
  1. 使用内置的imread函数读取图像:
image = cv2.imread('image_2.jpg')
  1. 使用内置的imshow函数显示原始图像:
cv2.imshow("Original", image) 
  1. 等待按下任意键:
cv2.waitKey(0) 
  1. 对测试图像执行所需操作:
# cv2.flip is used to flip images 
# Horizontal flipping of images using value '1' 
flipping = cv2.flip(image, 1) 
  1. 显示水平翻转的图像:
# Display horizontally flipped image 
cv2.imshow("Horizontal Flipping", flipping) 
  1. 等待按下任意键:
cv2.waitKey(0) 
  1. 执行输入图像的垂直翻转:
# Vertical flipping of images using value '0' 
flipping = cv2.flip(image, 0) 
  1. 显示垂直翻转的图像:
cv2.imshow("Vertical Flipping", flipping) 
  1. 等待按下任意键:
cv2.waitKey(0) 
  1. 显示处理后的图像:
# Horizontal & Vertical flipping of images using value '-1' 
flipping = cv2.flip(image, -1) 
# Display horizontally & vertically flipped image 
cv2.imshow("Horizontal & Vertical Flipping", flipping) 
# Wait until any key is pressed 
cv2.waitKey(0)
  1. 停止执行并显示结果:
# Close all windows 
cv2.destroyAllWindows() 
  1. 用于执行Flipping.py Python 程序的命令如下所示:


  1. 执行Flipping.py后获得的原始和水平翻转的图像如下所示:


以下是水平翻转的图片:


  1. 执行Flipping.py后获得的垂直、水平和垂直翻转的图像如下所示:


以下是水平和垂直翻转的图片:


图像缩放

图像缩放用于根据要求修改输入图像的尺寸。在 OpenCV 中通常使用三种类型的缩放操作符,它们是立方、区域和线性插值。

如何做…

  1. 创建一个新的 Python 文件并导入以下包:
# Scaling (Resizing) Images - Cubic, Area, Linear Interpolations 
# Interpolation is a method of estimating values between known data points  
# Import Computer Vision package - cv2 
import cv2 
# Import Numerical Python package - numpy as np 
import numpy as np 
  1. 使用内置的imread函数读取图像:
image = cv2.imread('image_3.jpg') 
  1. 使用内置的imshow函数显示原始图像:
cv2.imshow("Original", image) 
  1. 等待按下任意键:
cv2.waitKey() 
  1. 根据操作员的命令调整图像大小:
# cv2.resize(image, output image size, x scale, y scale, interpolation) 
  1. 使用立方插值调整图像大小:
# Scaling using cubic interpolation 
scaling_cubic = cv2.resize(image, None, fx=.75, fy=.75, interpolation = cv2.INTER_CUBIC) 
  1. 显示输出图像:
# Display cubic interpolated image 
cv2.imshow('Cubic Interpolated', scaling_cubic) 
  1. 等待按下任意键:
cv2.waitKey()
  1. 使用区域插值调整图像大小:
# Scaling using area interpolation 
scaling_skewed = cv2.resize(image, (600, 300), interpolation = cv2.INTER_AREA) 
  1. 显示输出图像:
# Display area interpolated image 
cv2.imshow('Area Interpolated', scaling_skewed)  
  1. 等待操作员的指示:
# Wait until any key is pressed 
cv2.waitKey() 
  1. 使用线性插值调整图像大小:
# Scaling using linear interpolation 
scaling_linear  = cv2.resize(image, None, fx=0.5, fy=0.5, interpolation = cv2.INTER_LINEAR) 
  1. 显示输出图像:
# Display linear interpolated image 
cv2.imshow('Linear Interpolated', scaling_linear)  
  1. 等待按下任意键:
cv2.waitKey() 
  1. 完成图像缩放任务后,终止程序执行:
# Close all windows 
cv2.destroyAllWindows() 
  1. 用于执行Scaling.py Python 程序的命令如下所示:


  1. 用于缩放的原始图像如下所示:


  1. 执行Scaling.py文件后获得的线性插值输出如下所示:


  1. 执行Scaling.py文件后获得的面积插值输出如下所示:


  1. 执行Scaling.py文件后获得的立方插值输出如下所示:


腐蚀和膨胀

腐蚀和膨胀是形态学操作。腐蚀去除图像中对象边界的像素,而膨胀在图像中对象的边界上添加像素。

如何做…

  1. 导入计算机视觉包 - cv2
import cv2 
  1. 导入数值 Python 包 - numpy as np
import numpy as np 
  1. 使用内置的imread函数读取图像:
image = cv2.imread('image_4.jpg')
  1. 使用内置的imshow函数显示原始图像:
cv2.imshow("Original", image) 
  1. 等待按任意键:
cv2.waitKey(0) 
  1. 给定形状和类型,用 1 填充:
# np.ones(shape, dtype) 
# 5 x 5 is the dimension of the kernel, uint8: is an unsigned integer (0 to 255) 
kernel = np.ones((5,5), dtype = "uint8") 
  1. cv2.erode是用于腐蚀的内置函数:
# cv2.erode(image, kernel, iterations) 
erosion = cv2.erode(image, kernel, iterations = 1) 
  1. 使用内置的imshow函数显示腐蚀后的图像:
cv2.imshow("Erosion", erosion) 
  1. 等待按任意键:
cv2.waitKey(0) 
  1. cv2.dilate是用于膨胀的内置函数:
# cv2.dilate(image, kernel, iterations) 
dilation = cv2.dilate(image, kernel, iterations = 1) 
  1. 使用内置的imshow函数显示膨胀后的图像:
cv2.imshow("Dilation", dilation) 
  1. 等待按任意键:
cv2.waitKey(0) 
  1. 关闭所有窗口:
cv2.destroyAllWindows()
  1. 用于执行Erosion_Dilation.py文件的命令如下所示:


  1. 用于执行Erosion_Dilation.py文件的输入图像如下所示:


  1. 执行Erosion_Dilation.py文件后获得的腐蚀图像如下所示:


  1. 执行Erosion_Dilation.py文件后获得的膨胀图像如下所示:

Python 物联网入门指南(二)(4)https://developer.aliyun.com/article/1507163

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
20天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
144 1
|
2月前
|
API 数据安全/隐私保护 开发者
Python自定义异常:从入门到实践的轻松指南
在Python开发中,自定义异常能提升错误处理的精准度与代码可维护性。本文通过银行系统、电商库存等实例,详解如何创建和使用自定义异常,涵盖异常基础、进阶技巧、最佳实践与真实场景应用,助你写出更专业、易调试的代码。
108 0
|
2月前
|
IDE 开发工具 数据安全/隐私保护
Python循环嵌套:从入门到实战的完整指南
循环嵌套是Python中处理多维数据和复杂逻辑的重要工具。本文通过实例讲解嵌套循环的基本用法、常见组合、性能优化技巧及实战应用,帮助开发者掌握其核心思想,避免常见错误,并探索替代方案与进阶方向。
117 0
|
11天前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
3天前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
63 1
|
25天前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
105 5
|
4月前
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
233 80
|
1月前
|
数据采集 存储 XML
Python爬虫入门(1)
在互联网时代,数据成为宝贵资源,Python凭借简洁语法和丰富库支持,成为编写网络爬虫的首选。本文介绍Python爬虫基础,涵盖请求发送、内容解析、数据存储等核心环节,并提供环境配置及实战示例,助你快速入门并掌握数据抓取技巧。
|
1月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
84 0

热门文章

最新文章

推荐镜像

更多