如何解决我正在尝试在我的随机森林回归中使用 cross_val_score 但分数很奇怪
我在 python 中使用随机森林来解决我的回归问题。我有相当大的数据(5 个特征,1 个目标,9387 个数据集)。
起初,为了获得准确度,我使用了带有 train_test_split
和 metrics.r2_score
的简单 RF 代码,结果在训练集和测试集上的得分均为 0.9999。后来,我尝试使用 cross_val_score
和 5 折来执行交叉验证。这给了我 5 个数字(见下文),我发现其中一些作为交叉验证的分数很奇怪。
[-1.44202691 0.25338018 0.70433516 0.98278159 -3.34943088]
是否真的有可能出现负准确率,或者我的编码方式有什么问题? 我仍然是编码和 python 的新手,所以请耐心等待。你可以在下面看到我的代码。
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor
import csv
from sklearn.model_selection import cross_val_score,train_test_split
from statistics import mean
data = pd.read_csv("Size1.csv",sep=",")
data = data[["X","Y","Z","Tilt_C","Tilt_A","Radiation_C"]]
predict = "Radiation_C"
A = np.array(data.drop([predict],1))
B = np.array(data[predict])
# Split data for Train and Test
a_train,a_test,b_train,b_test = train_test_split(A,B,test_size=0.25)
# Fitting Random Forest Regression to the dataset
# create regressor object
rf = RandomForestRegressor(random_state=42)
# fit the regressor with A and B data
rf.fit(a_train,b_train)
# Calculate accuracy
b_pred = rf.predict(a_test)
print('R^2:',metrics.r2_score(b_test,b_pred))
# Perform Cross Validation & scores
scores = cross_val_score(rf,A,cv=5)
print(scores)
print("Mean: ",mean(scores))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。