我正在使用Kaggle - 心血管疾病数据集中的数据集。模型已经过训练,我想做的是标记以动态方式插入的单个输入(一行13个值)。数据集的形状为 13 个特征 + 1 个目标,66k 行#prepare dataset for train and testdfCardio = load_csv("cleanCardio.csv")y = dfCardio['cardio']x = dfCardio.drop('cardio',axis = 1, inplace=False)model = knn = KNeighborsClassifier()x_train,x_test, y_train, y_test = train_test_split(x,y,test_size=0.2,random_state=42)model.fit(x_train, y_train)# make predictions for test datay_pred = model.predict(x_test)predictions = [round(value) for value in y_pred]# evaluate predictionsaccuracy = accuracy_score(y_test, predictions)print("Accuracy: %.2f%%" % (accuracy * 100.0))ML是训练的,我想做的是预测这一行的标签:['69','1','151','22','37','0','65','140','90','2','1','0','0','1']为目标返回 0 或 1。所以我写了这个代码:import numpy as npimport pandas as pdsingle = np.array(['69','1','151','22','37','0','65','140','90','2','1','0','0','1'])singledf = pd.DataFrame(single)final=singledf.transpose()prediction = model.predict(final)print(prediction)但它给出了错误:查询数据维度必须与训练数据维度匹配如何修复单行的标签?为什么我无法预测单个病例?
3 回答
弑天下
TA贡献1818条经验 获得超8个赞
数据集中的每个实例都有 13 个要素和 1 个标注。
x = dfCardio.drop('cardio',axis = 1, inplace=False)
代码中的这一行从数据中删除了我假设的标签列,只留下 (13) 个功能列。
您尝试预测的特征向量的长度为 14 个元素。您只能预测长度为 13 个元素的特征向量,因为这是模型训练的基础。
叮当猫咪
TA贡献1776条经验 获得超12个赞
我不同意其他人的观点,这不是包括目标的问题。
我也有这个问题。我绕过它的唯一方法是输入.x
所以:
x2=x.iloc[0:3]
然后为第一行指定一个新值:
x2.iloc[0]=single ypred=model.predict(x2)
看看.ypred[0]
或者尝试使用包含 2 个值的数据帧
慕的地6264312
TA贡献1817条经验 获得超6个赞
如果您正在寻找一个真实快速的解决方案,您可以使用它
import numpy as np
import pandas as pd
single = np.array([['69','1','151','22','37','0','65','140','90','2','1','0','0']])
prediction = model.predict(single)
print(prediction)
添加回答
举报
0/150
提交
取消