KNN - 预测 python 中的单个案例
KNN - Predict a single case in python
我正在使用来自 Kaggle - Cardiovascular Disease 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))
机器学习训练好了,我想做的是预测这一行的标签:
['69','1','151','22','37','0','65','140','90','2','1','0','0','1']
到 return 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)
但它给出错误:查询数据维度必须匹配训练数据维度
如何修复单行的标签?为什么我无法预测单个病例?
数据集中的每个实例都有 13 个特征和 1 个标签。
x = dfCardio.drop('cardio',axis = 1, inplace=False)
代码中的这一行删除了我认为是数据中的标签列,只留下 (13) 个特征列。
您尝试预测的特征向量有 14 个元素长。您只能预测 13 个元素长的特征向量,因为这是训练模型的基础。
如果您正在寻找一个真正快速的解决方案,您可以使用这个
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)
我不同意其他人的意见,这不是包含目标的问题。
我也有这个问题。我绕过它的唯一方法是输入 x
.
的一部分
所以:
x2=x.iloc[0:3]
然后给第一行一个新值:
x2.iloc[0]=single
ypred=model.predict(x2)
然后看看 ypred[0]
。
或尝试使用具有 2 个值的数据框
我正在使用来自 Kaggle - Cardiovascular Disease 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))
机器学习训练好了,我想做的是预测这一行的标签:
['69','1','151','22','37','0','65','140','90','2','1','0','0','1']
到 return 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)
但它给出错误:查询数据维度必须匹配训练数据维度
如何修复单行的标签?为什么我无法预测单个病例?
数据集中的每个实例都有 13 个特征和 1 个标签。
x = dfCardio.drop('cardio',axis = 1, inplace=False)
代码中的这一行删除了我认为是数据中的标签列,只留下 (13) 个特征列。
您尝试预测的特征向量有 14 个元素长。您只能预测 13 个元素长的特征向量,因为这是训练模型的基础。
如果您正在寻找一个真正快速的解决方案,您可以使用这个
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)
我不同意其他人的意见,这不是包含目标的问题。
我也有这个问题。我绕过它的唯一方法是输入 x
.
所以:
x2=x.iloc[0:3]
然后给第一行一个新值:
x2.iloc[0]=single
ypred=model.predict(x2)
然后看看 ypred[0]
。
或尝试使用具有 2 个值的数据框