我正在训练和测试我的日期等于10与4个不同的模型。我想为每个模型导出的预测和更正的类别,为每个分裂。
这是我的代码和结果:
for train_index, test_index in kf.split(X, labels): print('TRAIN:', train_index, 'TEST:', test_index) X_train, X_val = X[train_index], X[test_index] y_train, y_val = labels[train_index], labels[test_index] model1 = LinearSVC() model2 = MultinomialNB() model3 = LogisticRegression() model4 = RandomForestClassifier() model1.fit(X_train, y_train) model2.fit(X_train, y_train) model3.fit(X_train, y_train) model4.fit(X_train, y_train) result1 = model1.predict(X_val) result2 = model2.predict(X_val) result3 = model3.predict(X_val) result4 = model4.predict(X_val) df = pd.DataFrame(data = {"id": X_val, "Prediction": y_val}) df.to_excel('result.xlsx')
到目前为止,我在下面有这个,但它只打印第一行(1-198),但我不明白导出,你能帮我吗
我有大约2000个句子。
回答开始:得票数 1在KFold == 10中设置K时,.split()方法将数据集拆分为10个部分。对于每次迭代,test_index将是第i个部分的索引,而train_index将是9个部分的其余部分。
在您的原始代码中,df显示每个迭代的测试集(X_val,Y_val) (而不是预测)。
我不确定您是否打算这样做,但如果您想要查看每个模型的预测,下面的代码就可以了:
df = pd.DataFrame(data={ "id": [], "ground_true": [], "original_sentence": [], "pred_model1": [], "pred_model2": [], "pred_model3": [], "pred_model4": []}) for train_index, test_index in kf.split(X, labels): print('TRAIN:', train_index,'TEST:', test_index) X_train, X_test = X[train_index], X[test_index] y_train, y_test = labels[train_index], labels[test_index] model1 = LinearSVC() model2 = MultinomialNB() model3 = LogisticRegression() model4 = RandomForestClassifier() model1.fit(X_train, y_train) model2.fit(X_train, y_train) model3.fit(X_train, y_train) model4.fit(X_train, y_train) result1 = model1.predict(X_val) result2 = model2.predict(X_val) result3 = model3.predict(X_val) result4 = model4.predict(X_val) temp_df = pd.DataFrame(data={ "id": X_val, "ground_true": y_val, "original_sentence": verbatim_train_remove_stop_words[test_index], "pred_model1": result1, "pred_model2": result2, "pred_model3": result3, "pred_model4": result4}) df = pd.concat([df, temp_df])总结
以上是真正的电脑专家为你收集整理的导出4个机器学习模型的预测时出错的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得真正的电脑专家网站内容还不错,欢迎将真正的电脑专家推荐给好友。
评论列表