import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import Lasso import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler #Данные data = pd.read_csv('clean_data.csv') #Приведение строчных значений к числовым #work factorized_data_work, unique_values_work = pd.factorize(data['work']) data['work'] = factorized_data_work #gymtime factorized_data_gymtime, unique_values_gymtime = pd.factorize(data['gymtime']) data['gymtime'] = factorized_data_gymtime #Отбор нужных столбцов x = data[['age', 'weight', 'work', 'phy_ex', 'gymtime']] #Определение целевой переменной y = data['phy_health'] #Нормализация данных scaler = StandardScaler() x = scaler.fit_transform(x) #Получение обучающей и тестовой выборки x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.1, random_state=42) #Создание и обучение модели lasso = Lasso(alpha=.05) lasso.fit(x_train, y_train) #Прогнозирование на тестовом наборе y_pred = lasso.predict(x_test) #Вывод результатов print("Качество модели: ", lasso.score(x_test, y_test)) #График plt.figure(figsize=(10, 7)) plt.plot(y_test.values, label='Фактические', marker='o', color='#8b00ff') plt.plot(y_pred, label='Предсказанные', marker='o', color='#ff294d') plt.title('Фактические и предсказанные значения') plt.xlabel('Наблюдения') plt.ylabel('Значения уровня здоровья') plt.legend(loc='best') plt.savefig("lasso.png")