如何对空行进行机器学习预测?
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.
我的问题是:
- 为什么我不能为我的整个数据集创建一个包含预测的新列?
- 如何预测空白结果(需要预测),也就是说,我是否应该重新上传文件?假设我想预测以下内容:
要预测的行数:
如果我的问题很清楚,请告诉我!
您正在向使用 X
(8 个特征,因为 Outcome
已被删除以创建 y
),因此出现错误。
您需要做的是:
- 使用
X
而不是 data
获取预测
- 将预测附加到您的初始
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
我有一个数据集,根据指标显示一个人是否患有糖尿病,它看起来像这样(原始数据集):
我创建了一个简单的模型来预测最后一列(结果)。
#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.
我的问题是:
- 为什么我不能为我的整个数据集创建一个包含预测的新列?
- 如何预测空白结果(需要预测),也就是说,我是否应该重新上传文件?假设我想预测以下内容:
要预测的行数:
如果我的问题很清楚,请告诉我!
您正在向使用 X
(8 个特征,因为 Outcome
已被删除以创建 y
),因此出现错误。
您需要做的是:
- 使用
X
而不是data
获取预测
- 将预测附加到您的初始
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