Я пытаюсь сравнить RMSE, который у меня есть, от выполнения множественной линейной регрессии на полном наборе данных до 10-кратной перекрестной проверки с использованием модуля KFold в scikit learn. Я нашел какой-то код, который я пытался адаптировать, но я не могу заставить его работать (и я подозреваю, что он вообще никогда не работал.
TIA для любой помощи!
Вот мой линейныйфункция регрессии
def standRegres(xArr,yArr):
xMat = np.mat(xArr); yMat = np.mat(yArr).T
xTx = xMat.T*xMat
if np.linalg.det(xTx) == 0.0:
print("This matrix is singular, cannot do inverse")
return
ws = xTx.I * (xMat.T*yMat)
return ws
## I run it on my matrix ("comm_df") and my dependent var (comm_target)
## Calculate RMSE (omitted some code)
initial_regress_RMSE = np.sqrt(np.mean((yHat_array - comm_target_array)**2)
## Now trying to get RMSE after training model through 10-fold cross validation
from sklearn.model_selection import KFold
from sklearn.linear_model import LinearRegression
kf = KFold(n_splits=10)
xval_err = 0
for train, test in kf:
linreg.fit(comm_df,comm_target)
p = linreg.predict(comm_df)
e = p-comm_target
xval_err += np.sqrt(np.dot(e,e)/len(comm_df))
rmse_10cv = xval_err/10
Я получаю сообщение о том, что объект kfold не повторяется