我正在进行一个项目,以创建一个手语识别手套,以检测手势和播放相应的音频输出。在在线教程中,我在python中编写了一个基本的决策树分类器模型,并使用我自己收集的数据集进行预测,下面是代码:
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。
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模型代码进行实时预测?因此,当我执行一个手势,如果传感器值符合预测标准,那么它应该打印‘预测’变量。
发布于 2022-09-18 20:17:22
你快到了!我将从以下几个步骤着手处理这个问题:
您已经有了创建和训练ML模型的代码,只需将其保存到一个文件中:
# 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
现在,在第二个python代码中加载模型:
with open('important', 'rb') as file:
model = pickle.load(file)
并使用arduino的值进行预测:
model.predict([[X,Y,Z,T,I,M,R,P]])
完整代码:
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)
https://stackoverflow.com/questions/73766086
复制相似问题