Python中如何将Naive Bayes、SVM、RF、DT分类预测结果存为指定CSV
解决方案:将多分类器预测结果保存为CSV文件
首先,我们需要把样本标识、真实值、各个分类器的预测值整合到一个结构化表格里,再导出成CSV文件。下面是针对你提到的Naive Bayes、SVM、RF、DT四个分类器的具体实现步骤:
1. 准备必要工具
先确保你安装了pandas(用来处理表格数据),如果没装可以在终端执行:
pip install pandas
然后导入需要的模块:
import pandas as pd # 导入你用到的分类器(根据实际使用的子类调整,比如朴素贝叶斯也可能用MultinomialNB) from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC from sklearn.ensemble import RandomForestClassifier from sklearn.tree import DecisionTreeClassifier
2. 假设你已完成模型训练和数据准备
这里默认你已经做好了数据预处理、模型训练的工作,比如:
# 示例:X是所有样本的特征矩阵,y是对应真实标签 # 训练各个分类器 nb_clf = GaussianNB().fit(X_train, y_train) svm_clf = SVC().fit(X_train, y_train) rf_clf = RandomForestClassifier().fit(X_train, y_train) dt_clf = DecisionTreeClassifier().fit(X_train, y_train) # 获取所有样本的预测结果(如果只需要测试集,就把X换成X_test,y换成y_test) y_pred_nb = nb_clf.predict(X) y_pred_svm = svm_clf.predict(X) y_pred_rf = rf_clf.predict(X) y_pred_dt = dt_clf.predict(X)
3. 构建结果表格
用pandas.DataFrame来组织数据,确保列名清晰易懂:
# 生成样本标识:可以用从1开始的序号,也可以用数据集自带的样本ID列 sample_ids = range(1, len(y)+1) # 若X是带自定义索引的DataFrame,可换成X.index # 把所有数据整理成字典,每个键对应一列 result_data = { 'Sample': sample_ids, 'Actual value': y, 'Naive Bayes Prediction': y_pred_nb, 'SVM Prediction': y_pred_svm, 'Random Forest Prediction': y_pred_rf, 'Decision Tree Prediction': y_pred_dt } # 转换成DataFrame格式 result_df = pd.DataFrame(result_data)
4. 导出为CSV文件
用to_csv方法保存,设置index=False避免把DataFrame的默认索引写入文件:
# 保存到当前目录下的classifier_predictions.csv,可自定义路径和文件名 result_df.to_csv('classifier_predictions.csv', index=False, encoding='utf-8')
小提示
- 如果你的样本有专属ID(比如数据集里的
sample_id列),直接把sample_ids换成该列数据即可,不用生成序号。 - 要是你需要保存分类器的预测概率而非类别标签,可以用
predict_proba()方法替换predict(),然后把概率值存入表格(注意概率是二维数组,需要处理成单列或多列)。
内容的提问来源于stack exchange,提问作者Thyagaraj Gopi
相关产品推荐
相关产品推荐

