我有一个数据集,我在其中通过假人将分类数据集转换为数字数据集,并运行简单的线性回归模型来预测因变量。我将 R 方调整为
0.66
。
现在我想用留一法交叉验证我的模型,想看看 LOOCV
调整后的 r 方,它是否与我的预交叉验证模型相似。
cv = LeaveOneOut()
data = pd.read_excel(r'C:/Users/LENOVO/Documents/Diwali_Impact_coding/Modelling/Model_Data.xlsx', usecols=['PMlog', 'Temp', 'RH', 'WSlog', 'Type', 'Popu', 'FRPlog', 'Region'], sheet_name='City_cook2')
data.dropna(subset=['PMlog', 'Temp', 'RH', 'WSlog'], inplace=True)
data_log1 = pd.get_dummies(data, columns=['Type', 'Region', 'Popu']) # all NUMERICAL FEATURES
X = data_log1.loc[:, data_log1.columns != 'PMlog'] # Indepenedent/Predictor Variables
y = data_log1.loc[:, 'PMlog'] # Dependent Variable
model_LR = LinearRegression()
model_LR.fit(X,y)
def adj_Rsqr(model_LR, X, y):
xx = 1 - (1 - model_LR.score(X, y)) * (len(y) - 1) / (len(y) - X.shape[1] - 1)
return xx
adj_Rsqr(model_LR,X,y) # 0.66
scores = cross_val_score(model_LR, X, y, scoring=adj_Rsqr, cv=cv, n_jobs=-1)
mean(scores)
我的分数值来了
nan
任何人都可以帮助我为什么它以 nan 的形式出现。另外,如果我使用评分作为 R2
那么它也会以 nan 的形式出现,但没有其他评分,例如绝对错误等。
谢谢你的帮助。