diff --git a/.gitignore b/.gitignore index f261c60..a1bc604 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Ignoriere alles * -# Erlaube .ipynb-Dateien +# Erlaube .ipynb-Dateien und .png-Dateien !*.ipynb -!*.pickle \ No newline at end of file +!*.pickle +!*.png \ No newline at end of file diff --git a/complex_nn_loss_graph.png b/complex_nn_loss_graph.png new file mode 100644 index 0000000..ef2801f Binary files /dev/null and b/complex_nn_loss_graph.png differ diff --git a/project-cancer-classification.ipynb b/project-cancer-classification.ipynb index f34f3cc..21c7d24 100644 --- a/project-cancer-classification.ipynb +++ b/project-cancer-classification.ipynb @@ -87,21 +87,12 @@ "metadata": { "tags": [] }, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (2666948873.py, line 6)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[1], line 6\u001b[0;36m\u001b[0m\n\u001b[0;31m from IPython.display import clear_output(wait=True)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" - ] - } - ], + "outputs": [], "source": [ - "! wget http://www.tnt.uni-hannover.de/edu/vorlesungen/AMLG/data/project-cancer-classification.tar.gz\n", - "! tar -xzvf project-cancer-classification.tar.gz\n", - "! mv -v project-cancer-classification/ data/\n", - "! rm -v project-cancer-classification.tar.gz" + "# ! wget http://www.tnt.uni-hannover.de/edu/vorlesungen/AMLG/data/project-cancer-classification.tar.gz\n", + "# ! tar -xzvf project-cancer-classification.tar.gz\n", + "# ! mv -v project-cancer-classification/ data/\n", + "# ! rm -v project-cancer-classification.tar.gz" ] }, { @@ -124,169 +115,92 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "2adae4ff", "metadata": { "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Es wurden 1034 Dateien eingelesen.\n" - ] - } - ], + "outputs": [], "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import pickle\n", + "# import numpy as np\n", + "# import pandas as pd\n", + "# import pickle\n", "\n", "\n", - "import os\n", - "#'./data/tcga-kirp-geq'\n", + "# import os\n", + "# #'./data/tcga-kirp-geq'\n", "\n", - "labels = [\"kirp\", \"kirc\", \"kich\"] # Setzen Sie hier Ihren Ordnerpfad ein\n", - "n_files = 0\n", - "y = list()\n", - "x = list()\n", + "# labels = [\"kirp\", \"kirc\", \"kich\"] # Setzen Sie hier Ihren Ordnerpfad ein\n", + "# n_files = 0\n", + "# y = list()\n", + "# x = list()\n", "\n", - "rick = list()\n", - "data = []\n", + "# rick = list()\n", + "# data = []\n", "\n", - "for l in labels:\n", - " root_folder = f\"./data/tcga-{l}-geq\"\n", - " for root, dirs, files in os.walk(root_folder):\n", - " for file in files:\n", - " if file.endswith('.tsv'):\n", - " n_files += 1\n", - " # Vollständiger Pfad zur Datei\n", - " file_path = os.path.join(root, file)\n", - " # Hier können Sie etwas mit der Datei machen, z.B. einlesen\n", - " df = pd.read_csv(filepath_or_buffer=file_path, sep=\"\\t\", header=1)\n", - " df = df['tpm_unstranded']\n", + "# for l in labels:\n", + "# root_folder = f\"./data/tcga-{l}-geq\"\n", + "# for root, dirs, files in os.walk(root_folder):\n", + "# for file in files:\n", + "# if file.endswith('.tsv'):\n", + "# n_files += 1\n", + "# # Vollständiger Pfad zur Datei\n", + "# file_path = os.path.join(root, file)\n", + "# # Hier können Sie etwas mit der Datei machen, z.B. einlesen\n", + "# df = pd.read_csv(filepath_or_buffer=file_path, sep=\"\\t\", header=1)\n", + "# df = df['tpm_unstranded']\n", "\n", - " df = df[4:]\n", - " df = np.array(df)\n", - " rick.append(df)\n", + "# df = df[4:]\n", + "# df = np.array(df)\n", + "# rick.append(df)\n", " \n", - " data.append([df, l])\n", + "# data.append([df, l])\n", "\n", - "print(f\"Es wurden {n_files} Dateien eingelesen.\")\n", - "#tsv_file_path = \"data/tcga-kich-geq/0ba21ef5-0829-422e-a674-d3817498c333/4868e8fc-e045-475a-a81d-ef43eabb7066.rna_seq.augmented_star_gene_counts.tsv\"\n", + "# print(f\"Es wurden {n_files} Dateien eingelesen.\")\n", + "# #tsv_file_path = \"data/tcga-kich-geq/0ba21ef5-0829-422e-a674-d3817498c333/4868e8fc-e045-475a-a81d-ef43eabb7066.rna_seq.augmented_star_gene_counts.tsv\"\n", "\n", - "# Read the TSV file into a DataFrame\n", - "#df = pd.read_csv(filepath_or_buffer=tsv_file_path, sep=\"\\t\", header=1)\n", + "# # Read the TSV file into a DataFrame\n", + "# #df = pd.read_csv(filepath_or_buffer=tsv_file_path, sep=\"\\t\", header=1)\n", "\n", - "# Display the first few rows of the DataFrame\n", - "#print(df.head(n=20))\n", - "#rick = np.array(rick)\n", + "# # Display the first few rows of the DataFrame\n", + "# #print(df.head(n=20))\n", + "# #rick = np.array(rick)\n", "\n", - "# Speichern der 'kirp' Liste in einer Pickle-Datei\n", - "#with open('rick.pickle', 'wb') as f:\n", - "# pickle.dump(rick, f)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "dfe4f964-6068-46da-8103-194525086f01", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
genome_frequenciescancer_type
0[20.331, 0.0, 25.1806, 1.1301, 0.4836, 7.3269,...kirp
1[37.0405, 0.5002, 77.4246, 4.2188, 1.0408, 29....kirp
2[45.4456, 0.0903, 74.9545, 4.843, 1.5188, 11.8...kirp
3[15.2345, 0.3393, 62.0003, 2.4412, 0.932, 2.66...kirp
4[35.0709, 0.2333, 62.8022, 2.8872, 1.0547, 18....kirp
\n", - "
" - ], - "text/plain": [ - " genome_frequencies cancer_type\n", - "0 [20.331, 0.0, 25.1806, 1.1301, 0.4836, 7.3269,... kirp\n", - "1 [37.0405, 0.5002, 77.4246, 4.2188, 1.0408, 29.... kirp\n", - "2 [45.4456, 0.0903, 74.9545, 4.843, 1.5188, 11.8... kirp\n", - "3 [15.2345, 0.3393, 62.0003, 2.4412, 0.932, 2.66... kirp\n", - "4 [35.0709, 0.2333, 62.8022, 2.8872, 1.0547, 18.... kirp" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_Frame = pd.DataFrame(data, columns=[\"genome_frequencies\", \"cancer_type\"])\n", - "data_Frame.head()" + "# # Speichern der 'kirp' Liste in einer Pickle-Datei\n", + "# #with open('rick.pickle', 'wb') as f:\n", + "# # pickle.dump(rick, f)\n" ] }, { "cell_type": "code", "execution_count": 3, + "id": "dfe4f964-6068-46da-8103-194525086f01", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# data_Frame = pd.DataFrame(data, columns=[\"genome_frequencies\", \"cancer_type\"])\n", + "# data_Frame.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, "id": "0f5cc92a-4485-4184-845e-116ea9a9776d", "metadata": { "tags": [] }, "outputs": [], "source": [ - "# Speichern der Daten in einer lokalen Datei\n", - "with open('rick.pickle', 'wb') as f:\n", - " pickle.dump(data_Frame, f)" + "# # Speichern der Daten in einer lokalen Datei\n", + "# with open('rick.pickle', 'wb') as f:\n", + "# pickle.dump(data_Frame, f)" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "id": "b7b79958-baba-4630-9def-cf47afe43d9f", "metadata": { "tags": [] @@ -302,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "id": "f6608b92-8ace-4a52-a3dc-70c578e56f0d", "metadata": { "tags": [] @@ -372,7 +286,7 @@ "4 [35.0709, 0.2333, 62.8022, 2.8872, 1.0547, 18.... kirp" ] }, - "execution_count": 3, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -399,7 +313,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "id": "38695a70-86e9-4dd0-b622-33e3762372eb", "metadata": { "tags": [] @@ -468,7 +382,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "id": "e2f78725-cda6-4e8d-9029-a4a31f6f9ab7", "metadata": { "tags": [] @@ -501,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "id": "aaa2c50c-c79e-4bca-812f-1a06c9f485d5", "metadata": { "tags": [] @@ -511,7 +425,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_343/2483914749.py:11: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at ../torch/csrc/utils/tensor_new.cpp:245.)\n", + "/tmp/ipykernel_19797/2483914749.py:11: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at /opt/pytorch/pytorch/torch/csrc/utils/tensor_new.cpp:245.)\n", " self.genome_frequencies = torch.tensor(dataframe['genome_frequencies'].tolist(), dtype=torch.float32)\n" ] } @@ -525,7 +439,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "id": "a7fb59af-bd06-42d4-acce-03266a85bf36", "metadata": { "tags": [] @@ -575,34 +489,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "e6672e50-47e6-48fc-9e1e-cac0f0a606f1", "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", - "from sklearn.decomposition import PCA\n", - "from sklearn.preprocessing import StandardScaler\n", + "# import numpy as np\n", + "# from sklearn.decomposition import PCA\n", + "# from sklearn.preprocessing import StandardScaler\n", "\n", - "# Angenommen, X ist Ihr Datensatz\n", - "# X = ...\n", - "X = rick\n", + "# # Angenommen, X ist Ihr Datensatz\n", + "# # X = ...\n", + "# X = rick\n", "\n", - "# Standardisieren der Daten\n", - "scaler = StandardScaler()\n", - "X_scaled = scaler.fit_transform(X)\n", + "# # Standardisieren der Daten\n", + "# scaler = StandardScaler()\n", + "# X_scaled = scaler.fit_transform(X)\n", "\n", - "# Erstellen des PCA-Objekts\n", - "pca = PCA(n_components=150) # Angenommen, Sie möchten 150 Hauptkomponenten behalten\n", + "# # Erstellen des PCA-Objekts\n", + "# pca = PCA(n_components=150) # Angenommen, Sie möchten 150 Hauptkomponenten behalten\n", "\n", - "# Durchführen der PCA\n", - "X_pca = pca.fit_transform(X_scaled)\n", + "# # Durchführen der PCA\n", + "# X_pca = pca.fit_transform(X_scaled)\n", "\n", - "# Die resultierenden Hauptkomponenten\n", - "print(\"Transformierte Daten:\", X_pca)\n", + "# # Die resultierenden Hauptkomponenten\n", + "# print(\"Transformierte Daten:\", X_pca)\n", "\n", - "# Variance Ratio für jede Komponente\n", - "print(\"Varianz erklärt durch jede Komponente:\", pca.explained_variance_ratio_)\n" + "# # Variance Ratio für jede Komponente\n", + "# print(\"Varianz erklärt durch jede Komponente:\", pca.explained_variance_ratio_)\n" ] }, { @@ -623,7 +537,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 12, "id": "76b8eec8-d24b-4696-82bf-ebb286e7d1e7", "metadata": { "tags": [] @@ -662,7 +576,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 13, "id": "944d463e-12ed-4447-8587-ee9c60ce3eb6", "metadata": { "tags": [] @@ -696,7 +610,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 14, "id": "60789428-7d6e-4737-a83a-1138f6a650f7", "metadata": { "tags": [] @@ -714,7 +628,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 15, "id": "de6e81de-0096-443a-a0b6-90cddecf5f88", "metadata": { "tags": [] @@ -724,12 +638,12 @@ "# Verlustfunktion und Optimierer\n", "criterion = nn.CrossEntropyLoss()\n", "optimizer = optim.Adam(model.parameters(), lr=0.001)\n", - "num_epochs = 70" + "num_epochs = 250" ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 16, "id": "a5deb2ed-c685-4d80-bc98-d6dd27334d82", "metadata": { "tags": [] @@ -739,39 +653,256 @@ "name": "stdout", "output_type": "stream", "text": [ - "Epoch [1/70], Trainingsverlust: 1.1040, Validierungsverlust: 1.0986\n", - "Epoch [2/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [3/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [4/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [5/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [6/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [7/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [8/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [9/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [10/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [11/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [12/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [13/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [14/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [15/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [16/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n", - "Epoch [17/70], Trainingsverlust: 1.0986, Validierungsverlust: 1.0986\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[39], line 13\u001b[0m\n\u001b[1;32m 11\u001b[0m loss \u001b[38;5;241m=\u001b[39m criterion(outputs, labels)\n\u001b[1;32m 12\u001b[0m loss\u001b[38;5;241m.\u001b[39mbackward()\n\u001b[0;32m---> 13\u001b[0m \u001b[43moptimizer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 14\u001b[0m train_loss \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m loss\u001b[38;5;241m.\u001b[39mitem()\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# Durchschnittlicher Trainingsverlust\u001b[39;00m\n", - "File \u001b[0;32m/opt/conda/lib/python3.10/site-packages/torch/optim/optimizer.py:280\u001b[0m, in \u001b[0;36mOptimizer.profile_hook_step..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 276\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 277\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m must return None or a tuple of (new_args, new_kwargs),\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 278\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbut got \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresult\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 280\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 281\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_optimizer_step_code()\n\u001b[1;32m 283\u001b[0m \u001b[38;5;66;03m# call optimizer step post hooks\u001b[39;00m\n", - "File \u001b[0;32m/opt/conda/lib/python3.10/site-packages/torch/optim/optimizer.py:33\u001b[0m, in \u001b[0;36m_use_grad_for_differentiable.._use_grad\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 32\u001b[0m torch\u001b[38;5;241m.\u001b[39mset_grad_enabled(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdefaults[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdifferentiable\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[0;32m---> 33\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 34\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 35\u001b[0m torch\u001b[38;5;241m.\u001b[39mset_grad_enabled(prev_grad)\n", - "File \u001b[0;32m/opt/conda/lib/python3.10/site-packages/torch/optim/adam.py:141\u001b[0m, in \u001b[0;36mAdam.step\u001b[0;34m(self, closure)\u001b[0m\n\u001b[1;32m 130\u001b[0m beta1, beta2 \u001b[38;5;241m=\u001b[39m group[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbetas\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[1;32m 132\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_init_group(\n\u001b[1;32m 133\u001b[0m group,\n\u001b[1;32m 134\u001b[0m params_with_grad,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 138\u001b[0m max_exp_avg_sqs,\n\u001b[1;32m 139\u001b[0m state_steps)\n\u001b[0;32m--> 141\u001b[0m \u001b[43madam\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 142\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams_with_grad\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 143\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrads\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 144\u001b[0m \u001b[43m \u001b[49m\u001b[43mexp_avgs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 145\u001b[0m \u001b[43m \u001b[49m\u001b[43mexp_avg_sqs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 146\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_exp_avg_sqs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 147\u001b[0m \u001b[43m \u001b[49m\u001b[43mstate_steps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 148\u001b[0m \u001b[43m \u001b[49m\u001b[43mamsgrad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mamsgrad\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 149\u001b[0m \u001b[43m \u001b[49m\u001b[43mbeta1\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbeta1\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 150\u001b[0m \u001b[43m \u001b[49m\u001b[43mbeta2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbeta2\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 151\u001b[0m \u001b[43m \u001b[49m\u001b[43mlr\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mlr\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 152\u001b[0m \u001b[43m \u001b[49m\u001b[43mweight_decay\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mweight_decay\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 153\u001b[0m \u001b[43m \u001b[49m\u001b[43meps\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43meps\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 154\u001b[0m \u001b[43m \u001b[49m\u001b[43mmaximize\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mmaximize\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 155\u001b[0m \u001b[43m \u001b[49m\u001b[43mforeach\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mforeach\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 156\u001b[0m \u001b[43m \u001b[49m\u001b[43mcapturable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mcapturable\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 157\u001b[0m \u001b[43m \u001b[49m\u001b[43mdifferentiable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mdifferentiable\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 158\u001b[0m \u001b[43m \u001b[49m\u001b[43mfused\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mfused\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 159\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrad_scale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgrad_scale\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 160\u001b[0m \u001b[43m \u001b[49m\u001b[43mfound_inf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfound_inf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 161\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 163\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m loss\n", - "File \u001b[0;32m/opt/conda/lib/python3.10/site-packages/torch/optim/adam.py:281\u001b[0m, in \u001b[0;36madam\u001b[0;34m(params, grads, exp_avgs, exp_avg_sqs, max_exp_avg_sqs, state_steps, foreach, capturable, differentiable, fused, grad_scale, found_inf, amsgrad, beta1, beta2, lr, weight_decay, eps, maximize)\u001b[0m\n\u001b[1;32m 278\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 279\u001b[0m func \u001b[38;5;241m=\u001b[39m _single_tensor_adam\n\u001b[0;32m--> 281\u001b[0m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 282\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrads\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 283\u001b[0m \u001b[43m \u001b[49m\u001b[43mexp_avgs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 284\u001b[0m \u001b[43m \u001b[49m\u001b[43mexp_avg_sqs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 285\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_exp_avg_sqs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 286\u001b[0m \u001b[43m \u001b[49m\u001b[43mstate_steps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 287\u001b[0m \u001b[43m \u001b[49m\u001b[43mamsgrad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mamsgrad\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 288\u001b[0m \u001b[43m \u001b[49m\u001b[43mbeta1\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbeta1\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 289\u001b[0m \u001b[43m \u001b[49m\u001b[43mbeta2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbeta2\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 290\u001b[0m \u001b[43m \u001b[49m\u001b[43mlr\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlr\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 291\u001b[0m \u001b[43m \u001b[49m\u001b[43mweight_decay\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mweight_decay\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 292\u001b[0m \u001b[43m \u001b[49m\u001b[43meps\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43meps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 293\u001b[0m \u001b[43m \u001b[49m\u001b[43mmaximize\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmaximize\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 294\u001b[0m \u001b[43m \u001b[49m\u001b[43mcapturable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcapturable\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 295\u001b[0m \u001b[43m \u001b[49m\u001b[43mdifferentiable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdifferentiable\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 296\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrad_scale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgrad_scale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 297\u001b[0m \u001b[43m \u001b[49m\u001b[43mfound_inf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfound_inf\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/opt/conda/lib/python3.10/site-packages/torch/optim/adam.py:393\u001b[0m, in \u001b[0;36m_single_tensor_adam\u001b[0;34m(params, grads, exp_avgs, exp_avg_sqs, max_exp_avg_sqs, state_steps, grad_scale, found_inf, amsgrad, beta1, beta2, lr, weight_decay, eps, maximize, capturable, differentiable)\u001b[0m\n\u001b[1;32m 390\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 391\u001b[0m denom \u001b[38;5;241m=\u001b[39m (exp_avg_sq\u001b[38;5;241m.\u001b[39msqrt() \u001b[38;5;241m/\u001b[39m bias_correction2_sqrt)\u001b[38;5;241m.\u001b[39madd_(eps)\n\u001b[0;32m--> 393\u001b[0m \u001b[43mparam\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43maddcdiv_\u001b[49m\u001b[43m(\u001b[49m\u001b[43mexp_avg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdenom\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43mstep_size\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + "Epoch [1/250], Trainingsverlust: 1.0121, Validierungsverlust: 0.9179\n", + "Epoch [2/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [3/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [4/250], Trainingsverlust: 0.9544, Validierungsverlust: 0.9179\n", + "Epoch [5/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [6/250], Trainingsverlust: 0.9547, Validierungsverlust: 0.9179\n", + "Epoch [7/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [8/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [9/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [10/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [11/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [12/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [13/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [14/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [15/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [16/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [17/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [18/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [19/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [20/250], Trainingsverlust: 0.9544, Validierungsverlust: 0.9179\n", + "Epoch [21/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [22/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [23/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [24/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [25/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [26/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [27/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [28/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [29/250], Trainingsverlust: 0.9548, Validierungsverlust: 0.9179\n", + "Epoch [30/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [31/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [32/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [33/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [34/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [35/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [36/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [37/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [38/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [39/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [40/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [41/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [42/250], Trainingsverlust: 0.9546, Validierungsverlust: 0.9179\n", + "Epoch [43/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [44/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [45/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [46/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [47/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [48/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [49/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [50/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [51/250], Trainingsverlust: 0.9561, Validierungsverlust: 0.9179\n", + "Epoch [52/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [53/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [54/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [55/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [56/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [57/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [58/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [59/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [60/250], Trainingsverlust: 0.9560, Validierungsverlust: 0.9179\n", + "Epoch [61/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [62/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [63/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [64/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [65/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [66/250], Trainingsverlust: 0.9548, Validierungsverlust: 0.9179\n", + "Epoch [67/250], Trainingsverlust: 0.9547, Validierungsverlust: 0.9179\n", + "Epoch [68/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [69/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [70/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [71/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [72/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [73/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [74/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [75/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [76/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [77/250], Trainingsverlust: 0.9561, Validierungsverlust: 0.9179\n", + "Epoch [78/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [79/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [80/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [81/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [82/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [83/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [84/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [85/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [86/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [87/250], Trainingsverlust: 0.9546, Validierungsverlust: 0.9179\n", + "Epoch [88/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [89/250], Trainingsverlust: 0.9560, Validierungsverlust: 0.9179\n", + "Epoch [90/250], Trainingsverlust: 0.9564, Validierungsverlust: 0.9179\n", + "Epoch [91/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [92/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [93/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [94/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [95/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [96/250], Trainingsverlust: 0.9548, Validierungsverlust: 0.9179\n", + "Epoch [97/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [98/250], Trainingsverlust: 0.9544, Validierungsverlust: 0.9179\n", + "Epoch [99/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [100/250], Trainingsverlust: 0.9543, Validierungsverlust: 0.9179\n", + "Epoch [101/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [102/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [103/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [104/250], Trainingsverlust: 0.9544, Validierungsverlust: 0.9179\n", + "Epoch [105/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [106/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [107/250], Trainingsverlust: 0.9547, Validierungsverlust: 0.9179\n", + "Epoch [108/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [109/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [110/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [111/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [112/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [113/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [114/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [115/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [116/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [117/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [118/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [119/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [120/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [121/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [122/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [123/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [124/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [125/250], Trainingsverlust: 0.9547, Validierungsverlust: 0.9179\n", + "Epoch [126/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [127/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [128/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [129/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [130/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [131/250], Trainingsverlust: 0.9545, Validierungsverlust: 0.9179\n", + "Epoch [132/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [133/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [134/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [135/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [136/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [137/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [138/250], Trainingsverlust: 0.9561, Validierungsverlust: 0.9179\n", + "Epoch [139/250], Trainingsverlust: 0.9548, Validierungsverlust: 0.9179\n", + "Epoch [140/250], Trainingsverlust: 0.9548, Validierungsverlust: 0.9179\n", + "Epoch [141/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [142/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [143/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [144/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [145/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [146/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [147/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [148/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [149/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [150/250], Trainingsverlust: 0.9546, Validierungsverlust: 0.9179\n", + "Epoch [151/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [152/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [153/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [154/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [155/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [156/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [157/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [158/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [159/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [160/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [161/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [162/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [163/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [164/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [165/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [166/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [167/250], Trainingsverlust: 0.9558, Validierungsverlust: 0.9179\n", + "Epoch [168/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [169/250], Trainingsverlust: 0.9561, Validierungsverlust: 0.9179\n", + "Epoch [170/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [171/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [172/250], Trainingsverlust: 0.9544, Validierungsverlust: 0.9179\n", + "Epoch [173/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [174/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [175/250], Trainingsverlust: 0.9548, Validierungsverlust: 0.9179\n", + "Epoch [176/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [177/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [178/250], Trainingsverlust: 0.9561, Validierungsverlust: 0.9179\n", + "Epoch [179/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [180/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [181/250], Trainingsverlust: 0.9557, Validierungsverlust: 0.9179\n", + "Epoch [182/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [183/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [184/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [185/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [186/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [187/250], Trainingsverlust: 0.9547, Validierungsverlust: 0.9179\n", + "Epoch [188/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [189/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [190/250], Trainingsverlust: 0.9547, Validierungsverlust: 0.9179\n", + "Epoch [191/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [192/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [193/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [194/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [195/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [196/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [197/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [198/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [199/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [200/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [201/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [202/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [203/250], Trainingsverlust: 0.9546, Validierungsverlust: 0.9179\n", + "Epoch [204/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [205/250], Trainingsverlust: 0.9546, Validierungsverlust: 0.9179\n", + "Epoch [206/250], Trainingsverlust: 0.9547, Validierungsverlust: 0.9179\n", + "Epoch [207/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [208/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [209/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [210/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [211/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [212/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [213/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [214/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [215/250], Trainingsverlust: 0.9548, Validierungsverlust: 0.9179\n", + "Epoch [216/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [217/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [218/250], Trainingsverlust: 0.9547, Validierungsverlust: 0.9179\n", + "Epoch [219/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [220/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [221/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [222/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [223/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [224/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [225/250], Trainingsverlust: 0.9543, Validierungsverlust: 0.9179\n", + "Epoch [226/250], Trainingsverlust: 0.9546, Validierungsverlust: 0.9179\n", + "Epoch [227/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [228/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [229/250], Trainingsverlust: 0.9547, Validierungsverlust: 0.9179\n", + "Epoch [230/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [231/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [232/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [233/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [234/250], Trainingsverlust: 0.9554, Validierungsverlust: 0.9179\n", + "Epoch [235/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [236/250], Trainingsverlust: 0.9552, Validierungsverlust: 0.9179\n", + "Epoch [237/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [238/250], Trainingsverlust: 0.9559, Validierungsverlust: 0.9179\n", + "Epoch [239/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [240/250], Trainingsverlust: 0.9545, Validierungsverlust: 0.9179\n", + "Epoch [241/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [242/250], Trainingsverlust: 0.9550, Validierungsverlust: 0.9179\n", + "Epoch [243/250], Trainingsverlust: 0.9546, Validierungsverlust: 0.9179\n", + "Epoch [244/250], Trainingsverlust: 0.9556, Validierungsverlust: 0.9179\n", + "Epoch [245/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [246/250], Trainingsverlust: 0.9553, Validierungsverlust: 0.9179\n", + "Epoch [247/250], Trainingsverlust: 0.9549, Validierungsverlust: 0.9179\n", + "Epoch [248/250], Trainingsverlust: 0.9551, Validierungsverlust: 0.9179\n", + "Epoch [249/250], Trainingsverlust: 0.9555, Validierungsverlust: 0.9179\n", + "Epoch [250/250], Trainingsverlust: 0.9547, Validierungsverlust: 0.9179\n" ] } ], @@ -813,12 +944,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "id": "baf1caa8-d3d9-48e8-9339-81194521528d", "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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ERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDrnjQhAS5cuRbVq1aBQKODt7Y0zZ86UOG9eXh5mzZoFV1dXKBQK1K9fH/v37y9x/m+//RYSiQRjx459DSUnIiKit5HWA9CmTZswbtw4TJ8+HRcuXED9+vXh6+uL+Pj4YuefOnUqfv31VyxZsgTXr1/HsGHD0L17d1y8eLHIvGfPnsWvv/6KevXqve7dICIioreI1gPQwoUL8emnn2LgwIGoXbs2li9fDiMjI6xcubLY+deuXYspU6agU6dOcHFxwfDhw9GpUycsWLBAbb709HQEBATgt99+g6WlpSZ2hYiIiN4SWg1Aubm5OH/+PHx8fMRpUqkUPj4+CA4OLnaZnJwcKBQKtWmGhoY4fvy42rQRI0agc+fOausuSU5ODlJTU9UeREREVHFpNQAlJiZCqVTC1tZWbbqtrS1iY2OLXcbX1xcLFy5EeHg4VCoVDh06hO3btyMmJkacZ+PGjbhw4QLmzZtXqnLMmzcP5ubm4sPJyenld4qIiIjeeFrvAiurxYsXw93dHbVq1YKBgQFGjhyJgQMHQiot2JV79+5hzJgxWLduXZGWopJMnjwZKSkp4uPevXuvcxeIiIhIy7QagKysrCCTyRAXF6c2PS4uDnZ2dsUuY21tjZ07dyIjIwORkZEIDQ2FiYkJXFxcAADnz59HfHw8GjVqBD09Pejp6eHo0aP46aefoKenB6VSWWSdcrkcZmZmag8iIiKquLQagAwMDODl5YXAwEBxmkqlQmBgIJo3b/7cZRUKBRwdHZGfn49t27aha9euAID27dvjypUruHTpkvho3LgxAgICcOnSJchkste6T0RERPTm09N2AcaNG4f+/fujcePGaNq0KRYtWoSMjAwMHDgQANCvXz84OjqK43lOnz6N6OhoNGjQANHR0ZgxYwZUKhUmTJgAADA1NUXdunXVtmFsbIzKlSsXmU5ERES6SesByN/fHwkJCZg2bRpiY2PRoEED7N+/XxwYHRUVJY7vAYDs7GxMnToVd+7cgYmJCTp16oS1a9fCwsJCS3tAREREbxuJIAiCtgvxpklNTYW5uTlSUlI4HoiIiOgtUZbv77fuLDAiIiKiV8UARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6Zw3IgAtXboU1apVg0KhgLe3N86cOVPivHl5eZg1axZcXV2hUChQv3597N+/X22eefPmoUmTJjA1NYWNjQ26deuGsLCw170bRERE9JbQegDatGkTxo0bh+nTp+PChQuoX78+fH19ER8fX+z8U6dOxa+//oolS5bg+vXrGDZsGLp3746LFy+K8xw9ehQjRozAqVOncOjQIeTl5aFDhw7IyMjQ1G4RERHRG0wiCIKgzQJ4e3ujSZMm+PnnnwEAKpUKTk5OGDVqFCZNmlRkfgcHB3z11VcYMWKEOK1nz54wNDTEX3/9Vew2EhISYGNjg6NHj6J169YvLFNqairMzc2RkpICMzOzl9wzIiIi0qSyfH9rtQUoNzcX58+fh4+PjzhNKpXCx8cHwcHBxS6Tk5MDhUKhNs3Q0BDHjx8vcTspKSkAgEqVKpW4ztTUVLUHERERVVxaDUCJiYlQKpWwtbVVm25ra4vY2Nhil/H19cXChQsRHh4OlUqFQ4cOYfv27YiJiSl2fpVKhbFjx6Jly5aoW7dusfPMmzcP5ubm4sPJyenVdoyIiIjeaFofA1RWixcvhru7O2rVqgUDAwOMHDkSAwcOhFRa/K6MGDECV69excaNG0tc5+TJk5GSkiI+7t2797qKT0RERG8ArQYgKysryGQyxMXFqU2Pi4uDnZ1dsctYW1tj586dyMjIQGRkJEJDQ2FiYgIXF5ci844cORK7d+/GkSNHUKVKlRLLIZfLYWZmpvYgIiKiikurAcjAwABeXl4IDAwUp6lUKgQGBqJ58+bPXVahUMDR0RH5+fnYtm0bunbtKr4mCAJGjhyJHTt24N9//0X16tVf2z4QERHR20dP2wUYN24c+vfvj8aNG6Np06ZYtGgRMjIyMHDgQABAv3794OjoiHnz5gEATp8+jejoaDRo0ADR0dGYMWMGVCoVJkyYIK5zxIgRWL9+PXbt2gVTU1NxPJG5uTkMDQ01v5NERET0RtF6APL390dCQgKmTZuG2NhYNGjQAPv37xcHRkdFRamN78nOzsbUqVNx584dmJiYoFOnTli7di0sLCzEeZYtWwYAaNu2rdq2Vq1ahQEDBrzuXSIiIqI3nNavA/Qmem3XARIEIC+z/NZHRET0NtM3AiSScltdWb6/td4CpFPyMoG5DtouBRER0ZthygPAwFgrm37rToMnIiIielVsAdIkfaOCtEtEREQF34tawgCkSRKJ1pr6iIiI6Al2gREREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RwGICIiItI5DEBERESkcxiAiIiISOcwABEREZHOYQAiIiIincMARERERDqHAYiIiIh0DgMQERER6RzeDb4YgiAAAFJTU7VcEiIiIiqtwu/twu/x52EAKkZaWhoAwMnJScslISIiorJKS0uDubn5c+eRCKWJSTpGpVLhwYMHMDU1hUQiKdd1p6amwsnJCffu3YOZmVm5rpueYD1rDutaM1jPmsO61ozXUc+CICAtLQ0ODg6QSp8/yoctQMWQSqWoUqXKa92GmZkZ/7E0gPWsOaxrzWA9aw7rWjPKu55f1PJTiIOgiYiISOcwABEREZHOYQDSMLlcjunTp0Mul2u7KBUa61lzWNeawXrWHNa1Zmi7njkImoiIiHQOW4CIiIhI5zAAERERkc5hACIiIiKdwwBEREREOocBSIOWLl2KatWqQaFQwNvbG2fOnNF2kd56M2bMgEQiUXvUqlVLfD07OxsjRoxA5cqVYWJigp49eyIuLk6LJX47HDt2DF26dIGDgwMkEgl27typ9rogCJg2bRrs7e1haGgIHx8fhIeHq82TlJSEgIAAmJmZwcLCAoMHD0Z6eroG9+Lt8KK6HjBgQJFj3M/PT20e1vWLzZs3D02aNIGpqSlsbGzQrVs3hIWFqc1Tms+LqKgodO7cGUZGRrCxscGXX36J/Px8Te7KG6009dy2bdsix/SwYcPU5tFEPTMAacimTZswbtw4TJ8+HRcuXED9+vXh6+uL+Ph4bRftrVenTh3ExMSIj+PHj4uvff755/jnn3+wZcsWHD16FA8ePECPHj20WNq3Q0ZGBurXr4+lS5cW+/p3332Hn376CcuXL8fp06dhbGwMX19fZGdni/MEBATg2rVrOHToEHbv3o1jx45hyJAhmtqFt8aL6hoA/Pz81I7xDRs2qL3Oun6xo0ePYsSIETh16hQOHTqEvLw8dOjQARkZGeI8L/q8UCqV6Ny5M3Jzc3Hy5EmsWbMGq1evxrRp07SxS2+k0tQzAHz66adqx/R3330nvqaxehZII5o2bSqMGDFCfK5UKgUHBwdh3rx5WizV22/69OlC/fr1i30tOTlZ0NfXF7Zs2SJOu3HjhgBACA4O1lAJ334AhB07dojPVSqVYGdnJ3z//ffitOTkZEEulwsbNmwQBEEQrl+/LgAQzp49K86zb98+QSKRCNHR0Ror+9vm2boWBEHo37+/0LVr1xKXYV2/nPj4eAGAcPToUUEQSvd5sXfvXkEqlQqxsbHiPMuWLRPMzMyEnJwcze7AW+LZehYEQWjTpo0wZsyYEpfRVD2zBUgDcnNzcf78efj4+IjTpFIpfHx8EBwcrMWSVQzh4eFwcHCAi4sLAgICEBUVBQA4f/488vLy1Oq9Vq1aqFq1Kuv9FURERCA2NlatXs3NzeHt7S3Wa3BwMCwsLNC4cWNxHh8fH0ilUpw+fVrjZX7bBQUFwcbGBjVr1sTw4cPx8OFD8TXW9ctJSUkBAFSqVAlA6T4vgoOD4enpCVtbW3EeX19fpKam4tq1axos/dvj2XoutG7dOlhZWaFu3bqYPHkyMjMzxdc0Vc+8GaoGJCYmQqlUqr2ZAGBra4vQ0FAtlapi8Pb2xurVq1GzZk3ExMRg5syZaNWqFa5evYrY2FgYGBjAwsJCbRlbW1vExsZqp8AVQGHdFXc8F74WGxsLGxsbtdf19PRQqVIl1n0Z+fn5oUePHqhevTpu376NKVOmoGPHjggODoZMJmNdvwSVSoWxY8eiZcuWqFu3LgCU6vMiNja22OO+8DVSV1w9A0Dfvn3h7OwMBwcHXL58GRMnTkRYWBi2b98OQHP1zABEb7WOHTuKf9erVw/e3t5wdnbG5s2bYWhoqMWSEZWP3r17i397enqiXr16cHV1RVBQENq3b6/Fkr29RowYgatXr6qNF6TyV1I9Pz0+zdPTE/b29mjfvj1u374NV1dXjZWPXWAaYGVlBZlMVuRsgri4ONjZ2WmpVBWThYUFatSogVu3bsHOzg65ublITk5Wm4f1/moK6+55x7OdnV2RAf75+flISkpi3b8iFxcXWFlZ4datWwBY12U1cuRI7N69G0eOHEGVKlXE6aX5vLCzsyv2uC98jZ4oqZ6L4+3tDQBqx7Qm6pkBSAMMDAzg5eWFwMBAcZpKpUJgYCCaN2+uxZJVPOnp6bh9+zbs7e3h5eUFfX19tXoPCwtDVFQU6/0VVK9eHXZ2dmr1mpqaitOnT4v12rx5cyQnJ+P8+fPiPP/++y9UKpX4YUcv5/79+3j48CHs7e0BsK5LSxAEjBw5Ejt27MC///6L6tWrq71ems+L5s2b48qVK2qB89ChQzAzM0Pt2rU1syNvuBfVc3EuXboEAGrHtEbqudyGU9Nzbdy4UZDL5cLq1auF69evC0OGDBEsLCzURrlT2X3xxRdCUFCQEBERIZw4cULw8fERrKyshPj4eEEQBGHYsGFC1apVhX///Vc4d+6c0Lx5c6F58+ZaLvWbLy0tTbh48aJw8eJFAYCwcOFC4eLFi0JkZKQgCILw7bffChYWFsKuXbuEy5cvC127dhWqV68uZGVlievw8/MTGjZsKJw+fVo4fvy44O7uLvTp00dbu/TGel5dp6WlCePHjxeCg4OFiIgI4fDhw0KjRo0Ed3d3ITs7W1wH6/rFhg8fLpibmwtBQUFCTEyM+MjMzBTnedHnRX5+vlC3bl2hQ4cOwqVLl4T9+/cL1tbWwuTJk7WxS2+kF9XzrVu3hFmzZgnnzp0TIiIihF27dgkuLi5C69atxXVoqp4ZgDRoyZIlQtWqVQUDAwOhadOmwqlTp7RdpLeev7+/YG9vLxgYGAiOjo6Cv7+/cOvWLfH1rKws4bPPPhMsLS0FIyMjoXv37kJMTIwWS/x2OHLkiACgyKN///6CIBScCv/1118Ltra2glwuF9q3by+EhYWprePhw4dCnz59BBMTE8HMzEwYOHCgkJaWpoW9ebM9r64zMzOFDh06CNbW1oK+vr7g7OwsfPrpp0V+OLGuX6y4OgYgrFq1SpynNJ8Xd+/eFTp27CgYGhoKVlZWwhdffCHk5eVpeG/eXC+q56ioKKF169ZCpUqVBLlcLri5uQlffvmlkJKSorYeTdSz5HGBiYiIiHQGxwARERGRzmEAIiIiIp3DAEREREQ6hwGIiIiIdA4DEBEREekcBiAiIiLSOQxAREREpHMYgIiIAEgkEuzcuVPbxSAiDWEAIiKtGzBgACQSSZGHn5+ftotGRBWUnrYLQEQEAH5+fli1apXaNLlcrqXSEFFFxxYgInojyOVy2NnZqT0sLS0BFHRPLVu2DB07doShoSFcXFywdetWteWvXLmCdu3awdDQEJUrV8aQIUOQnp6uNs/KlStRp04dyOVy2NvbY+TIkWqvJyYmonv37jAyMoK7uzv+/vtvtdevXr2Kjh07wsTEBLa2tvj444+RmJgovt62bVuMHj0aEyZMQKVKlWBnZ4cZM2aUYy0RUXlhACKit8LXX3+Nnj17IiQkBAEBAejduzdu3LgBAMjIyICvry8sLS1x9uxZbNmyBYcPH1YLOMuWLcOIESMwZMgQXLlyBX///Tfc3NzUtjFz5kz06tULly9fRqdOnRAQEICkpCQAQHJyMtq1a4eGDRvi3Llz2L9/P+Li4tCrVy+1daxZswbGxsY4ffo0vvvuO8yaNQuHDh16zbVDRGVWrrdWJSJ6Cf379xdkMplgbGys9pgzZ44gCAV3mB42bJjaMt7e3sLw4cMFQRCEFStWCJaWlkJ6err4+p49ewSpVCreOd3BwUH46quvSiwDAGHq1Kni8/T0dAGAsG/fPkEQBGH27NlChw4d1Ja5d++eAEAICwsTBEEQ2rRpI7zzzjtq8zRp0kSYOHFimeqDiF4/jgEiojfCu+++i2XLlqlNq1Spkvh38+bN1V5r3rw5Ll26BAC4ceMG6tevD2NjY/H1li1bQqVSISwsDBKJBA8ePED79u2fW4Z69eqJfxsbG8PMzAzx8fEAgJCQEBw5cgQmJiZFlrt9+zZq1KhRZB0AYG9vL66DiN4cDEBE9EYwNjYu0iVVXgwNDUs1n76+vtpziUQClUoFAEhPT0eXLl0wf/78IsvZ29uXah1E9ObgGCAieiucOnWqyHMPDw8AgIeHB0JCQpCRkSG+fuLECUilUtSsWROmpqaoVq0aAgMDX3r7jRo1wrVr11CtWjW4ubmpPZ5ueSKitwMDEBG9EXJychAbG6v2ePoMqy1btmDlypW4efMmpk+fjjNnzoiDnAMCAqBQKNC/f39cvXoVR44cwahRo/Dxxx/D1tYWADBjxgwsWLAAP/30E8LDw3HhwgUsWbKk1OUbMWIEkpKS0KdPH5w9exa3b9/GgQMHMHDgQCiVyvKtDCJ67dgFRkRvhP3796t1JQFAzZo1ERoaCqDgDK2NGzfis88+g729PTZs2IDatWsDAIyMjHDgwAGMGTMGTZo0gZGREXr27ImFCxeK6+rfvz+ys7Px448/Yvz48bCyssIHH3xQ6vI5ODjgxIkTmDhxIjp06ICcnBw4OzvDz88PUil/SxK9bSSCIAjaLgQR0fNIJBLs2LED3bp103ZRiKiC4M8WIiIi0jkMQERERKRzOAaIiN547KknovLGFiAiIiLSOQxAREREpHMYgIiIiEjnMAARERGRzmEAIiIiIp3DAEREREQ6hwGIiIiIdA4DEBEREekcBiAiIiLSOf8HUMcbGMo8u+AAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "import matplotlib.pyplot as plt\n", "\n", @@ -833,7 +975,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "8e339354-a7cc-4e8a-9323-4be41ef62117", "metadata": {}, "outputs": [], @@ -853,54 +995,33 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 19, "id": "088db0b3-8c33-41ff-a543-1b1e50c5e589", "metadata": { "tags": [] }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Transformierte Daten: [[-6.02552113e+01 4.57642675e+01 1.11957079e+02 ... 2.58331825e+00\n", - " 9.99342571e-01 -2.77477317e-01]\n", - " [-1.64705386e+01 9.03712725e+00 1.04837673e+01 ... 4.06859167e+00\n", - " 2.01083350e+00 1.49404086e+00]\n", - " [ 7.52348753e+00 -1.55853934e+01 -4.76301782e+01 ... -7.87604764e+00\n", - " -7.56801224e-02 8.37028680e+00]\n", - " ...\n", - " [-2.72012678e+01 4.44526098e+00 2.60063820e+01 ... 3.08321694e-01\n", - " 2.28939485e+00 -7.14920382e+00]\n", - " [-3.48027066e+01 2.27021639e+01 5.51486742e+01 ... -1.77955416e+01\n", - " 6.24722406e+00 2.32101665e+01]\n", - " [-3.98223613e+01 1.88534866e+01 5.32794498e+01 ... -1.45806809e+00\n", - " 1.18270903e+01 -2.84291311e+00]]\n", - "Varianz erklärt durch jede Komponente: [0.15056597 0.0997506 0.06070173 0.03658789 0.03530275 0.0263503\n", - " 0.02322747 0.01705354 0.01534278 0.01281486 0.01116959 0.0107472\n", - " 0.00989894 0.00906208 0.00871621 0.00813403 0.0074718 0.00708769\n", - " 0.00667045 0.00633275 0.00579241 0.00556758 0.00532382 0.00519289\n", - " 0.00476404 0.00472014 0.00457837 0.00414668 0.00399478 0.00380604\n", - " 0.00362433 0.00349278 0.00336446 0.00323228 0.00310834 0.00300595\n", - " 0.00297408 0.00285178 0.00280688 0.00273987 0.00268256 0.00263102\n", - " 0.00250513 0.00248987 0.0024505 0.0023979 0.00235971 0.00218554\n", - " 0.00217143 0.00212775 0.00210793 0.00205678 0.00202224 0.00200579\n", - " 0.00194754 0.00189606 0.00187714 0.00184969 0.00180133 0.00178537\n", - " 0.00176576 0.00172542 0.00168211 0.00167483 0.00162565 0.00159444\n", - " 0.00158667 0.00155982 0.00155534 0.00151929 0.00149558 0.00147549\n", - " 0.00146982 0.00146262 0.00143338 0.00142085 0.00140628 0.00139744\n", - " 0.00136563 0.00136169 0.00134972 0.00132027 0.00129168 0.00127963\n", - " 0.00126629 0.0012562 0.00123608 0.00122899 0.0012035 0.0011899\n", - " 0.00118094 0.00117162 0.00116552 0.00114295 0.00112631 0.00111896\n", - " 0.00110193 0.00109004 0.00108523 0.00106574 0.00106381 0.001051\n", - " 0.00104179 0.00103669 0.00103248 0.00101669 0.00100527 0.00099315\n", - " 0.00097478 0.00096486 0.00096244 0.00094792 0.00094463 0.00093107\n", - " 0.00092485 0.00090851 0.00089848 0.00089134 0.00087855 0.00087068\n", - " 0.00086397 0.00085563 0.00084342 0.00083406 0.00083064 0.00081791\n", - " 0.00080368 0.00080183 0.00079167 0.00079072 0.00078868 0.00078028\n", - " 0.00077115 0.00076662 0.00076043 0.00075196 0.0007447 0.0007332\n", - " 0.0007252 0.00072345 0.00071902 0.00070594 0.00070125 0.00069603\n", - " 0.00069029 0.00068619 0.00068012 0.00067224 0.00066615 0.00066017]\n" + "ename": "ValueError", + "evalue": "setting an array element with a sequence.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: only size-1 arrays can be converted to Python scalars", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_19797/2932508590.py\u001b[0m in \u001b[0;36m?\u001b[0;34m()\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecomposition\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPCA\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpreprocessing\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mStandardScaler\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.8/site-packages/sklearn/utils/_set_output.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(self, X, *args, **kwargs)\u001b[0m\n\u001b[1;32m 155\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mwraps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 156\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mwrapped\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 157\u001b[0;31m \u001b[0mdata_to_wrap\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 158\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata_to_wrap\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[0;31m# only wrap the first output for cross decomposition\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 160\u001b[0m return_tuple = (\n", + "\u001b[0;32m~/.local/lib/python3.8/site-packages/sklearn/base.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(self, X, y, **fit_params)\u001b[0m\n\u001b[1;32m 912\u001b[0m \u001b[0;31m# non-optimized default implementation; override when a better\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 913\u001b[0m \u001b[0;31m# method is possible for a given clustering algorithm\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 914\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0my\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 915\u001b[0m \u001b[0;31m# fit method of arity 1 (unsupervised transformation)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 916\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 917\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 918\u001b[0m \u001b[0;31m# fit method of arity 2 (supervised transformation)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 919\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.8/site-packages/sklearn/preprocessing/_data.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(self, X, y, sample_weight)\u001b[0m\n\u001b[1;32m 835\u001b[0m \u001b[0mFitted\u001b[0m \u001b[0mscaler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 836\u001b[0m \"\"\"\n\u001b[1;32m 837\u001b[0m \u001b[0;31m# Reset internal state before fitting\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 838\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 839\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpartial_fit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msample_weight\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/.local/lib/python3.8/site-packages/sklearn/base.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1148\u001b[0m skip_parameter_validation=(\n\u001b[1;32m 1149\u001b[0m \u001b[0mprefer_skip_nested_validation\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mglobal_skip_validation\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1150\u001b[0m )\n\u001b[1;32m 1151\u001b[0m ):\n\u001b[0;32m-> 1152\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfit_method\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mestimator\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/.local/lib/python3.8/site-packages/sklearn/preprocessing/_data.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(self, X, y, sample_weight)\u001b[0m\n\u001b[1;32m 871\u001b[0m \u001b[0mself\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0mobject\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 872\u001b[0m \u001b[0mFitted\u001b[0m \u001b[0mscaler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 873\u001b[0m \"\"\"\n\u001b[1;32m 874\u001b[0m \u001b[0mfirst_call\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"n_samples_seen_\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 875\u001b[0;31m X = self._validate_data(\n\u001b[0m\u001b[1;32m 876\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 877\u001b[0m \u001b[0maccept_sparse\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"csr\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"csc\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 878\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mFLOAT_DTYPES\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.8/site-packages/sklearn/base.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(self, X, y, reset, validate_separately, cast_to_ndarray, **check_params)\u001b[0m\n\u001b[1;32m 601\u001b[0m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 602\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 603\u001b[0m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 604\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mno_val_X\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mno_val_y\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 605\u001b[0;31m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcheck_array\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput_name\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"X\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mcheck_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 606\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mno_val_X\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mno_val_y\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 607\u001b[0m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_check_y\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mcheck_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 608\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.8/site-packages/sklearn/utils/validation.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator, input_name)\u001b[0m\n\u001b[1;32m 913\u001b[0m \u001b[0marray\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mxp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 914\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 915\u001b[0m \u001b[0marray\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_asarray_with_order\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morder\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0morder\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxp\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mxp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 916\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mComplexWarning\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mcomplex_warning\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 917\u001b[0;31m raise ValueError(\n\u001b[0m\u001b[1;32m 918\u001b[0m \u001b[0;34m\"Complex data not supported\\n{}\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 919\u001b[0m ) from complex_warning\n\u001b[1;32m 920\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.8/site-packages/sklearn/utils/_array_api.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(array, dtype, order, copy, xp)\u001b[0m\n\u001b[1;32m 376\u001b[0m \u001b[0;31m# Use NumPy API to support order\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 377\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcopy\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 378\u001b[0m \u001b[0marray\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morder\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0morder\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 379\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 380\u001b[0;31m \u001b[0marray\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morder\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0morder\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 381\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 382\u001b[0m \u001b[0;31m# At this point array is a NumPy ndarray. We convert it to an array\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 383\u001b[0m \u001b[0;31m# container that is consistent with the input's namespace.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/miniconda3/envs/rl/lib/python3.8/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(self, dtype)\u001b[0m\n\u001b[1;32m 1996\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__array__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mnpt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDTypeLike\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1997\u001b[0m \u001b[0mvalues\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_values\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1998\u001b[0;31m \u001b[0marr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1999\u001b[0m if (\n\u001b[1;32m 2000\u001b[0m \u001b[0mastype_is_view\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2001\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0musing_copy_on_write\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: setting an array element with a sequence." ] } ], @@ -955,7 +1076,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.10" + "version": "3.8.18" } }, "nbformat": 4,