W tej lekcji nauczysz się, jak wdrożyć prosty model regresji liniowej za pomocą frameworku Flask w języku Python. Dowiesz się, jak stworzyć API, które będzie przyjmować dane wejściowe, przetwarzać je za pomocą wytrenowanego modelu i zwracać przewidywane wyniki.
Flask to lekki framework webowy dla języka Python, idealny do budowania prostych aplikacji webowych i API. API (Application Programming Interface) pozwala innym aplikacjom na komunikację z Twoim modelem, umożliwiając mu przewidywanie na podstawie danych wejściowych. Zanim przejdziemy dalej, upewnij się, że masz zainstalowany Python i pip (menadżer pakietów Pythona).
Instalacja: Uruchom w terminalu:
pip install flask scikit-learn
Zacznijmy od zbudowania i wytrenowania prostego modelu regresji liniowej. Użyjemy biblioteki scikit-learn.
import numpy as np
from sklearn.linear_model import LinearRegression
# Generowanie przykładowych danych (x i y)
x = np.array([1, 2, 3, 4, 5]).reshape((-1, 1))
y = np.array([2, 4, 5, 4, 5])
# Tworzenie i trenowanie modelu
model = LinearRegression()
model.fit(x, y)
# Zapisywanie modelu (opcjonalnie - do przyszłych lekcji)
# from joblib import dump
# dump(model, 'model.joblib')
print(f'Współczynnik: {model.coef_[0]}')
print(f'Wyraz wolny: {model.intercept_}')
Ten kod tworzy model regresji liniowej, trenuje go na przykładowych danych i wyświetla jego współczynniki. Pamiętaj, że w prawdziwym świecie będziesz używać bardziej zaawansowanych danych i modeli.
Teraz stworzymy interfejs API w Flasku, który będzie przyjmował dane wejściowe, korzystał z wytrenowanego modelu i zwracał przewidywany wynik.
from flask import Flask, request, jsonify
import numpy as np
from sklearn.linear_model import LinearRegression
app = Flask(__name__)
# Używamy wytrenowanego modelu z poprzedniego kroku (lub załaduj z pliku)
model = LinearRegression()
x = np.array([1, 2, 3, 4, 5]).reshape((-1, 1))
y = np.array([2, 4, 5, 4, 5])
model.fit(x, y)
@app.route('/predict', methods=['POST'])
def predict():
try:
data = request.get_json()
input_value = float(data['value'])
prediction = model.predict([[input_value]])[0]
return jsonify({'prediction': prediction})
except Exception as e:
return jsonify({'error': str(e)}), 400
if __name__ == '__main__':
app.run(debug=True)
Ten kod tworzy aplikację Flask, definiuje endpoint /predict
akceptujący żądania POST. Oczekuje on danych wejściowych w formacie JSON, przewiduje wynik za pomocą modelu i zwraca go w formacie JSON.
Aby przetestować API, uruchom skrypt Pythona (np. python your_app.py
) i wyślij żądanie POST do endpointu /predict
. Możesz użyć narzędzia takiego jak curl
lub Postman.
Przykład z curl:
curl -X POST -H "Content-Type: application/json" -d '{"value": 6}' http://127.0.0.1:5000/predict
Powinieneś otrzymać odpowiedź w formacie JSON zawierającą przewidywaną wartość.
Explore advanced insights, examples, and bonus exercises to deepen understanding.
Gratulacje! Zbudowałeś już podstawowy model regresji liniowej i wdrożyłeś go za pomocą Flask. W tej rozszerzonej lekcji zgłębimy temat wdrażania i monitorowania modeli, eksplorując bardziej zaawansowane aspekty, alternatywne perspektywy i praktyczne zastosowania. Zaczynamy!
Twoje podstawowe API działa, ale co dalej? W realnym świecie, musimy zadbać o wydajność i niezawodność. Oto kilka kluczowych aspektów:
Przykład walidacji danych za pomocą pydantic:
from flask import Flask, request, jsonify
from pydantic import BaseModel, ValidationError
from sklearn.linear_model import LinearRegression
import joblib
app = Flask(__name__)
# Załaduj wytrenowany model
model = joblib.load('model.pkl')
# Definicja schematu danych wejściowych
class InputData(BaseModel):
feature1: float
feature2: float
@app.route('/predict', methods=['POST'])
def predict():
try:
data = InputData(**request.get_json()) # Walidacja danych
# Konwersja na listę i przewidywanie
prediction = model.predict([[data.feature1, data.feature2]])[0]
return jsonify({'prediction': prediction})
except ValidationError as e:
return jsonify({'error': str(e)}), 400 # Zwróć błąd walidacji
except Exception as e:
return jsonify({'error': 'Wystąpił błąd serwera'}), 500 # Zwróć błąd serwera
if __name__ == '__main__':
app.run(debug=False) # Uruchom w trybie produkcyjnym
Spróbuj wykonać poniższe ćwiczenia, aby utrwalić zdobytą wiedzę:
Wdrażanie modeli i API ma szerokie zastosowanie w wielu branżach i aspektach życia:
Chcesz się sprawdzić i pójść o krok dalej? Spróbuj poniższych zadań:
Rozwój w tej dziedzinie jest dynamiczny. Oto kilka tematów do dalszego studiowania:
Pamiętaj, że nauka to proces ciągły. Z każdym projektem i wyzwaniem nabierzesz nowego doświadczenia. Powodzenia!
Zmodyfikuj kod z sekcji 'Budowa i Trening Modelu Regresji Liniowej' tak, aby używał innej wartości w 'x' (np. dodaj więcej wartości).
Uruchom aplikację Flask i spróbuj wysłać różne dane wejściowe do punktu końcowego /predict i sprawdź wynik. Użyj curl lub Postmana. Spróbuj wysłać błędne dane (np. tekst zamiast liczby) i sprawdź, co się stanie.
Dodaj w kodzie `print()` i zobacz jakie wartości przyjmują poszczególne zmienne. Spróbuj znaleźć ewentualne błędy i spróbuj je naprawić.
Przemyśl, dlaczego użycie Flasku jest dobrym rozwiązaniem w kontekście wdrożenia modelu ML. Jakie inne możliwości wdrożenia modeli znasz?
Wyobraź sobie, że pracujesz dla firmy, która zajmuje się prognozowaniem cen nieruchomości. Wykorzystując poznane umiejętności, stwórz API, które przyjmuje jako dane wejściowe cechy nieruchomości (np. powierzchnia, lokalizacja) i zwraca przewidywaną cenę.
Przygotuj się do poznania metod monitorowania wdrożonych modeli, aby móc śledzić ich wydajność i reagować na potencjalne problemy.
We're automatically tracking your progress. Sign up for free to keep your learning paths forever and unlock advanced features like detailed analytics and personalized recommendations.