在过去的几年里,深度神经网络在模式识别、计算机视觉、语音识别和图像分类等各种问题上为我们提供了最好的结果。
将机器学习应用于传感器和信号数据使设备比以往任何时候都更智能,并将成为物联网领域的突破。无论您使用的是声音、振动、图像、电信号还是加速度计或其他类型的传感器数据,您都可以通过教导机器使用廉价的微控制器在边缘实时检测和分类事件来构建更丰富的分析用于处理 - 即使是嘈杂的、高变化的数据。在这篇研究论文中可以看到更多关于机器学习和数据分析的信息。
在其他黑客博客中,我们介绍了无线传感器在许多工业应用中的使用。在不同的用例中,我们看到我们正在获取大量数据。有些是相关数据,有些是不相关的。收集这些数据并建立机器学习模型可以帮助我们从传感器收集相关信息。
在这个教学中,我们将学习:
我们从无线温度和湿度传感器获得以下值:
然后在 Azure IoT 中心对这些数据进行可视化和分析。若要开始设置 Azure IoT 中心,请阅读本教程。为了发送值 Azure IoT 中心,应遵循以下过程。
Azure IoT 中心遵循 MQTT 协议以发布和订阅数据。
public static async Task Run(HttpRequestMessage req, TraceWriter log)
{ double humidity;
int rawTemp;
double Ctemp;
double Ftemp;
double voltage;
string utcEnque;
string devFormat;
string utcProcess;
log.Info("C# HTTP trigger function processed a request: " + content);
JArray array = JArray.Parse($"{await req.Content.ReadAsStringAsync()}");
//parsing the JSON array
foreach(dynamic message in array){
utcProcess = message.EventProcessedUtcTime;
utcEnque = message.EventEnqueuedUtcTime;
humidity = ((message.Humid1)*256 + (message.Humid2))/100;
rawTemp = ((message.Temp1)*256 + (message.Temp2));
Ctemp = rawTemp /100.0;
Ftemp = Ctemp *1.8 + 32;
int bat = ((message.Bat1)*256 + (message.Bat2));
voltage = 0.00322 * bat;
string utcTime = utcProcess.ToString();
DateTime localDateTime = DateTime.Parse(utcTime);
DateTime utcDateTime = localDateTime.ToUniversalTime();
string usTimeZone = "US Eastern Standard Time";
TimeZoneInfo ust = TimeZoneInfo.FindSystemTimeZoneById(usTimeZone);
DateTime dateTime = TimeZoneInfo.ConvertTime(utcDateTime, ust);
log.Info(dateTime.ToString("dd/MM/yyyy HH:mm:ss")); \
}
return req.CreateResponse(HttpStatusCode.OK, "Executed");
}
public class Message{
[JsonProperty("temp1")]
public int temp1 { get; set; }
[JsonProperty("temp2")]
public int temp2 { get; set; }
[JsonProperty("humid1")]
public int humid1 { get; set; }
[JsonProperty("humid2")]
public int humid2 { get; set; }
[JsonProperty("bat1")]
public int bat1 { get; set; }
[JsonProperty("bat2")]
public int bat2 { get; set; }
}
我们正在使用 Power BI 来可视化数据。它提供了分析数据的交互式方法。此数据可以以折线图、条形图、饼图等形式进行解释。首先在 Power Bi 中创建一个帐户并登录到您的帐户。在上一篇文章中,我们设置了 Power Bi 并使用流分析作业将数据发送到 Power Bi。在这篇文章中,我们使用 Azure 功能将传感器数据发送给 Bi。要设置 Power Bi,请阅读此博客。
有四种方法可以将数据发送到 Power Bi:
在我们的例子中,我们使用 Power BI API 并从 azure 函数向 Power BI 发送 HTTP 响应。可视化面板中列出了不同的图形、折线图、Pi 图等。我们可以通过从可视化面板中选择任何图表来创建图表。
我们还可以将数据导出为 Excel 表格或 CSV 格式。在后期可用于数据分析。
从 JSON 中解析所有 JSON 对象,并获取温度、湿度等的真实值。这里的产品是一个产品类对象,我们在其中存储解析的值。
Product product = new Product();
foreach(dynamic message in array){
humidity = ((message.humid1)*256 + (message.humid2))/100;
rawTemp = ((message.temp1)*256 + (message.temp2));
Ctemp = rawTemp /100.0;
Ftemp = Ctemp *1.8 + 32;
int bat = ((message.bat1)*256 + (message.bat2));
voltage = 0.00322 * bat;
utcProcess = message.EventProcessedUtcTime;
utcEnque = message.EventEnqueuedUtcTime;
product.Ctemperature = Ctemp;
product.Ftemperature = Ftemp;
product.humid = humidity;
product.battery = voltage;
//product.dateTime = ;
product.EventProcessedUtcTime=utcProcess;
product.EventEnqueuedUtcTime=utcEnque;
}
public class Product{
public double Ctemperature{get; set;}
public double humid{get; set;}
public double battery{get; set;}
//public double dateTime{get; set;}
public string EventProcessedUtcTime { get; set; }
public string EventEnqueuedUtcTime { get; set; }
public double Ftemperature{get; set;}}
string connString = "https://api.powerbi.com/beta/***************";
HttpClient client = new HttpClient();
string output = JsonConvert.SerializeObject(product);
HttpContent httpContent = new StringContent("[" + output + "]");
HttpResponseMessage response = await client.PostAsync(connString, httpContent);
response.EnsureSuccessStatusCode();
该数据集由 CSV 格式的 Power BI 中的温度、湿度值组成。使用这些信息,我们将预测机器的状况。机器状况按以下方式分类
温度和湿度值称为Features ,与这些值相关的条件称为Labels 。我们将对该数据集进行特征提取并训练该数据集以映射真实标签。将训练数据集与测试集进行比较以找到真实结果。这种机器学习方法称为线性回归。
我们将数据集分为两部分:
我们正在使用遵循线性回归的LDA(线性判别分析)来训练数据。使用 LDA 提取特征后。这些特征被提供给卷积层。在这一层,权重与输入进行卷积,并将偏差添加到其中。这个过程针对不同的卷积层进行。然后我们添加一个最大池化层并添加一个激活函数(在我们的案例中我们使用Relu ,更多关于这可以在这项研究工作中找到),其中再次对特征进行下采样以使用正确的标签映射数据。然后在最后我们有一个完全连接的层,其中特征再次被向下采样到标签大小。最后一层的大小等于标签的大小。
我们优化了2000次迭代的数据集,发现如下结果:
此设置的固件可在此GitHub 存储库中找到
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !