У меня есть обучающий набор, состоящий из 39 соединений. Вот краткий код расчета LOO q2 для SVR:
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import make_scorer, r2_score
from sklearn.svm import SVR
clf_svr = SVR(C=1.0, gamma='scale', epsilon=0.1)
parameters = {'kernel':['linear'],
'gamma':['scale', 'auto'],
'C':[300000],
"epsilon":[0.001]}
grid_search_cv_clf = GridSearchCV(clf_svr, parameters, cv=len(X_train), n_jobs=-1)
grid_search_cv_clf.fit(X_train, y_train)
y_train_pred = grid_search_cv_clf.predict(X_train)
train_r2_LOO = r2_score(y_train, y_train_pred)
print("Train q^2 LOO:", train_r2_LOO)
но выдает предупреждение: C:\Users\plato\anaconda3\lib\site-packages\sklearn\model_selection_search.py:952: UserWarning: Один или несколько из результаты тестов не ограничены: [nan nan]
warnings.warn(
Тогда у меня есть Train q^2 LOO: 0.8450423173708722
Но обычный R^2 с cv=5 вывод R^2: 0,8450423173708722
Пожалуйста, помогите мне вычислить значение q2 для перекрестной проверки с исключением одного с помощью scikit-learn. Мне нужно вычислить q2 для SVR и RFR!
Я пытался заменить cv=len(X_train) на cv=LeaveOneOut, но это все равно не работает. Потом я нашел другой код.
# Initialize lists to store predicted and true values
predicted_values = []
true_values = []
# Perform Leave One Out cross validation
for i in range(len(X)):
X_train = np.delete(X, i, axis=0)
y_train = np.delete(y, i)
X_test = X.reshape(1, -1)
y_test = y
# Create and fit SVR model
svr = SVR()
svr.fit(X_train, y_train)
# Make prediction
y_pred = svr.predict(X_test)
# Store predicted and true values
predicted_values.append(y_pred[0])
true_values.append(y_test)
# Calculate R2
r2 = r2_score(true_values, predicted_values)
print("R2 score:", r2)
# Calculate Q2
mean_y = np.mean(true_values)
ss_tot = np.sum((true_values - mean_y) ** 2)
ss_res = np.sum((true_values - predicted_values) ** 2)
q2 = 1 - (ss_res / ss_tot)
print("Q2 score:", q2)
Подробнее здесь: https://stackoverflow.com/questions/785 ... qsar-model
Как рассчитать коэффициент перекрестной проверки Leave-One-Out q2 для модели QSAR с использованием scikit-learn SVR? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение