avatar
Untitled

Guest 72 18th Jan, 2025

MARKUP 2.90 KB
                                           
                         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
file_path = 'nazwa_pliku.csv'  # Zmień na właściwą ścieżkę do pliku
data = pd.read_csv(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, np. średnią (lub zastosuj inną metodę według potrzeb)
data.fillna(data.mean(), inplace=True)

# Tworzenie nowych cech (opcjonalnie)
if 'Date' in data.columns:
    data['Date'] = pd.to_datetime(data['Date'])
    data['Day'] = data['Date'].dt.day
    data['Month'] = data['Date'].dt.month
    data['Year'] = data['Date'].dt.year

# 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 stworzeniu lag features
data.dropna(inplace=True)

# Rozdzielenie cech i zmiennej docelowej
X = data.drop(columns=['Close', 'Date'], errors='ignore')
y = data['Close']

# Podział na zbiór treningowy i testowy
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
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 walidacją krzyżową
final_model = grid_search.best_estimator_
scores = cross_val_score(final_model, X_train_scaled, y_train, cv=5, scoring='neg_mean_squared_error')
print(f"\nCross-validated Mean Squared Error: {-scores.mean()}")

# 8. Zapis modelu
joblib.dump(final_model, 'xgboost_close_model.pkl')
print("\nModel saved as 'xgboost_close_model.pkl'")
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data
Recent Pastes
Ta strona używa plików cookie w celu usprawnienia i ułatwienia dostępu do serwisu oraz prowadzenia danych statystycznych. Dalsze korzystanie z tej witryny oznacza akceptację tego stanu rzeczy.
Wykorzystywanie plików Cookie
Jak wyłączyć cookies?
ROZUMIEM