我有大约1.3k的叶片温度样本,我试图用大气变量,如空气温度、太阳辐射、风和湿度来预测这个温度。在
我从一个简单的多元线性回归模型开始,但是我想在准确度方面提高一个档次,所以我决定尝试使用leave one out cross validation方法,以获得最佳的模型输出。我最终会收集系数并截取,以便以后使用这个模型。在
据我所知,交叉验证有两个目的。第一个似乎是比较你的模型与其他模型的准确性,并在经过大量的训练数据后决定哪一个是最好的。在
第二个目的(也是我正在尝试使用的)是您可以使用交叉验证来提高单个模型的准确性。换句话说,我尝试构建的最终模型是在考虑了所有可能的训练集之后构建的。我觉得第二个目的我可能都错了。在
总之,受我所见(最显著的是this和this)的启发,我开发了以下代码:from sklearn.linear_model import LinearRegression
from sklearn.model_selection import LeaveOneOut
#Leave ont out cross validation (LOOCV)
#Y_data and X_data are both pandas df
loo = LeaveOneOut()
loo.get_n_splits(X_data)
ytests = []
ypreds = []
All_coef = list()
All_intercept = list()
for train_index, test_index in loo.split(X_data):
X_train, X_test = X_data.iloc[train_