Вот мой код:
import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline
import matplotlib.pyplot as plt
Porphs_data = pd.read_excel('I:\\Porphyrins\\26_4-Descs_varI_22-3-20.xlsx', index_col=0)
y = Porphs_data.LogFi
X = Porphs_data.drop(['LogFi'], axis=1)
# Select upper triangle of correlation matrix
upper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(np.bool))
# Find index of feature columns with correlation greater than 0.95
to_drop = [column for column in upper.columns if any(upper[column] > 0.95)]
# Drop features
X = X.drop(Porphs_data[to_drop], axis=1)
X_train = X.drop(["(p-Br)4-TPP", "5,10-NO2-etioporphyrin I", "Deuteroporphyrin-IX-DME",
"N-CH3-Octaethylporphyrin", "Porphine"], axis=0)
y_train = y.drop(["(p-Br)4-TPP", "5,10-NO2-etioporphyrin I", "Deuteroporphyrin-IX-DME",
"N-CH3-Octaethylporphyrin", "Porphine"], axis=0)
X_test = X.loc[["(p-Br)4-TPP", "5,15-NO2-etioporphyrin I", "Deuteroporphyrin-IX-DME",
"N-CH3-Octaethylporphyrin", "Porphine"]]
y_test = y.loc[["(p-Br)4-TPP", "5,10-NO2-etioporphyrin I", "Deuteroporphyrin-IX-DME",
"N-CH3-Octaethylporphyrin", "Porphine"]]
from sklearn import linear_model
lm = linear_model.LinearRegression()
lm.fit(X_train, y_train)
Получаем коэффициент детерминации:
from sklearn.metrics import r2_score
y_pred = lm.predict(X_train)
r2_score(y_train, y_pred)
Теперь я пытаюсь получить q2 для перекрестной проверки с пропуском один раз:
from sklearn.model_selection import LeaveOneOut
from sklearn.linear_model import LinearRegression
loo_lm = LinearRegression(lm, LeaveOneOut())
loo_lm.fit(X_train, y_train)
loo_lm.score(X_train, y_train)
Но значение q2, которое я получаю, имеет то же значение, что и коэффициент определения обучающего набора.
Вот еще одна попытка получить q2:
from sklearn.model_selection import cross_val_score
cvs=cross_val_score(lm, X_train, y_train, cv=21)
cvs
mean_cross_val_score = cvs.mean()
mean_cross_val_score
но выдает ошибку: UndefinedMetricWarning: оценка R ^ 2 не точно определена с менее чем двумя выборками.
Помогите, пожалуйста, подсчитать значение q2 для перекрестной проверки с пропуском одного!