Python 如何使用已经测试过的模型预测新数据的输出?

Python 如何使用已经测试过的模型预测新数据的输出?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我对使用Python进行数据分析非常陌生。我尝试了我为逻辑回归学习的代码 我需要以下方面的帮助 代码预测到了,我现在看到了最后一行的准确度。但是我如何才能将预测列与其他列一起输出呢 现在我使用的数据是2016年的数据。我有2017年的新数据。现在,我应该做些什么来预测整个2017年的数据。很抱歉,我不知道如何使用这个模型来预测收到的新数据 编码:utf-8 逻辑回归-点击预测 在这个用例中,我们将使用一个虚假的广告数据集,指示特定的互联网用户是否点击了公司网站上的广告。 有了这些数据,我们将尝试

我对使用Python进行数据分析非常陌生。我尝试了我为逻辑回归学习的代码

我需要以下方面的帮助

代码预测到了,我现在看到了最后一行的准确度。但是我如何才能将预测列与其他列一起输出呢

现在我使用的数据是2016年的数据。我有2017年的新数据。现在,我应该做些什么来预测整个2017年的数据。很抱歉,我不知道如何使用这个模型来预测收到的新数据

编码:utf-8 逻辑回归-点击预测 在这个用例中,我们将使用一个虚假的广告数据集,指示特定的互联网用户是否点击了公司网站上的广告。 有了这些数据,我们将尝试创建一个模型,预测他们是否会根据该用户的特征点击广告。 此数据集包含以下功能: *“每天花费在站点上的时间”:消费者在站点上的时间(分钟) *“年龄”:顾客年龄(以年为单位) *“地区收入”:消费者地理区域的平均收入 *“每日互联网使用”:消费者每天平均上网分钟数 *“广告主题行”:广告标题 *“城市”:消费者之城 *“男性”:消费者是否为男性 *“国家”:消费者的国家 *“时间戳”:消费者点击广告或关闭窗口的时间 *“点击广告”:0或1表示点击广告 导入库 作为pd进口熊猫 将numpy作为np导入 将matplotlib.pyplot作为plt导入 导入seaborn作为sns 获取_ipython.magicu'matplotlib inline' 获取数据 读入advision.csv文件并将其设置为名为ad_data的数据框。 ad_data=pd.read_csv'D:\\DS\\Logistic回归算法\\Python\\advisting.csv' ad_数据头 在ad_数据上使用信息和描述 ad_data.info ad_data.description 探索性数据分析 让我们使用seaborn来探索数据! 尝试重新创建下图所示的绘图! 创建一个年龄直方图** sns.set_风格的“白色网格” ad_数据['Age']。组别=30 plt.xlabel'Age' 创建一个显示区域收入与年龄的连接图。 sns.JointPlot X='Age',y='Area Income',data=ad\U数据 创建“每天花费在网站上的时间”与“每天使用互联网”的联合批次 sns.jointplotx='每日在网站上花费的时间',y='每日互联网使用量',data=ad\u数据,color='green' 最后,使用“点击广告”列功能定义的色调创建一个配对图** sns.pairplotad_数据,色调='点击广告',调色板='bwr' 对数几率回归 现在是时候进行列车测试分离,并训练我们的模型! 你可以在这里自由选择你想训练的栏目! 使用train_test_Split将数据拆分为训练集和测试集 从sklearn.model\u选择导入列车\u测试\u拆分 X=ad_数据[[‘每天在网站上花费的时间’、‘年龄’、‘地区收入’、‘每天互联网使用量’、‘男性’]] y=ad_数据['点击ad'] X_序列,X_测试,y_序列,y_测试=序列测试分割X,y,测试大小=0.22,随机状态=42 在训练集上训练并拟合逻辑回归模型。 从sklearn.linear_模型导入逻辑回归 logmodel=LogisticRegressionsolver='lbfgs' logmodel.fitX_火车,y_火车 预测和评价 现在预测测试数据的值。 预测=logmodel.predictX\u测试 为模型创建分类报告。 从sklearn.metrics导入分类报告 印刷品分类、报告、测试、预测 prediction=pd.DataFramepredictions,columns=['predictions'].\u csv'D:\\DS\\prediction.csv' 代码预测到了,我现在看到了最后一行的准确度。但是我如何才能将预测列与其他列一起输出呢

我想你想要这样的东西:

prediction = pd.DataFrame.from_dict({'x_test': X_test, 'y_test': y_test,'predictions': predictions}).to_csv('D:\\DS\\prediction.csv')
现在我使用的数据是2016年的数据。我有2017年的新数据。现在,我应该做些什么来预测整个2017年的数据。很抱歉,我不知道如何使用这个模型来预测收到的新数据

对于这个方法,您只需要将新数据传递给predict方法,因为您的模型已经经过训练,可以使用看不见的数据进行预测。因此类似于以下内容:

x_data_2017 = #your new data for 2017
predictions_2017 = logmodel.predict(x_data_2017)

对第一个问题的答复:

ad_data['predictions'] = predictions
print(ad_data.head())
data_2017 = pd.read_csv(data_path)
test_predictions = logmodel.predict(data_2017[['Daily Time Spent on Site', 'Age', 'Area Income','Daily Internet Usage', 'Male']])
只需在原始数据集中添加另一个名为“预测”的列

对第二个问题的答复:

ad_data['predictions'] = predictions
print(ad_data.head())
data_2017 = pd.read_csv(data_path)
test_predictions = logmodel.predict(data_2017[['Daily Time Spent on Site', 'Age', 'Area Income','Daily Internet Usage', 'Male']])
仅当2017年的测试数据列与2016年用于培训的数据列同名时,此功能才有效

编辑

添加预测并导出

data_2017["predictions"] = test_predictions

data_2017.to_csv(path)

当我运行第一个代码时,出现以下错误。ValueError:数组长度220与索引长度1000Oh my bad可能是错误的,我假设所有列中的数据具有相同的长度,否则DataFrame.from_dict将返回该错误。我已经编辑了我的答案。谢谢你的及时回复。仍然有一些其他错误,我无法理解。文件C:\Users\kumarv3\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\core\internal\
managers.py,第1691行,在construction_error passed中,隐含的ValueError:传递值的形状是5,3,索引暗示220,3,没有更多的背景,也看不清代码,但对我来说,错误似乎是在预测中,而不是在数据帧的创建中。您用于预测X_测试的前一个数据集的大小是否可能为220,3,而新的数据集的大小是否为5,3?如果这是差异的话,也许尝试使用相同大小的数据集会有所帮助。我尝试过,但不确定如何找到预测的行数。我设法找到了x_测试行计数,它是220。但是无法找到预测的行数我预测了新数据,但是现在应该如何将结果与其他列一起导出。新数据没有预测列。因此,我们必须使用新的数据列+预测列导出结果。。请help@Vijay请查收