Python 将预测结果合并到原始数据帧?

Python 将预测结果合并到原始数据帧?,python,pandas,machine-learning,scikit-learn,prediction,Python,Pandas,Machine Learning,Scikit Learn,Prediction,我已经完成了一个机器学习算法,可以从文本中分类类别。我已经完成了99%,但是我现在知道如何将我的预测结果合并回原始数据帧,以查看我开始使用的内容和预测内容的打印视图 下面是我的代码。 这是我添加的新数据,用于预测与数组长度相同的数据 (447,) (168,) (447,) (168,) 数组([3,3,19,18,5,10,10,5,19,3,3,3,5,3,3,3, 9, 19, 5, 5, 10, 9, 5, 18, 19, 9, 9, 19, 19, 18, 18, 18,

我已经完成了一个机器学习算法,可以从文本中分类类别。我已经完成了99%,但是我现在知道如何将我的预测结果合并回原始数据帧,以查看我开始使用的内容和预测内容的打印视图

下面是我的代码。 这是我添加的新数据,用于预测与数组长度相同的数据 (447,) (168,) (447,) (168,)

数组([3,3,19,18,5,10,10,5,19,3,3,3,5,3,3,3, 9, 19, 5, 5, 10, 9, 5, 18, 19, 9, 9, 19, 19, 18, 18, 18, 4, 18, 3, 9, 18, 19, 19, 18, 19, 5, 19, 19, 3, 3, 18, 18, 5, 18, 3, 4, 5, 6, 4, 5, 19, 19, 5, 5, 19, 19, 4, 5, 18, 5, 5, 19, 5, 18, 5, 19, 18, 19, 5, 7, 5, 9, 9, 9, 9, 10, 9, 9, 5, 5, 5, 5, 3, 18, 4, 9, 5, 3, 6, 9, 18, 7, 5, 9, 5, 5, 19, 5, 5, 19, 5, 6, 5, 5, 6, 9, 21, 10, 9, 18, 9, 9, 3, 18, 5, 6, 18, 6, 3, 6, 5, 18, 6, 5, 18, 5, 6, 7, 7, 5, 7, 19, 18, 6, 5, 5, 5, 5, 5, 19, 16, 5, 19, 5, 5, 5, 5, 19, 5, 7, 19, 6, 7, 3, 18, 18, 18, 6, 19, 19, 7], dtype=int64)

打印(数据输出)


我希望这有助于我尽可能清楚地表达我认为由于您的预测只是一个数组,您最好使用:

df['predictions'] = y_pred_class

我认为,由于您的预测只是一个数组,您最好使用:

df['predictions'] = y_pred_class

我认为您的问题在于您的预测数组比原始的
df
短,因为您将其分为训练集和测试集

您的
X\u测试
数组定义为
newdata.question[:50]
,这似乎是该列的最后50行

我要做的是创建一个与预测数组长度相同的预测数组。在您的情况下,您需要的行是原始df的最后50行

prediction_df = df.iloc[:50]
prediction_df['predictions'] = y_pred_class

只需确保您的预测行与您用来进行X测试的行匹配即可

我认为您的问题在于您的预测数组比原始的
df
更短,因为您将其分为训练集和测试集

您的
X\u测试
数组定义为
newdata.question[:50]
,这似乎是该列的最后50行

我要做的是创建一个与预测数组长度相同的预测数组。在您的情况下,您需要的行是原始df的最后50行

prediction_df = df.iloc[:50]
prediction_df['predictions'] = y_pred_class

只需确保您的预测行与您用来进行X测试的行匹配即可

错误是什么?这通常有助于我们诊断您的问题。请尽量减少发布的代码;可以说,所有这些
print
语句都与您的问题无关(已编辑和删除)…它产生了一条消息“ValueError:值的长度与索引的长度不匹配”,因此我将您的建议更改为panda系列
df['prediction']=pd.series(y_pred_类)
这允许我将序列与数据帧合并
dfout=pd.merge(dfpred,df['prediction'].dropna()。to_frame(),how='left',left_index=True,right_index=True)
请告诉我您的想法和错误是什么?这通常有助于我们诊断您的问题。请尽量减少发布的代码;可以说,所有这些
print
语句都与您的问题无关(已编辑和删除)…它产生了一条消息“ValueError:值的长度与索引的长度不匹配”,因此我将您的建议更改为panda系列
df['prediction']=pd.series(y_pred_类)
这允许我将序列与数据帧合并
dfout=pd.merge(dfpred,df['prediction'].dropna()。to_frame(),how='left',left_index=True,right_index=True)
请告诉我您的想法,它会出现这样的消息“ValueError:值的长度与索引的长度不匹配”因此,我所做的是将您的建议更改为panda系列
df['prediction']=pd.series(y_pred_class)
,然后允许我将该系列与数据帧合并
dfout=pd.merge(dfpred,df['prediction'].dropna().to_frame(),how='left',left_index=True,right_index=True)
请让我知道您的想法,这条消息“ValueError:值的长度与索引的长度不匹配”,因此我将您的建议更改为熊猫系列
df['prediction']=pd.series(y\u pred\u class)
这允许我将该系列与数据帧合并
dfout=pd.merge(dfpred,df['prediction'].dropna().to_frame(),how='left',left_index=True,right_index=True)
请告诉我你的想法谢谢!!是的,我知道了。我想知道我的新文章是否正确。请阅读修订后的文章和我的其他评论!!谢谢!!是的,我知道了。我想知道我的新文章是否正确。请阅读修订后的文章和我的其他评论!!
# calculate predicted probabilities for X_test_dtm (well calibrated)
y_pred_prob_new = logreg.predict_proba(X_test_dtm_new)[:, 1]
y_pred_prob_new

df['prediction'] = pd.Series(y_pred_class_new)

dfout = pd.merge(dfpred,df['prediction'].dropna() .to_frame(),how = 'left',left_index = True,   right_index = True)
df['predictions'] = y_pred_class
prediction_df = df.iloc[:50]
prediction_df['predictions'] = y_pred_class