Итак, нам дали проект для одного из моих университетских занятий «Наука о данных», и нам дали набор данных дорожных датчиков, фиксирующих скорость транспортных средств на дороге каждые 5 минут.
(набор данных был с этого сайта : https://zenodo.org/records/4264005 "PEMS-BAY.csv")
Я сделал то, что нас просили, например удаление нереалистичных значений, нормализацию и т. д.
Затем нас попросили «разделить набор данных на 3 (под)набора и обучить модель машинного обучения, чтобы спрогнозировать скорость каждого датчика на следующий один (1) час с
пятью (5) минут с шагом (краткосрочный прогноз) и на следующие
(12) часов с шагом в один (1) час (среднесрочный прогноз)"
Я решил использовать регрессор повышения градиента как мы с моей моделью приступили к разделению данных
df['Unnamed: 0'] = pd.to_datetime(df['Unnamed: 0'])
train = df[(df['Unnamed: 0'] >= '2017-01-01 00:00:00') & (df['Unnamed: 0'] = '2017-04-01 00:00:00') & (df['Unnamed: 0'] = '2017-05-01 00:00:00') & (df['Unnamed: 0'] значение внутри цикла как таковое
for i in range(12):
preds_short = short_predictions
y_test = test.iloc[: , i]
mae, mape, rmse, r2 = evaluate_metrics(y_test, preds_short)
metrics['Horizon'].append(f'Short_{i + 1}')
metrics['MAE'].append(mae)
metrics['MAPE'].append(mape)
metrics['RMSE'].append(rmse)
metrics['R2'].append(r2)
но это тоже не сработало, и на этом мои идеи о том, как это сделать, закончились.
Любая помощь приветствуется, спасибо за уделенное время.
пс. Я вставлю весь свой код, вдруг он кому-нибудь понадобится.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
from sklearn.preprocessing import MinMaxScaler
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.tsa.seasonal import seasonal_decompose
df = pd.read_csv('PEMS-BAY.csv')
data_info = {
"head": df.head(),
"columns": df.columns.tolist(),
"shape": df.shape,
"missing_values": df.isnull().sum()
}
print(data_info)
def remove_outliers_iqr(data, threshold=1.5):
for col in data.select_dtypes(include=[np.number]).columns:
q1 = data[col].quantile(0.25)
q3 = data[col].quantile(0.75)
iqr = q3 - q1
lower_bound = q1 - threshold * iqr
upper_bound = q3 + threshold * iqr
data[col] = data[col].mask((data[col] < lower_bound) | (data[col] > upper_bound))
return data
data_cleaned = remove_outliers_iqr(df.iloc[:, 1:].copy())
scaler = MinMaxScaler()
data_normalized = pd.DataFrame(scaler.fit_transform(data_cleaned), columns=data_cleaned.columns)
#plt.hist(data_cleaned.iloc[:, 0], bins=50, alpha=0.7, label='Καθαρισμένα')
#plt.hist(data_normalized.iloc[:, 0], bins=50, alpha=0.7, label='Κανονικοποιημένα')
#plt.legend()
#plt.show()
series = data_cleaned.iloc[:, 1]
series = series.dropna()
result = seasonal_decompose(series, model='additive', period=7)
#result.plot()
#plt.show()
#plt.figure(figsize=(10, 6))
#plot_acf(series, lags=50, title="Autocorrelation Plot")
#plt.show()
#plt.figure(figsize=(10, 6))
#series.plot(alpha=0.7, label='Original Data')
#series.rolling(window=7).mean().plot(label='Rolling Mean (7 days)', color='red')
#plt.legend()
#plt.title("Trend Analysis")
#plt.show()
df['Unnamed: 0'] = pd.to_datetime(df['Unnamed: 0'])
train = df[(df['Unnamed: 0'] >= '2017-01-01 00:00:00') & (df['Unnamed: 0'] = '2017-04-01 00:00:00') & (df['Unnamed: 0'] = '2017-05-01 00:00:00') & (df['Unnamed: 0']
Подробнее здесь: https://stackoverflow.com/questions/793 ... -correctly
Я не могу научить ИИ правильно читать и прогнозировать данные дорожных датчиков [закрыто] ⇐ Python
Программы на Python
1737303326
Anonymous
Итак, нам дали проект для одного из моих университетских занятий «Наука о данных», и нам дали набор данных дорожных датчиков, фиксирующих скорость транспортных средств на дороге каждые 5 минут.
(набор данных был с этого сайта : https://zenodo.org/records/4264005 "PEMS-BAY.csv")
Я сделал то, что нас просили, например удаление нереалистичных значений, нормализацию и т. д.
Затем нас попросили «разделить набор данных на 3 (под)набора и обучить модель машинного обучения, чтобы спрогнозировать скорость каждого датчика на следующий один (1) час с
пятью (5) минут с шагом (краткосрочный прогноз) и на следующие
(12) часов с шагом в один (1) час (среднесрочный прогноз)"
Я решил использовать регрессор повышения градиента как мы с моей моделью приступили к разделению данных
df['Unnamed: 0'] = pd.to_datetime(df['Unnamed: 0'])
train = df[(df['Unnamed: 0'] >= '2017-01-01 00:00:00') & (df['Unnamed: 0'] = '2017-04-01 00:00:00') & (df['Unnamed: 0'] = '2017-05-01 00:00:00') & (df['Unnamed: 0'] значение внутри цикла как таковое
for i in range(12):
preds_short = short_predictions[i]
y_test = test.iloc[: , i]
mae, mape, rmse, r2 = evaluate_metrics(y_test, preds_short)
metrics['Horizon'].append(f'Short_{i + 1}')
metrics['MAE'].append(mae)
metrics['MAPE'].append(mape)
metrics['RMSE'].append(rmse)
metrics['R2'].append(r2)
но это тоже не сработало, и на этом мои идеи о том, как это сделать, закончились.
Любая помощь приветствуется, спасибо за уделенное время.
пс. Я вставлю весь свой код, вдруг он кому-нибудь понадобится.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
from sklearn.preprocessing import MinMaxScaler
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.tsa.seasonal import seasonal_decompose
df = pd.read_csv('PEMS-BAY.csv')
data_info = {
"head": df.head(),
"columns": df.columns.tolist(),
"shape": df.shape,
"missing_values": df.isnull().sum()
}
print(data_info)
def remove_outliers_iqr(data, threshold=1.5):
for col in data.select_dtypes(include=[np.number]).columns:
q1 = data[col].quantile(0.25)
q3 = data[col].quantile(0.75)
iqr = q3 - q1
lower_bound = q1 - threshold * iqr
upper_bound = q3 + threshold * iqr
data[col] = data[col].mask((data[col] < lower_bound) | (data[col] > upper_bound))
return data
data_cleaned = remove_outliers_iqr(df.iloc[:, 1:].copy())
scaler = MinMaxScaler()
data_normalized = pd.DataFrame(scaler.fit_transform(data_cleaned), columns=data_cleaned.columns)
#plt.hist(data_cleaned.iloc[:, 0], bins=50, alpha=0.7, label='Καθαρισμένα')
#plt.hist(data_normalized.iloc[:, 0], bins=50, alpha=0.7, label='Κανονικοποιημένα')
#plt.legend()
#plt.show()
series = data_cleaned.iloc[:, 1]
series = series.dropna()
result = seasonal_decompose(series, model='additive', period=7)
#result.plot()
#plt.show()
#plt.figure(figsize=(10, 6))
#plot_acf(series, lags=50, title="Autocorrelation Plot")
#plt.show()
#plt.figure(figsize=(10, 6))
#series.plot(alpha=0.7, label='Original Data')
#series.rolling(window=7).mean().plot(label='Rolling Mean (7 days)', color='red')
#plt.legend()
#plt.title("Trend Analysis")
#plt.show()
df['Unnamed: 0'] = pd.to_datetime(df['Unnamed: 0'])
train = df[(df['Unnamed: 0'] >= '2017-01-01 00:00:00') & (df['Unnamed: 0'] = '2017-04-01 00:00:00') & (df['Unnamed: 0'] = '2017-05-01 00:00:00') & (df['Unnamed: 0']
Подробнее здесь: [url]https://stackoverflow.com/questions/79369237/i-cant-train-ai-to-read-and-predict-road-sensor-data-correctly[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия