首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Arduino的串行值进行机器学习预测?

如何使用Arduino的串行值进行机器学习预测?
EN

Stack Overflow用户
提问于 2022-09-18 20:09:28
回答 1查看 51关注 0票数 1

我正在进行一个项目,以创建一个手语识别手套,以检测手势和播放相应的音频输出。在在线教程中,我在python中编写了一个基本的决策树分类器模型,并使用我自己收集的数据集进行预测,下面是代码:

代码语言:javascript
运行
复制
import pandas as pd 
data=pd.read_csv('mydata.csv') 
X = data.drop(columns=['Word'])
X = X.values
y = data['Word'] 
from sklearn.tree import DecisionTreeClassifier 
model = DecisionTreeClassifier()
model.fit(X,y)
predictions = model.predict([[-3.18,-8.92,-2.27,227,303,254,297,169]]) ##Sensor values from collected dataset
predictions 

这段代码运行良好,并能做出准确的预测。另一方面,我还学习了另一个教程,使用PySerial将Arduino与Python进行接口,并将串行监视器的实时值引入Python。

代码语言:javascript
运行
复制
import time
import serial

arduinoData=serial.Serial('com6',115200)
time.sleep(1)

while True:
    while(arduinoData.inWaiting()==0):
        pass
    dataPacket=arduinoData.readline()
    dataPacket=str(dataPacket,'utf-8')
    dataPacket=dataPacket.strip('\r\n')
    splitPacket=dataPacket.split(",")
    X=float(splitPacket[0])
    Y=float(splitPacket[1])
    Z=float(splitPacket[2])
    T=float(splitPacket[3])
    I=float(splitPacket[4])
    M=float(splitPacket[5])
    R=float(splitPacket[6])
    P=float(splitPacket[7])
    print(X,Y,Z,T,I,M,R,P)
-0.72,-1.33,10.72,234,238,199,332,176

如何使用从Python接收的(X,Y,Z,T,I,M,R,P)值对前面提到的ML模型代码进行实时预测?因此,当我执行一个手势,如果传感器值符合预测标准,那么它应该打印‘预测’变量。

EN

回答 1

Stack Overflow用户

发布于 2022-09-18 20:17:22

你快到了!我将从以下几个步骤着手处理这个问题:

  1. Create/Train/Save ML模式:

您已经有了创建和训练ML模型的代码,只需将其保存到一个文件中:

代码语言:javascript
运行
复制
# open a file, where you ant to store the data
with open('important', 'wb') as file:
    # dump information to that file
    pickle.dump(model, file)

https://scikit-learn.org/stable/model_persistence.html

  1. 使用模型进行预测:

现在,在第二个python代码中加载模型:

代码语言:javascript
运行
复制
with open('important', 'rb') as file:
    model = pickle.load(file)

并使用arduino的值进行预测:

代码语言:javascript
运行
复制
model.predict([[X,Y,Z,T,I,M,R,P]])

完整代码:

代码语言:javascript
运行
复制
import time
import serial
import pickle 

arduinoData=serial.Serial('com6',115200)
time.sleep(1)

with open('important', 'rb') as file:
    model = pickle.load(file)


while True:
    while(arduinoData.inWaiting()==0):
        pass
    dataPacket=arduinoData.readline()
    dataPacket=str(dataPacket,'utf-8')
    dataPacket=dataPacket.strip('\r\n')
    splitPacket=dataPacket.split(",")
    X=float(splitPacket[0])
    Y=float(splitPacket[1])
    Z=float(splitPacket[2])
    T=float(splitPacket[3])
    I=float(splitPacket[4])
    M=float(splitPacket[5])
    R=float(splitPacket[6])
    P=float(splitPacket[7])
    prediction = model.predict([[X,Y,Z,T,I,M,R,P]])
    print(prediction)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73766086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档