我正在尝试导出我未正确分类的每个推文。
我正在使用下面的代码(在线获取并进行调整),该代码使用混淆矩阵来确定我对哪些推文进行了错误分类:
misclassified_svm = []
misclassified_svm_details = []
for predicted in event_id_df.event_id:
for actual in event_id_df.event_id:
if predicted != actual and conf_mat_svm[actual, predicted] >= 3:
misclassified_svm.append("'{}' predicted as '{}' : {} examples.".format(id_to_event[actual], id_to_event[predicted],
conf_mat_svm[actual,predicted]))
misclassified_svm_details.append(testing_data_svm.loc[testing_data_svm.index[(testing_data_svm.actual_event_id == actual)& (testing_data_svm.predicted_event_id == predicted)]][['actual_event_type', 'preprocessed']])
这将在列表 misclassified_svm 中填充有关错误分类的概述。可以在下面看到:
目的是在列表 misclassified_svm_details 中填充每个错误分类的tweet,因此我可以理解导致错误分类的功能。相反,它将创建一个数据帧列表。可以在下面看到:
我希望最终结果是我可以导出的变量,它包含列表 miclassified_svm_details 中每个数据框的每一行。
要清楚,我将使用不同的数据集运行此代码,因此我需要所提出的解决方案具有灵活性,并适应于列表中不同数量的数据框和每个数据框中不同数量的条目。 / p>
为了完整起见,这是我失败的尝试:
misclassified_svm_det_2 = []
for a in misclassified_svm_details:
for b in range(len(misclassified_svm_details)):
misclassified_svm_det_2.append(b)
这只会创建一个包含36个条目的列表,这些列表在0-5之间循环六次。
答案 0 :(得分:2)
与其将Dataframe附加到列表中,还可以从一开始就将misclassigied_svm_details`设置为DataFrame并将其生成的每个数据集附加到列表中。
因此您的代码将显示为:
misclassified_svm = []
misclassified_svm_details = pd.DataFrame(columns=['actual_event_type', 'preprocessed'])
for predicted in event_id_df.event_id:
for actual in event_id_df.event_id:
if predicted != actual and conf_mat_svm[actual, predicted] >= 3:
misclassified_svm.append("'{}' predicted as '{}' : {} examples.".format(id_to_event[actual], id_to_event[predicted],
conf_mat_svm[actual,predicted]))
misclassified_svm_details.append(testing_data_svm.loc[testing_data_svm.index[(testing_data_svm.actual_event_id == actual)& (testing_data_svm.predicted_event_id == predicted)]][['actual_event_type', 'preprocessed']])