"Do wykonania zadań wykorzystaj wiedzę z wykładów."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5.1. Korzystanie z gotowych implementacji algorytmów na przykładzie pakietu *scikit-learn*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Scikit-learn](https://scikit-learn.org) jest otwartoźródłową biblioteką programistyczną dla języka Python wspomagającą uczenie maszynowe. Zawiera implementacje wielu algorytmów uczenia maszynowego."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Poniżej przykład, jak stworzyć klasyfikator regresji liniowej wielu zmiennych z użyciem `scikit-learn`.\n",
"\n",
"Na podobnej zasadzie można korzystać z innych modeli dostępnych w bibliotece."
"y_predicted = model.predict(x_test) # predykcja wyników na podstawie modelu\n",
"\n",
"print(y_predicted[:10]) # Pierwsze 10 wyników\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Biblioteka *scikit-learn* dostarcza również narzędzi do wstępnego przetwarzania danych, np. skalowania i normalizacji: https://scikit-learn.org/stable/modules/preprocessing.html"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5.2. Metody ewaluacji"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Bilioteka *scikit-learn* dostarcza również narzędzi do ewaluacji algorytmów zaimplementowanych z wykorzystaniem jej metod.\n",
"\n",
"Te narzędzia znajdują się w module [`sklearn.metrics`](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Ewaluacja regresji "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Do ewaluacji regresji z powyższego przykładu możemy np. użyć metryki [`mean_squared_error`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html#sklearn.metrics.mean_squared_error):"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Błąd średniokwadratowy wynosi 1179760250402.185\n"
"print(f\"Błąd średniokwadratowy wynosi {error}\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Większość modeli posiada też metodę `score`, która zwraca wartość metryki tak skonstruowanej, żeby jej wartość wynosiła `1.0`, jeżeli `y_predicted` jest równe `y_expected`. Im mniejsza wartość `score`, tym gorszy wynik."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-10.712011261173265\n"
]
}
],
"source": [
"print(model.score(x_test, y_expected))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Ewaluacja klasyfikacji"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Dla ewaluacji algorytmów klasyfikacji możemy użyć metody [`precision_recall_fscore_support`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html), która oblicza wartości metryk precyzji, pokrycia i F-score. Przydatna może być też metoda [`classification_report`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html)."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Precision: 1.0\n",
"Recall: 1.0\n",
"F-score: 1.0\n",
"Model score: 1.0\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/pawel/.local/lib/python3.10/site-packages/sklearn/utils/validation.py:1111: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",