Предмет: Другие предметы,
автор: Аноним
Здравствуйте. В коде ошибка в строке grid_search.fit (X_train.values, y_train.values) Код написан на пайтон. Заранее огромное спасибо просто не понимаю. Вот весь код. import pandas as pd #Импорт библиотеки Pandas - для работы с датафреймами
import numpy as np #Импорт библиотеки NumPy - для работы с массивами
import matplotlib.pyplot as plt #Для работы с графиками
#Импорт модели обучения
from sklearn.linear_model import Ridge
#Импорт класса для решетчатого поиска с перекрестной валидацией
#И функции для разделения данных на наборы
from sklearn.model_selection import GridSearchCV,train_test_split
#Загружаем файл как объект DataFrame с помощью библиотеки Pandas
df = pd.read_csv("/content/DRUGS_exam_classification.csv", sep = ',',
index_col ='ChEMBL ID')
#Выбираем из них только те, что подходят под условия
filt=df.loc[(df['Heavy Atoms']>=12) & (df['Heavy Atoms']<=25)]
#Задаем целевое поле
y = df_filt['Molecular Species']
#Задаем поля дескрипторов
X = df_filt[['Molecular Weight','AlogP','Polar Surface Area','QED Weighted','CX LogP','CX LogD','Heavy Atoms']]
#Делим данные на обучающий и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X,y,random_state=42)
#Задаем варьирующийся параметр модели 'alpha'
param_grid = {'alpha': [0.01,0.1,1,10]}
#Настраиваем параметры поиска - саму модель, число блоков валидации - 10
#И указываем метрику R^2
grid_search = GridSearchCV(Ridge(random_state=42),param_grid,
cv=10, scoring='roc_auc')
#Обучаем модели на подготовленном тренировочном наборе
grid_search.fit (X_train.values, y_train.values)
#Оцениваем лучшую модель (она автоматически сохраняется в grid_search)
score = grid_search.score(X_test.values,y_test.values)
print(f'Параметры лучшей модели: {grid_search.best_params_}')
print(f'R^2 модели при кросс-валидации - {round(grid_search.best_score_,6)}')
print(f'R^2 модели на тестовом наборе - {round(score,6)}')
#Создаем список для значений коэффициентов при разных alpha
coefs=[]
#И список значений alpha
alphas=[0.01,0.1,1,10]
#Рассчитываем модель при разных альфа
for i in alphas:
ridge = Ridge(alpha=i)
ridge.fit(X_train.values, y_train.values)
#Заносим значения коэффициентов в список
coefs.append(ridge.coef_)
#Создаем область рисования
fig = plt.figure(figsize=[10,10])
#Для каждого из 6 дескрипторов
for i in range(1,7):
#Создаем subplot
fig.add_subplot(2,3,i)
#И строим значения коэффициента для каждого alpha
plt.plot(alphas,[coefs[0][i-1],coefs[1][i-1],coefs[2][i-1],coefs[3][i-1]])
#Подписываем оси и название
plt.xlabel('alpha')
plt.xscale('log')
plt.ylabel('Весовой коэффициент параметра')
plt.title(X.keys()[i-1])
#Делаем красиво
plt.tight_layout()
#Вводим дескрипторы молекулы для поиска
x_unknown = np.array([[280.45,63.22,0.12,1.45,1.28,19]])
#Используем метод predict для классификации молекулы
result=grid_search.predict(x_unknown)
print(f'AlogP целевой молекулы равен {round(result[0],3)}')
Ответы
Автор ответа:
0
Здравствуйте!
Ошибка в строке grid_search.fit(X_train.values, y_train.values) может возникнуть, если X_train и y_train имеют разный размер. Пожалуйста, проверьте размеры X_train и y_train с помощью print(X_train.shape) и print(y_train.shape). Если их размеры отличаются, убедитесь, что данные в df_filt были правильно отфильтрованы, чтобы они соответствовали тому, что ожидается.
Если размеры X_train и y_train одинаковы, то попробуйте использовать X_train и y_train напрямую, без использования .values, например, grid_search.fit(X_train, y_train).
Если ошибка не исчезает, пожалуйста, уточните ее текст, чтобы я мог помочь вам более точно.
Ошибка в строке grid_search.fit(X_train.values, y_train.values) может возникнуть, если X_train и y_train имеют разный размер. Пожалуйста, проверьте размеры X_train и y_train с помощью print(X_train.shape) и print(y_train.shape). Если их размеры отличаются, убедитесь, что данные в df_filt были правильно отфильтрованы, чтобы они соответствовали тому, что ожидается.
Если размеры X_train и y_train одинаковы, то попробуйте использовать X_train и y_train напрямую, без использования .values, например, grid_search.fit(X_train, y_train).
Если ошибка не исчезает, пожалуйста, уточните ее текст, чтобы я мог помочь вам более точно.
Автор ответа:
0
Проблема в том, что в строке y = df_filt['Molecular Species'] использовано неправильное имя переменной filt, которая была определена на предыдущей строке. Исправьте ее на y = filt['Molecular Species'] и попробуйте снова.
Также, если вы получите другие ошибки, попробуйте установить необходимые библиотеки (например, scikit-learn) и убедитесь, что все импортированные библиотеки доступны.
Похожие вопросы
Предмет: Английский язык,
автор: kanykejkursanova80
Предмет: Математика,
автор: Dianadinaranurbek
Предмет: Українська література,
автор: albinaerdenko
Предмет: Химия,
автор: yanakkk654
Предмет: Математика,
автор: galkinov
ты использовал фильтрованный датафрейм filt, но вместо него передал в модель исходный датафрейм df