KNN预测python中的单个案例

2024-06-17 15:09:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用来自Kaggle-心血管疾病Dataset的数据集。 模型已经过训练,我想做的是标记单个输入(一行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)

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

如何修复单行的标签?为什么我不能预测一个病例


Tags: csv数据test目标formodelvaluetrain
3条回答

我不同意其他人的观点,这不是包括目标的问题。
我也有这个问题。我绕过它的唯一方法是输入x的一部分

因此:

x2=x.iloc[0:3]

然后为第一行指定一个新值:

x2.iloc[0]=single 

ypred=model.predict(x2)

再看看ypred[0]

或者尝试使用2个值的数据帧

如果你正在寻找一个真正快速的解决方案,你可以使用这个

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)

数据集中的每个实例都有13个特征和1个标签

x = dfCardio.drop('cardio',axis = 1, inplace=False)

代码中的这一行从数据中删除了我认为是label列的内容,只留下(13)个feature列

您试图预测的特征向量有14个元素长。您只能对13个元素长的特征向量进行预测,因为这是模型的训练基础

相关问题 更多 >