Как рассчитать коэффициент перекрестной проверки Leave-One-Out q2 для модели QSAR с использованием scikit-learn SVR?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как рассчитать коэффициент перекрестной проверки Leave-One-Out q2 для модели QSAR с использованием scikit-learn SVR?

Сообщение Anonymous »

У меня есть обучающий набор, состоящий из 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Sklearn и Cross_val_scores: Можем ли мы использовать его для перекрестной проверки Leave-One-Out?
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Пример вложенной перекрестной проверки в Scikit-learn
    Anonymous » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Пример вложенной перекрестной проверки в Scikit-learn
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Матрица путаницы для 10-кратной перекрестной проверки в Scikit Learn
    Anonymous » » в форуме Python
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Вложенный пример перекрестной проверки на Scikit-learn
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»