【发布时间】:2018-05-10 11:21:30
【问题描述】:
如果我有以下数据,test_df['review_id'],其中包含数据框的 id。我需要将它们中的每一个与其他数组中的数据配对。我将有如下代码。
def classify_nb_report(X_train_vectorized, y_train, X_test_vectorized, y_test):
clf = MultinomialNB()
# TRAIN THE CLASSIFIER WITH AVAILABLE TRAINING DATA
clf.fit(X_train_vectorized, y_train)
y_pred_class = clf.predict(X_test_vectorized)
return y_pred_class
for i in range(0, n_loop):
train_df, test_df = train_test_split(df, test_size=0.3)
....
nb_y = classify_nb_report(X_train_vectorized, y_train, X_test_vectorized, y_test)
正如您在上面看到的,在每次迭代中,我都会得到一组新的nb_y,它是一个 numpy 数组。我还将拥有不同的 test_df 和 train_df 集(由上面的函数随机选择)。我想将每次迭代中 nb_y 的每个值与匹配 test_df['review_id'] 的 id 配对。
通过下面的代码,我可以得到test_df 的id 和nb_y 的值。
for f, b in zip(test_df['review_id'], nb_y):
print(f, b)
结果:
17377 5.0
18505 5.0
24825 1.0
16032 5.0
23721 1.0
18008 5.0
现在,我想要的是,根据上面的结果,我将下一次迭代中 nb_y 的值附加到它们对应的 id 中。
我希望这不会太令人困惑,如果我的问题不够清楚,我会尝试扩展更多。提前致谢。
【问题讨论】:
-
我认为您可以使用列表字典来解决您的问题。键是 id,列表将包括所有 nb_y 值。我不确定这是否是您想要的,或者我所说的是否清楚。如果需要,我可以稍后写一个详细的答案。
-
@MattSt 是的,我也在考虑使用字典。但是在每次迭代中,总会有新值从
nb_y添加到相应的 id。而且我不确定如何在每个循环中修改字典。 -
如果 id 已经在 dictionary.keys() 中,你应该附加到字典中。否则,您应该添加一个包含第一个 nb_y 元素的列表(例如,dictionary[id] = [nb_y])。我可以在答案中为您编写代码,但这是您想要的吗?我不清楚。
-
@MattSt 我在
test_df['review_id']中有ID,正如我在原帖中提到的那样。没问题,把代码贴出来,我会看到的。