如何对空行进行机器学习预测?

How to make machine learning predictions for empty rows?

我有一个数据集,根据指标显示一个人是否患有糖尿病,它看起来像这样(原始数据集):

我创建了一个简单的模型来预测最后一列(结果)。

#Libraries imported
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

#Dataset imported
data = pd.read_csv('diabetes.csv')
#Assign X and y
X = data.iloc[:,:-1].values
y = data.iloc[:,-1].values

#Data preprocessed
sc = StandardScaler()
X = sc.fit_transform(X)

#Dataset split between train and test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

model = LogisticRegression()
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

# Predicting the results for the whole dataset
y_pred2 = model.predict(data)

#Add prediction column to original dataset
data['prediction'] = y_pred2

但是,我收到以下错误:ValueError: X has 9 features per sample; expecting 8.

我的问题是:

  1. 为什么我不能为我的整个数据集创建一个包含预测的新列?
  2. 如何预测空白结果(需要预测),也就是说,我是否应该重新上传文件?假设我想预测以下内容:

要预测的行数:

如果我的问题很清楚,请告诉我!

您正在向使用 X(8 个特征,因为 Outcome 已被删除以创建 y),因此出现错误。

您需要做的是:

  1. 使用 X 而不是 data
  2. 获取预测
  3. 将预测附加到您的初始 data

即:

y_pred2 = model.predict(X)
data['prediction'] = y_pred2

请记住,这意味着您的 prediction 变量将来自已用于模型拟合的数据(即 X_train 部分)以及未被模型拟合的数据训练期间的模型(X_test 部分)。不太确定你的最终 objective 是什么(这也不是问题所在),但从 ML 的角度来看,这是一种相当不寻常的情况。

如果你有一个新的数据集data_new来预测结果,你可以用类似的方式进行;始终假设 X_new 具有与 X 相同的特征(即再次删除 Outcome 列,就像您对 X 所做的那样):

y_new = model.predict(X_new)
data_new['prediction'] = y_new