kutygin_andrey_lab_5_ready
This commit is contained in:
parent
a8c58683dd
commit
8e1b81c2f1
37
kutygin_andrey_lab_5/README.md
Normal file
37
kutygin_andrey_lab_5/README.md
Normal file
@ -0,0 +1,37 @@
|
||||
**Задание**
|
||||
***
|
||||
Использовать регрессию по варианту для данных из таблицы 1 по варианту(таблица 10),самостоятельно сформулировав задачу. Оценить, насколько хорошо она подходит для решения сформулированной вами задачи
|
||||
Вариант 16 - полиномиальная регрессия
|
||||
|
||||
**Как запустить лабораторную**
|
||||
***
|
||||
Запустить файл main.py
|
||||
|
||||
**Используемые технологии**
|
||||
***
|
||||
Библиотеки pandas, matplotlib, scikit-learn, их компоненты
|
||||
|
||||
**Описание лабораторной (программы)**
|
||||
***
|
||||
Программа загружает данные о наблюдениях НЛО из CSV файла. Затем она разделяет данные на признаки (latitude и longitude) и целевую переменную (length_of_encounter_seconds). Далее происходит преобразование столбца date_time в числовой формат с помощью pd.to_datetime. После этого данные разделяются на обучающую и тестовую выборки с использованием train_test_split.
|
||||
|
||||
Далее программа создает полиномиальные признаки второй степени с помощью PolynomialFeatures. Затем модель полиномиальной регрессии обучается на обучающих данных с помощью LinearRegression. После обучения модель оценивается на обучающей и тестовой выборках, вычисляя значения предсказаний и используя метрики MSE (среднеквадратичная ошибка) и R^2 (коэффициент детерминации).
|
||||
|
||||
В конце программы выводятся значения MSE и R^2 для обучающей и тестовой выборок.
|
||||
**Результат**
|
||||
***
|
||||
Train MSE: 10388560458125.451
|
||||
|
||||
Test MSE: 340591245157.4829
|
||||
|
||||
Train R^2: 0.024274600175043015
|
||||
|
||||
Test R^2: 0.13630563714232358
|
||||
|
||||
На основе представленных значений можно сделать следующие выводы:
|
||||
|
||||
1. Значение MSE (среднеквадратичная ошибка) для обучающей выборки составляет 10,388,560,458,125.451, а для тестовой выборки - 340,591,245,157.4829. Значения MSE высокие, что может указывать на низкую точность модели.
|
||||
|
||||
2. Значение R^2 (коэффициент детерминации) для обучающей выборки равно 0.024274600175043015, а для тестовой выборки - 0.13630563714232358. Значения R^2 близки к нулю, что означает, что модель не очень хорошо объясняет вариацию целевой переменной.
|
||||
|
||||
Таким образом, полученные результаты говорят о том, что модель полиномиальной регрессии, построенная на основе данных о наблюдениях НЛО, не является очень точной и не обладает высокой предсказательной способностью. Из чего можно сделать вывод, что мои предположения насчет предсказывания времени наблюдения, на основе данных долготы и широты, не оправданы.
|
48
kutygin_andrey_lab_5/main.py
Normal file
48
kutygin_andrey_lab_5/main.py
Normal file
@ -0,0 +1,48 @@
|
||||
import pandas as pd
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.metrics import mean_squared_error, r2_score
|
||||
from datetime import datetime
|
||||
|
||||
# Загрузка данных
|
||||
try:
|
||||
data = pd.read_csv('ufo_sighting_data.csv')
|
||||
except Exception as e:
|
||||
print("Ошибка при чтении файла:", e)
|
||||
|
||||
# Разделение признаков и целевой переменной
|
||||
X = data[['latitude', 'longitude']] # Оставляем только числовые признаки, такие как latitude и longitude
|
||||
y = data['length_of_encounter_seconds']
|
||||
|
||||
# Преобразование столбца date_time в числовой формат с использованием timestamp
|
||||
data[['date','time']] = data['date_time'].str.split(expand=True)
|
||||
data['date_time'] = (pd.to_datetime(data.pop('date'), format='%d/%m/%Y') +
|
||||
pd.to_timedelta(data.pop('time') + ':00'))
|
||||
|
||||
# Разделение данных на обучающую и тестовую выборки
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)
|
||||
|
||||
# Создание полиномиальных признаков
|
||||
poly_features = PolynomialFeatures(degree=2)
|
||||
X_train_poly = poly_features.fit_transform(X_train)
|
||||
X_test_poly = poly_features.transform(X_test)
|
||||
|
||||
# Обучение модели полиномиальной регрессии
|
||||
model = LinearRegression()
|
||||
model.fit(X_train_poly, y_train)
|
||||
|
||||
# Оценка модели
|
||||
y_train_pred = model.predict(X_train_poly)
|
||||
y_test_pred = model.predict(X_test_poly)
|
||||
|
||||
# Оценка метрик модели
|
||||
train_mse = mean_squared_error(y_train, y_train_pred)
|
||||
test_mse = mean_squared_error(y_test, y_test_pred)
|
||||
train_r2 = r2_score(y_train, y_train_pred)
|
||||
test_r2 = r2_score(y_test, y_test_pred)
|
||||
|
||||
print("Train MSE:", train_mse)
|
||||
print("Test MSE:", test_mse)
|
||||
print("Train R^2:", train_r2)
|
||||
print("Test R^2:", test_r2)
|
1
kutygin_andrey_lab_5/ufo_sighting_data.csv
Normal file
1
kutygin_andrey_lab_5/ufo_sighting_data.csv
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user