Untitled
Guest 71 18th Jan, 2025
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV, cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
from xgboost import XGBRegressor
import joblib
# 1. Wczytanie danych z pliku Excel
file_path = 'Honda dane w tabeli.xlsx' # Upewnij się, że plik jest w tej samej ścieżce co skrypt lub podaj pełną ścieżkę
data = pd.read_excel(file_path)
# 2. Wstępne przetwarzanie danych
# Sprawdzenie brakujących wartości
print("Missing values per column:")
print(data.isnull().sum())
# Uzupełnienie brakujących wartości średnią
data.fillna(data.mean(), inplace=True)
# Tworzenie opóźnionych wartości
data['Close_Lag_1'] = data['Close'].shift(1)
data['Close_Lag_2'] = data['Close'].shift(2)
# Usunięcie wierszy z brakującymi wartościami po dodaniu lag features
data.dropna(inplace=True)
# Rozdzielenie cech (X) i zmiennej docelowej (y)
X = data.drop(columns=['Close', 'Date'], errors='ignore') # Zakładamy, że 'Date' może być w danych
y = data['Close']
# Podział na zbiór treningowy (80%) i testowy (20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Normalizacja cech
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 3. Trening modelu XGBoost
model = XGBRegressor(n_estimators=100, learning_rate=0.1, max_depth=6, random_state=42)
model.fit(X_train_scaled, y_train)
# 4. Ewaluacja modelu
y_pred = model.predict(X_test_scaled)
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error (MSE) on test set: {mse}")
# 5. Znaczenie cech
importance = model.feature_importances_
print("\nFeature Importances:")
for i, v in enumerate(importance):
print(f"Feature: {X.columns[i]}, Importance: {v}")
# 6. Hyperparameter Tuning (opcjonalne)
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [3, 5, 7],
'learning_rate': [0.01, 0.1, 0.2]
}
grid_search = GridSearchCV(XGBRegressor(random_state=42), param_grid, cv=3, scoring='neg_mean_squared_error')
grid_search.fit(X_train_scaled, y_train)
print("\nBest Parameters from Grid Search:")
print(grid_search.best_params_)
# 7. Ewaluacja z walid
To share this paste please copy this url and send to your friends
RAW Paste Data