【问题标题】:How to make machine learning predictions for empty rows?如何对空行进行机器学习预测?
【发布时间】:2020-10-07 23:47:16
【问题描述】:

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

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

#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. 如何对空白结果(需要预测的)进行预测,也就是说,我应该重新上传文件吗?假设我想预测以下内容:

要预测的行:

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

【问题讨论】:

  • 您尝试根据outcome 对某些行进行预测。您的模型没有为此训练(outcome 不是特征,它是预测以及训练集的标签)。从倒数第二行的data 中取出outcome 列以获得所需的输出。
  • 你的第二个问题,你的意思是你的原始训练数据集没有结果值吗?

标签: python machine-learning scikit-learn prediction


【解决方案1】:

您将 data(具有所有 9 个初始特征)提供给使用 X(8 个特征,因为已删除 Outcome 以创建 y)训练的模型,因此出现错误。

你需要做的是:

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

即:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 2012-05-30
    • 1970-01-01
    • 2020-05-06
    • 2017-05-03
    • 1970-01-01
    • 2017-06-05
    • 2020-03-24
    • 1970-01-01
    相关资源
    最近更新 更多