猿问

KNN - 在 python 中预测单个案例

我正在使用Kaggle - 心血管疾病数据集中的数据集。模型已经过训练,我想做的是标记以动态方式插入的单个输入(一行13个值)。


数据集的形状为 13 个特征 + 1 个目标,66k 行


#prepare dataset for train and test

dfCardio = 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 data

y_pred = model.predict(x_test)

predictions = [round(value) for value in y_pred]

# evaluate predictions

accuracy = 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 np

import pandas as pd

single =  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)

但它给出了错误:查询数据维度必须与训练数据维度匹配


如何修复单行的标签?为什么我无法预测单个病例?


慕田峪4524236
浏览 136回答 3
3回答

弑天下

数据集中的每个实例都有 13 个要素和 1 个标注。x = dfCardio.drop('cardio',axis = 1, inplace=False)代码中的这一行从数据中删除了我假设的标签列,只留下 (13) 个功能列。您尝试预测的特征向量的长度为 14 个元素。您只能预测长度为 13 个元素的特征向量,因为这是模型训练的基础。

叮当猫咪

我不同意其他人的观点,这不是包括目标的问题。我也有这个问题。我绕过它的唯一方法是输入.x所以:x2=x.iloc[0:3]然后为第一行指定一个新值:x2.iloc[0]=single  ypred=model.predict(x2)看看.ypred[0]或者尝试使用包含 2 个值的数据帧

慕的地6264312

如果您正在寻找一个真实快速的解决方案,您可以使用它import numpy as npimport pandas as pdsingle =  np.array([['69','1','151','22','37','0','65','140','90','2','1','0','0']])prediction = model.predict(single)print(prediction)
随时随地看视频慕课网APP

相关分类

Python
我要回答