使用基于训练数据集的模型预测测试数据?

时间:2017-08-14 19:05:00

标签: python scikit-learn data-analysis data-science

我是数据科学与分析的新手。 在Kaggle上经历了很多内核之后,我制作了一个预测房产价格的模型。我已经使用我的训练数据测试了这个模型,但现在我想在我的测试数据上运行它。我有一个test.csv文件,我想使用它。我怎么做? 我以前用我的训练数据集做了什么:

#loading my train dataset into python
train = pd.read_csv('/Users/sohaib/Downloads/test.csv')

#factors that will predict the price
train_pr = ['OverallQual','GrLivArea','GarageCars','TotalBsmtSF','FullBath','YearBuilt']

#set my model to DecisionTree
model = DecisionTreeRegressor()

#set prediction data to factors that will predict, and set target to SalePrice
prdata = train[train_pr]
target = train.SalePrice

#fitting model with prediction data and telling it my target
model.fit(prdata, target)

model.predict(prdata.head())

现在我要做的是,复制整个代码,然后更改" train"用"测试"和"预先"使用" testprdata",我认为它会起作用,但遗憾的是没有。我知道我做错了什么,不管它是什么。

2 个答案:

答案 0 :(得分:1)

您已使用经过训练的模型进行预测(model.predict(prdata.head()))。如果要使用该模型预测其他测试数据,只需提供其他测试数据而不是prdata.head()。例如,您可以使用该模型通过删除prdata来预测.head()的所有样本,train将DataFrame限制为前5行(但您只是使用此数据来训练模型;它只是一个示例)。

请记住,您仍然需要一个模型来进行预测。通常,您将训练模型,然后将其与测试数据一起呈现。将test的所有引用更改为test.csv将不起作用,因为除非您已将其从培训中保存并在呈现之前将其还原,否则您将无法根据测试数据进行预测它带有测试数据。

在您的代码中,当您将数据传递到model.fit方法时,您实际上正在使用res数据文件训练您的模型。通常,您不会使用用于测试的数据来训练您的模型。

答案 1 :(得分:1)

只要您以完全相同的方式处理列车和测试数据,predict函数将对任一数据集起作用。因此,您需要在火车上加载火车和测试集fit,在火车和测试中加载predict

另外,请注意您正在阅读的文件是test数据。假设您的文件名称正确,即使您将变量命名为train,您目前正在接受有关测试数据的培训。

#loading my train dataset into python
train = pd.read_csv('/Users/sohaib/Downloads/train.csv')
test = pd.read_csv('/Users/sohaib/Downloads/test.csv')

#factors that will predict the price
desired_factors = ['OverallQual','GrLivArea','GarageCars','TotalBsmtSF','FullBath','YearBuilt']

#set my model to DecisionTree
model = DecisionTreeRegressor()

#set prediction data to factors that will predict, and set target to SalePrice
train_data = train[desired_factors]
test_data = test[desired_factors]
target = train.SalePrice

#fitting model with prediction data and telling it my target
model.fit(train_data, target)

model.predict(test_data.head())