Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Регрессия, пайтон, прошу помощь

ильгиз сиразеев Знаток (336), на голосовании 2 дня назад
 import pandas as pd 
import numpy as np
df = pd.read_csv("/kaggle/input/linear-regression-academic-mehmat/diamonds_test.csv")
df_prices = pd.read_csv('/kaggle/input/linear-regression-academic-mehmat/sample_submission.csv')
x = df[['carat','depth','table','x','y','z']]
y = df_prices['price']

from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(x,y,
test_size=0.3,
random_state=42)

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, Y_train)
Y_pred = model.predict(X_test)
print(Y_pred[:10])

from sklearn.metrics import mean_squared_error
print('RMSE', mean_squared_error(Y_test, Y_pred))

from sklearn.metrics import r2_score
print('R2', np.round(r2_score(Y_test, Y_pred)))
Кто разбирается сразу понял, что пытаюсь обучить машину прогнозировать цену бриллиантов. Что-то да выдает и прогнозирует, но когда пытался найти среднеквадратичное отклонение и коэффициент детерминации, то выдает уж слишком грустные значения: 1136193 и 0. Такое ощущение, будто бы она ошибается. И ещё, обычно я писал root_mean_squared_error, но в Kaggle такая запись выдает ошибку.

Скинул бы csv файлики, но не умею(
Голосование за лучший ответ
vk.com/mexahuk Мыслитель (6108) 1 месяц назад
Понятно, что вы пытаетесь построить модель линейной регрессии для прогнозирования цен на бриллианты, но полученные результаты, как вы говорите, не очень хорошие. Давайте разберемся с проблемами.

Проблема с данными:

Проверьте, правильно ли загружены данные. Возможно, в df_prices содержатся не те цены, что ожидаются, или данные имеют пропуски.
Проверьте на наличие пропущенных значений в x с помощью df.isnull().sum().
Убедитесь, что в df_prices индексы совпадают с df.
Масштабирование данных:

Возможно, ваши признаки имеют разные масштабы. Попробуйте стандартизировать или нормализовать данные с помощью StandardScaler или MinMaxScaler из sklearn.preprocessing.
python
Копировать код
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_train_scaled = scaler.fit _transform(X_train)
X_test_scaled = scaler.transform(X_test)

model.fit (X_train_scaled, Y_train)
Y_pred = model.predict(X_test_scaled)
Ошибка в метриках:

Вы правильно используете mean_squared_error, но RMSE — это корень из MSE. Вы можете вычислить его так:
python
Копировать код
rmse = np.sqrt(mean_squared_error(Y_test, Y_pred))
print('RMSE:', rmse)
Проверка модели:

Проверьте, как выглядит ваш набор данных. Возможно, стоит использовать другие методы оценки, например, кросс-валидацию.
Посмотрите на распределение предсказанных значений и фактических цен, возможно, они сильно различаются.
Коэффициент детерминации (R²):

R², равный 0, означает, что модель не объясняет вариацию в данных. Это может быть связано с неадекватной моделью или плохим выбором признаков. Рассмотрите возможность использования других алгоритмов (например, деревья решений, случайный лес).
ильгиз сиразеевЗнаток (336) 1 месяц назад
А если без помощи чата гпт? Она херню несёт
Похожие вопросы