{
  "cells" : [
    {
      "cell_type" : "markdown",
      "id" : "A4E99EE0-44C1-488A-A600-8FA314F95904",
      "metadata" : {

      },
      "source" : [
        "# Machine Learning\n",
        "\n",
        "Model training with scikit-learn."
      ]
    },
    {
      "cell_type" : "code",
      "execution_count" : null,
      "id" : "7A1F8CE9-F8CA-47B2-AC3A-27E6FE634BDC",
      "metadata" : {

      },
      "outputs" : [

      ],
      "source" : [
        "import numpy as np\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.linear_model import LinearRegression\n",
        "from sklearn.metrics import root_mean_squared_error, r2_score"
      ]
    },
    {
      "cell_type" : "markdown",
      "id" : "81191B49-8E91-4470-BC52-78939CA71B6F",
      "metadata" : {

      },
      "source" : [
        "## Generate Data"
      ]
    },
    {
      "cell_type" : "code",
      "execution_count" : null,
      "id" : "C34AE5AF-BD31-4986-9C2F-2887C0CC8079",
      "metadata" : {

      },
      "outputs" : [

      ],
      "source" : [
        "np.random.seed(42)\n",
        "X = np.random.rand(100, 1) * 10\n",
        "y = 2.5 * X.squeeze() + np.random.randn(100) * 2 + 5\n",
        "\n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
        "print(f'Training: {len(X_train)} samples')\n",
        "print(f'Testing: {len(X_test)} samples')"
      ]
    },
    {
      "cell_type" : "markdown",
      "id" : "B18A14F1-81F9-498B-8271-0B3822EEE62C",
      "metadata" : {

      },
      "source" : [
        "## Train Model"
      ]
    },
    {
      "cell_type" : "code",
      "execution_count" : null,
      "id" : "EBD1FC75-BFFE-4B42-ACA1-20B5D0F789E5",
      "metadata" : {

      },
      "outputs" : [

      ],
      "source" : [
        "model = LinearRegression()\n",
        "model.fit(X_train, y_train)\n",
        "\n",
        "y_pred = model.predict(X_test)\n",
        "print(f'R² Score: {r2_score(y_test, y_pred):.4f}')\n",
        "print(f'RMSE: {root_mean_squared_error(y_test, y_pred):.4f}')"
      ]
    }
  ],
  "metadata" : {
    "kernelspec" : {
      "display_name" : "Python 3 (Pyodide)",
      "language" : "python",
      "name" : "python3"
    },
    "language_info" : {
      "name" : "python",
      "version" : "3.14.2"
    }
  },
  "nbformat" : 5,
  "nbformat_minor" : 10
}