machinelearning

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit fe7f205beebee2fc7888b7475a2e3af9c1d8d3ff
parent ae07ca496f8c7dc4e5349fcf5f9a6307ec61660e
Author: Andrew <andrewlaack1@gmail.com>
Date:   Thu,  6 Jun 2024 23:54:24 -0500

some stuff

Diffstat:
M.gitignore | 2++
AirisClassification/decisionTree.ipynb | 609+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MirisClassification/softmaxRegression.ipynb | 102++++++++++++++++++++++++++++++++++++++++----------------------------------------
AirisClassification/svmClassifier.ipynb | 515+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AmoonsClassification/svmMoonClassificiation.ipynb | 1344+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AsvmRegression/SVMRegression.ipynb | 565+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 3086 insertions(+), 51 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,2 +1,3 @@ datasets/ models/ +graphs/+ \ No newline at end of file diff --git a/irisClassification/decisionTree.ipynb b/irisClassification/decisionTree.ipynb @@ -0,0 +1,609 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style>#sk-container-id-19 {\n", + " /* Definition of color scheme common for light and dark mode */\n", + " --sklearn-color-text: black;\n", + " --sklearn-color-line: gray;\n", + " /* Definition of color scheme for unfitted estimators */\n", + " --sklearn-color-unfitted-level-0: #fff5e6;\n", + " --sklearn-color-unfitted-level-1: #f6e4d2;\n", + " --sklearn-color-unfitted-level-2: #ffe0b3;\n", + " --sklearn-color-unfitted-level-3: chocolate;\n", + " /* Definition of color scheme for fitted estimators */\n", + " --sklearn-color-fitted-level-0: #f0f8ff;\n", + " --sklearn-color-fitted-level-1: #d4ebff;\n", + " --sklearn-color-fitted-level-2: #b3dbfd;\n", + " --sklearn-color-fitted-level-3: cornflowerblue;\n", + "\n", + " /* Specific color for light theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-icon: #696969;\n", + "\n", + " @media (prefers-color-scheme: dark) {\n", + " /* Redefinition of color scheme for dark theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-icon: #878787;\n", + " }\n", + "}\n", + "\n", + "#sk-container-id-19 {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "#sk-container-id-19 pre {\n", + " padding: 0;\n", + "}\n", + "\n", + "#sk-container-id-19 input.sk-hidden--visually {\n", + " border: 0;\n", + " clip: rect(1px 1px 1px 1px);\n", + " clip: rect(1px, 1px, 1px, 1px);\n", + " height: 1px;\n", + " margin: -1px;\n", + " overflow: hidden;\n", + " padding: 0;\n", + " position: absolute;\n", + " width: 1px;\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-dashed-wrapped {\n", + " border: 1px dashed var(--sklearn-color-line);\n", + " margin: 0 0.4em 0.5em 0.4em;\n", + " box-sizing: border-box;\n", + " padding-bottom: 0.4em;\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-container {\n", + " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", + " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", + " so we also need the `!important` here to be able to override the\n", + " default hidden behavior on the sphinx rendered scikit-learn.org.\n", + " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n", + " display: inline-block !important;\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-text-repr-fallback {\n", + " display: none;\n", + "}\n", + "\n", + "div.sk-parallel-item,\n", + "div.sk-serial,\n", + "div.sk-item {\n", + " /* draw centered vertical line to link estimators */\n", + " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n", + " background-size: 2px 100%;\n", + " background-repeat: no-repeat;\n", + " background-position: center center;\n", + "}\n", + "\n", + "/* Parallel-specific style estimator block */\n", + "\n", + "#sk-container-id-19 div.sk-parallel-item::after {\n", + " content: \"\";\n", + " width: 100%;\n", + " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", + " flex-grow: 1;\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-parallel {\n", + " display: flex;\n", + " align-items: stretch;\n", + " justify-content: center;\n", + " background-color: var(--sklearn-color-background);\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-parallel-item {\n", + " display: flex;\n", + " flex-direction: column;\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-parallel-item:first-child::after {\n", + " align-self: flex-end;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-parallel-item:last-child::after {\n", + " align-self: flex-start;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-parallel-item:only-child::after {\n", + " width: 0;\n", + "}\n", + "\n", + "/* Serial-specific style estimator block */\n", + "\n", + "#sk-container-id-19 div.sk-serial {\n", + " display: flex;\n", + " flex-direction: column;\n", + " align-items: center;\n", + " background-color: var(--sklearn-color-background);\n", + " padding-right: 1em;\n", + " padding-left: 1em;\n", + "}\n", + "\n", + "\n", + "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n", + "clickable and can be expanded/collapsed.\n", + "- Pipeline and ColumnTransformer use this feature and define the default style\n", + "- Estimators will overwrite some part of the style using the `sk-estimator` class\n", + "*/\n", + "\n", + "/* Pipeline and ColumnTransformer style (default) */\n", + "\n", + "#sk-container-id-19 div.sk-toggleable {\n", + " /* Default theme specific background. It is overwritten whether we have a\n", + " specific estimator or a Pipeline/ColumnTransformer */\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "/* Toggleable label */\n", + "#sk-container-id-19 label.sk-toggleable__label {\n", + " cursor: pointer;\n", + " display: block;\n", + " width: 100%;\n", + " margin-bottom: 0;\n", + " padding: 0.5em;\n", + " box-sizing: border-box;\n", + " text-align: center;\n", + "}\n", + "\n", + "#sk-container-id-19 label.sk-toggleable__label-arrow:before {\n", + " /* Arrow on the left of the label */\n", + " content: \"▸\";\n", + " float: left;\n", + " margin-right: 0.25em;\n", + " color: var(--sklearn-color-icon);\n", + "}\n", + "\n", + "#sk-container-id-19 label.sk-toggleable__label-arrow:hover:before {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "/* Toggleable content - dropdown */\n", + "\n", + "#sk-container-id-19 div.sk-toggleable__content {\n", + " max-height: 0;\n", + " max-width: 0;\n", + " overflow: hidden;\n", + " text-align: left;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-toggleable__content.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-toggleable__content pre {\n", + " margin: 0.2em;\n", + " border-radius: 0.25em;\n", + " color: var(--sklearn-color-text);\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-toggleable__content.fitted pre {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-19 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", + " /* Expand drop-down */\n", + " max-height: 200px;\n", + " max-width: 100%;\n", + " overflow: auto;\n", + "}\n", + "\n", + "#sk-container-id-19 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", + " content: \"▾\";\n", + "}\n", + "\n", + "/* Pipeline/ColumnTransformer-specific style */\n", + "\n", + "#sk-container-id-19 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator-specific style */\n", + "\n", + "/* Colorize estimator box */\n", + "#sk-container-id-19 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-label label.sk-toggleable__label,\n", + "#sk-container-id-19 div.sk-label label {\n", + " /* The background is the default theme color */\n", + " color: var(--sklearn-color-text-on-default-background);\n", + "}\n", + "\n", + "/* On hover, darken the color of the background */\n", + "#sk-container-id-19 div.sk-label:hover label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "/* Label box, darken color on hover, fitted */\n", + "#sk-container-id-19 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator label */\n", + "\n", + "#sk-container-id-19 div.sk-label label {\n", + " font-family: monospace;\n", + " font-weight: bold;\n", + " display: inline-block;\n", + " line-height: 1.2em;\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-label-container {\n", + " text-align: center;\n", + "}\n", + "\n", + "/* Estimator-specific */\n", + "#sk-container-id-19 div.sk-estimator {\n", + " font-family: monospace;\n", + " border: 1px dotted var(--sklearn-color-border-box);\n", + " border-radius: 0.25em;\n", + " box-sizing: border-box;\n", + " margin-bottom: 0.5em;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-estimator.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "/* on hover */\n", + "#sk-container-id-19 div.sk-estimator:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-19 div.sk-estimator.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n", + "\n", + "/* Common style for \"i\" and \"?\" */\n", + "\n", + ".sk-estimator-doc-link,\n", + "a:link.sk-estimator-doc-link,\n", + "a:visited.sk-estimator-doc-link {\n", + " float: right;\n", + " font-size: smaller;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1em;\n", + " height: 1em;\n", + " width: 1em;\n", + " text-decoration: none !important;\n", + " margin-left: 1ex;\n", + " /* unfitted */\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted,\n", + "a:link.sk-estimator-doc-link.fitted,\n", + "a:visited.sk-estimator-doc-link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "/* Span, style for the box shown on hovering the info icon */\n", + ".sk-estimator-doc-link span {\n", + " display: none;\n", + " z-index: 9999;\n", + " position: relative;\n", + " font-weight: normal;\n", + " right: .2ex;\n", + " padding: .5ex;\n", + " margin: .5ex;\n", + " width: min-content;\n", + " min-width: 20ex;\n", + " max-width: 50ex;\n", + " color: var(--sklearn-color-text);\n", + " box-shadow: 2pt 2pt 4pt #999;\n", + " /* unfitted */\n", + " background: var(--sklearn-color-unfitted-level-0);\n", + " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted span {\n", + " /* fitted */\n", + " background: var(--sklearn-color-fitted-level-0);\n", + " border: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link:hover span {\n", + " display: block;\n", + "}\n", + "\n", + "/* \"?\"-specific style due to the `<a>` HTML tag */\n", + "\n", + "#sk-container-id-19 a.estimator_doc_link {\n", + " float: right;\n", + " font-size: 1rem;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1rem;\n", + " height: 1rem;\n", + " width: 1rem;\n", + " text-decoration: none;\n", + " /* unfitted */\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + "}\n", + "\n", + "#sk-container-id-19 a.estimator_doc_link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "#sk-container-id-19 a.estimator_doc_link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "#sk-container-id-19 a.estimator_doc_link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "</style><div id=\"sk-container-id-19\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>DecisionTreeClassifier(max_depth=2, random_state=10)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-19\" type=\"checkbox\" checked><label for=\"sk-estimator-id-19\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;DecisionTreeClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier(max_depth=2, random_state=10)</pre></div> </div></div></div></div>" + ], + "text/plain": [ + "DecisionTreeClassifier(max_depth=2, random_state=10)" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.datasets import load_iris\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "\n", + "iris = load_iris(as_frame=True)\n", + "X_iris = iris.data[['petal length (cm)' , 'petal width (cm)']].values\n", + "y_iris = iris.target\n", + "\n", + "tree_clf = DecisionTreeClassifier(max_depth=2, random_state=10, criterion='gini')\n", + "tree_clf.fit(X_iris,y_iris)" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.tree import export_graphviz\n", + "\n", + "graphData = export_graphviz(\n", + " tree_clf,\n", + " out_file='../graphs/iris_tree.dot',\n", + " feature_names=[\"petal length (cm)\", \"petal width (cm)\"],\n", + " class_names=iris.target_names,\n", + " rounded=True,\n", + " filled=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.43.0 (0)\n", + " -->\n", + "<!-- Title: Tree Pages: 1 -->\n", + "<svg width=\"412pt\" height=\"314pt\"\n", + " viewBox=\"0.00 0.00 412.00 314.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 310)\">\n", + "<title>Tree</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-310 408,-310 408,4 -4,4\"/>\n", + "<!-- 0 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<path fill=\"#ffffff\" stroke=\"black\" d=\"M242.5,-306C242.5,-306 81.5,-306 81.5,-306 75.5,-306 69.5,-300 69.5,-294 69.5,-294 69.5,-235 69.5,-235 69.5,-229 75.5,-223 81.5,-223 81.5,-223 242.5,-223 242.5,-223 248.5,-223 254.5,-229 254.5,-235 254.5,-235 254.5,-294 254.5,-294 254.5,-300 248.5,-306 242.5,-306\"/>\n", + "<text text-anchor=\"middle\" x=\"162\" y=\"-290.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">petal width (cm) &lt;= 0.8</text>\n", + "<text text-anchor=\"middle\" x=\"162\" y=\"-275.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.667</text>\n", + "<text text-anchor=\"middle\" x=\"162\" y=\"-260.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 150</text>\n", + "<text text-anchor=\"middle\" x=\"162\" y=\"-245.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [50, 50, 50]</text>\n", + "<text text-anchor=\"middle\" x=\"162\" y=\"-230.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = setosa</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<path fill=\"#e58139\" stroke=\"black\" d=\"M128,-179.5C128,-179.5 12,-179.5 12,-179.5 6,-179.5 0,-173.5 0,-167.5 0,-167.5 0,-123.5 0,-123.5 0,-117.5 6,-111.5 12,-111.5 12,-111.5 128,-111.5 128,-111.5 134,-111.5 140,-117.5 140,-123.5 140,-123.5 140,-167.5 140,-167.5 140,-173.5 134,-179.5 128,-179.5\"/>\n", + "<text text-anchor=\"middle\" x=\"70\" y=\"-164.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.0</text>\n", + "<text text-anchor=\"middle\" x=\"70\" y=\"-149.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 50</text>\n", + "<text text-anchor=\"middle\" x=\"70\" y=\"-134.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [50, 0, 0]</text>\n", + "<text text-anchor=\"middle\" x=\"70\" y=\"-119.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = setosa</text>\n", + "</g>\n", + "<!-- 0&#45;&gt;1 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>0&#45;&gt;1</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M130.08,-222.91C121.14,-211.54 111.42,-199.18 102.45,-187.77\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"105.01,-185.36 96.08,-179.67 99.51,-189.69 105.01,-185.36\"/>\n", + "<text text-anchor=\"middle\" x=\"93.11\" y=\"-200.79\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">True</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<path fill=\"#ffffff\" stroke=\"black\" d=\"M340,-187C340,-187 170,-187 170,-187 164,-187 158,-181 158,-175 158,-175 158,-116 158,-116 158,-110 164,-104 170,-104 170,-104 340,-104 340,-104 346,-104 352,-110 352,-116 352,-116 352,-175 352,-175 352,-181 346,-187 340,-187\"/>\n", + "<text text-anchor=\"middle\" x=\"255\" y=\"-171.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">petal width (cm) &lt;= 1.75</text>\n", + "<text text-anchor=\"middle\" x=\"255\" y=\"-156.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.5</text>\n", + "<text text-anchor=\"middle\" x=\"255\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 100</text>\n", + "<text text-anchor=\"middle\" x=\"255\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [0, 50, 50]</text>\n", + "<text text-anchor=\"middle\" x=\"255\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = versicolor</text>\n", + "</g>\n", + "<!-- 0&#45;&gt;2 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>0&#45;&gt;2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M194.27,-222.91C201.41,-213.92 209.04,-204.32 216.41,-195.05\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"219.31,-197.03 222.79,-187.02 213.83,-192.67 219.31,-197.03\"/>\n", + "<text text-anchor=\"middle\" x=\"225.63\" y=\"-208.16\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">False</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<path fill=\"#4de88e\" stroke=\"black\" d=\"M234,-68C234,-68 118,-68 118,-68 112,-68 106,-62 106,-56 106,-56 106,-12 106,-12 106,-6 112,0 118,0 118,0 234,0 234,0 240,0 246,-6 246,-12 246,-12 246,-56 246,-56 246,-62 240,-68 234,-68\"/>\n", + "<text text-anchor=\"middle\" x=\"176\" y=\"-52.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.168</text>\n", + "<text text-anchor=\"middle\" x=\"176\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 54</text>\n", + "<text text-anchor=\"middle\" x=\"176\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [0, 49, 5]</text>\n", + "<text text-anchor=\"middle\" x=\"176\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = versicolor</text>\n", + "</g>\n", + "<!-- 2&#45;&gt;3 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>2&#45;&gt;3</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M225.58,-103.73C219.2,-94.88 212.44,-85.51 206.03,-76.63\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"208.71,-74.36 200.02,-68.3 203.04,-78.46 208.71,-74.36\"/>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "<path fill=\"#843de6\" stroke=\"black\" d=\"M392,-68C392,-68 276,-68 276,-68 270,-68 264,-62 264,-56 264,-56 264,-12 264,-12 264,-6 270,0 276,0 276,0 392,0 392,0 398,0 404,-6 404,-12 404,-12 404,-56 404,-56 404,-62 398,-68 392,-68\"/>\n", + "<text text-anchor=\"middle\" x=\"334\" y=\"-52.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.043</text>\n", + "<text text-anchor=\"middle\" x=\"334\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 46</text>\n", + "<text text-anchor=\"middle\" x=\"334\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [0, 1, 45]</text>\n", + "<text text-anchor=\"middle\" x=\"334\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = virginica</text>\n", + "</g>\n", + "<!-- 2&#45;&gt;4 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>2&#45;&gt;4</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M284.42,-103.73C290.8,-94.88 297.56,-85.51 303.97,-76.63\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"306.96,-78.46 309.98,-68.3 301.29,-74.36 306.96,-78.46\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<graphviz.sources.Source at 0x7ff614a01850>" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from graphviz import Source\n", + "\n", + "Source.from_file('../graphs/iris_tree.dot')" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0. , 0.91, 0.09]])" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Probability based on the values list.\n", + "tree_clf.predict_proba([[4 , 1]]).round(2)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "notebook", + "language": "python", + "name": "notebook" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/irisClassification/softmaxRegression.ipynb b/irisClassification/softmaxRegression.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 8, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -22,13 +22,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "<style>#sk-container-id-2 {\n", + "<style>#sk-container-id-3 {\n", " /* Definition of color scheme common for light and dark mode */\n", " --sklearn-color-text: black;\n", " --sklearn-color-line: gray;\n", @@ -58,15 +58,15 @@ " }\n", "}\n", "\n", - "#sk-container-id-2 {\n", + "#sk-container-id-3 {\n", " color: var(--sklearn-color-text);\n", "}\n", "\n", - "#sk-container-id-2 pre {\n", + "#sk-container-id-3 pre {\n", " padding: 0;\n", "}\n", "\n", - "#sk-container-id-2 input.sk-hidden--visually {\n", + "#sk-container-id-3 input.sk-hidden--visually {\n", " border: 0;\n", " clip: rect(1px 1px 1px 1px);\n", " clip: rect(1px, 1px, 1px, 1px);\n", @@ -78,7 +78,7 @@ " width: 1px;\n", "}\n", "\n", - "#sk-container-id-2 div.sk-dashed-wrapped {\n", + "#sk-container-id-3 div.sk-dashed-wrapped {\n", " border: 1px dashed var(--sklearn-color-line);\n", " margin: 0 0.4em 0.5em 0.4em;\n", " box-sizing: border-box;\n", @@ -86,7 +86,7 @@ " background-color: var(--sklearn-color-background);\n", "}\n", "\n", - "#sk-container-id-2 div.sk-container {\n", + "#sk-container-id-3 div.sk-container {\n", " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", " so we also need the `!important` here to be able to override the\n", @@ -96,7 +96,7 @@ " position: relative;\n", "}\n", "\n", - "#sk-container-id-2 div.sk-text-repr-fallback {\n", + "#sk-container-id-3 div.sk-text-repr-fallback {\n", " display: none;\n", "}\n", "\n", @@ -112,14 +112,14 @@ "\n", "/* Parallel-specific style estimator block */\n", "\n", - "#sk-container-id-2 div.sk-parallel-item::after {\n", + "#sk-container-id-3 div.sk-parallel-item::after {\n", " content: \"\";\n", " width: 100%;\n", " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", " flex-grow: 1;\n", "}\n", "\n", - "#sk-container-id-2 div.sk-parallel {\n", + "#sk-container-id-3 div.sk-parallel {\n", " display: flex;\n", " align-items: stretch;\n", " justify-content: center;\n", @@ -127,28 +127,28 @@ " position: relative;\n", "}\n", "\n", - "#sk-container-id-2 div.sk-parallel-item {\n", + "#sk-container-id-3 div.sk-parallel-item {\n", " display: flex;\n", " flex-direction: column;\n", "}\n", "\n", - "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n", + "#sk-container-id-3 div.sk-parallel-item:first-child::after {\n", " align-self: flex-end;\n", " width: 50%;\n", "}\n", "\n", - "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n", + "#sk-container-id-3 div.sk-parallel-item:last-child::after {\n", " align-self: flex-start;\n", " width: 50%;\n", "}\n", "\n", - "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n", + "#sk-container-id-3 div.sk-parallel-item:only-child::after {\n", " width: 0;\n", "}\n", "\n", "/* Serial-specific style estimator block */\n", "\n", - "#sk-container-id-2 div.sk-serial {\n", + "#sk-container-id-3 div.sk-serial {\n", " display: flex;\n", " flex-direction: column;\n", " align-items: center;\n", @@ -166,14 +166,14 @@ "\n", "/* Pipeline and ColumnTransformer style (default) */\n", "\n", - "#sk-container-id-2 div.sk-toggleable {\n", + "#sk-container-id-3 div.sk-toggleable {\n", " /* Default theme specific background. It is overwritten whether we have a\n", " specific estimator or a Pipeline/ColumnTransformer */\n", " background-color: var(--sklearn-color-background);\n", "}\n", "\n", "/* Toggleable label */\n", - "#sk-container-id-2 label.sk-toggleable__label {\n", + "#sk-container-id-3 label.sk-toggleable__label {\n", " cursor: pointer;\n", " display: block;\n", " width: 100%;\n", @@ -183,7 +183,7 @@ " text-align: center;\n", "}\n", "\n", - "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n", + "#sk-container-id-3 label.sk-toggleable__label-arrow:before {\n", " /* Arrow on the left of the label */\n", " content: \"▸\";\n", " float: left;\n", @@ -191,13 +191,13 @@ " color: var(--sklearn-color-icon);\n", "}\n", "\n", - "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n", + "#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {\n", " color: var(--sklearn-color-text);\n", "}\n", "\n", "/* Toggleable content - dropdown */\n", "\n", - "#sk-container-id-2 div.sk-toggleable__content {\n", + "#sk-container-id-3 div.sk-toggleable__content {\n", " max-height: 0;\n", " max-width: 0;\n", " overflow: hidden;\n", @@ -206,12 +206,12 @@ " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", - "#sk-container-id-2 div.sk-toggleable__content.fitted {\n", + "#sk-container-id-3 div.sk-toggleable__content.fitted {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", - "#sk-container-id-2 div.sk-toggleable__content pre {\n", + "#sk-container-id-3 div.sk-toggleable__content pre {\n", " margin: 0.2em;\n", " border-radius: 0.25em;\n", " color: var(--sklearn-color-text);\n", @@ -219,79 +219,79 @@ " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", - "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n", + "#sk-container-id-3 div.sk-toggleable__content.fitted pre {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", - "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", + "#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", " /* Expand drop-down */\n", " max-height: 200px;\n", " max-width: 100%;\n", " overflow: auto;\n", "}\n", "\n", - "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", + "#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", " content: \"▾\";\n", "}\n", "\n", "/* Pipeline/ColumnTransformer-specific style */\n", "\n", - "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + "#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", - "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + "#sk-container-id-3 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Estimator-specific style */\n", "\n", "/* Colorize estimator box */\n", - "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + "#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", - "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + "#sk-container-id-3 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", - "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n", - "#sk-container-id-2 div.sk-label label {\n", + "#sk-container-id-3 div.sk-label label.sk-toggleable__label,\n", + "#sk-container-id-3 div.sk-label label {\n", " /* The background is the default theme color */\n", " color: var(--sklearn-color-text-on-default-background);\n", "}\n", "\n", "/* On hover, darken the color of the background */\n", - "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n", + "#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "/* Label box, darken color on hover, fitted */\n", - "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", + "#sk-container-id-3 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Estimator label */\n", "\n", - "#sk-container-id-2 div.sk-label label {\n", + "#sk-container-id-3 div.sk-label label {\n", " font-family: monospace;\n", " font-weight: bold;\n", " display: inline-block;\n", " line-height: 1.2em;\n", "}\n", "\n", - "#sk-container-id-2 div.sk-label-container {\n", + "#sk-container-id-3 div.sk-label-container {\n", " text-align: center;\n", "}\n", "\n", "/* Estimator-specific */\n", - "#sk-container-id-2 div.sk-estimator {\n", + "#sk-container-id-3 div.sk-estimator {\n", " font-family: monospace;\n", " border: 1px dotted var(--sklearn-color-border-box);\n", " border-radius: 0.25em;\n", @@ -301,18 +301,18 @@ " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", - "#sk-container-id-2 div.sk-estimator.fitted {\n", + "#sk-container-id-3 div.sk-estimator.fitted {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", "/* on hover */\n", - "#sk-container-id-2 div.sk-estimator:hover {\n", + "#sk-container-id-3 div.sk-estimator:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", - "#sk-container-id-2 div.sk-estimator.fitted:hover {\n", + "#sk-container-id-3 div.sk-estimator.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", @@ -399,7 +399,7 @@ "\n", "/* \"?\"-specific style due to the `<a>` HTML tag */\n", "\n", - "#sk-container-id-2 a.estimator_doc_link {\n", + "#sk-container-id-3 a.estimator_doc_link {\n", " float: right;\n", " font-size: 1rem;\n", " line-height: 1em;\n", @@ -414,31 +414,31 @@ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", "}\n", "\n", - "#sk-container-id-2 a.estimator_doc_link.fitted {\n", + "#sk-container-id-3 a.estimator_doc_link.fitted {\n", " /* fitted */\n", " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", " color: var(--sklearn-color-fitted-level-1);\n", "}\n", "\n", "/* On hover */\n", - "#sk-container-id-2 a.estimator_doc_link:hover {\n", + "#sk-container-id-3 a.estimator_doc_link:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-3);\n", " color: var(--sklearn-color-background);\n", " text-decoration: none;\n", "}\n", "\n", - "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n", + "#sk-container-id-3 a.estimator_doc_link.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-3);\n", "}\n", - "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(C=30, random_state=10)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression(C=30, random_state=10)</pre></div> </div></div></div></div>" + "</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(C=30, random_state=10)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" checked><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression(C=30, random_state=10)</pre></div> </div></div></div></div>" ], "text/plain": [ "LogisticRegression(C=30, random_state=10)" ] }, - "execution_count": 10, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -454,7 +454,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -463,7 +463,7 @@ "array([2])" ] }, - "execution_count": 18, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -474,7 +474,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -483,7 +483,7 @@ "array([[0. , 0.33, 0.67]])" ] }, - "execution_count": 19, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } diff --git a/irisClassification/svmClassifier.ipynb b/irisClassification/svmClassifier.ipynb @@ -0,0 +1,515 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/andrew/gitRepos/myvenv/lib/python3.11/site-packages/sklearn/svm/_classes.py:31: FutureWarning: The default value of `dual` will change from `True` to `'auto'` in 1.5. Set the value of `dual` explicitly to suppress the warning.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "<style>#sk-container-id-2 {\n", + " /* Definition of color scheme common for light and dark mode */\n", + " --sklearn-color-text: black;\n", + " --sklearn-color-line: gray;\n", + " /* Definition of color scheme for unfitted estimators */\n", + " --sklearn-color-unfitted-level-0: #fff5e6;\n", + " --sklearn-color-unfitted-level-1: #f6e4d2;\n", + " --sklearn-color-unfitted-level-2: #ffe0b3;\n", + " --sklearn-color-unfitted-level-3: chocolate;\n", + " /* Definition of color scheme for fitted estimators */\n", + " --sklearn-color-fitted-level-0: #f0f8ff;\n", + " --sklearn-color-fitted-level-1: #d4ebff;\n", + " --sklearn-color-fitted-level-2: #b3dbfd;\n", + " --sklearn-color-fitted-level-3: cornflowerblue;\n", + "\n", + " /* Specific color for light theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-icon: #696969;\n", + "\n", + " @media (prefers-color-scheme: dark) {\n", + " /* Redefinition of color scheme for dark theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-icon: #878787;\n", + " }\n", + "}\n", + "\n", + "#sk-container-id-2 {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "#sk-container-id-2 pre {\n", + " padding: 0;\n", + "}\n", + "\n", + "#sk-container-id-2 input.sk-hidden--visually {\n", + " border: 0;\n", + " clip: rect(1px 1px 1px 1px);\n", + " clip: rect(1px, 1px, 1px, 1px);\n", + " height: 1px;\n", + " margin: -1px;\n", + " overflow: hidden;\n", + " padding: 0;\n", + " position: absolute;\n", + " width: 1px;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-dashed-wrapped {\n", + " border: 1px dashed var(--sklearn-color-line);\n", + " margin: 0 0.4em 0.5em 0.4em;\n", + " box-sizing: border-box;\n", + " padding-bottom: 0.4em;\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-container {\n", + " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", + " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", + " so we also need the `!important` here to be able to override the\n", + " default hidden behavior on the sphinx rendered scikit-learn.org.\n", + " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n", + " display: inline-block !important;\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-text-repr-fallback {\n", + " display: none;\n", + "}\n", + "\n", + "div.sk-parallel-item,\n", + "div.sk-serial,\n", + "div.sk-item {\n", + " /* draw centered vertical line to link estimators */\n", + " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n", + " background-size: 2px 100%;\n", + " background-repeat: no-repeat;\n", + " background-position: center center;\n", + "}\n", + "\n", + "/* Parallel-specific style estimator block */\n", + "\n", + "#sk-container-id-2 div.sk-parallel-item::after {\n", + " content: \"\";\n", + " width: 100%;\n", + " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", + " flex-grow: 1;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-parallel {\n", + " display: flex;\n", + " align-items: stretch;\n", + " justify-content: center;\n", + " background-color: var(--sklearn-color-background);\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-parallel-item {\n", + " display: flex;\n", + " flex-direction: column;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n", + " align-self: flex-end;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n", + " align-self: flex-start;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n", + " width: 0;\n", + "}\n", + "\n", + "/* Serial-specific style estimator block */\n", + "\n", + "#sk-container-id-2 div.sk-serial {\n", + " display: flex;\n", + " flex-direction: column;\n", + " align-items: center;\n", + " background-color: var(--sklearn-color-background);\n", + " padding-right: 1em;\n", + " padding-left: 1em;\n", + "}\n", + "\n", + "\n", + "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n", + "clickable and can be expanded/collapsed.\n", + "- Pipeline and ColumnTransformer use this feature and define the default style\n", + "- Estimators will overwrite some part of the style using the `sk-estimator` class\n", + "*/\n", + "\n", + "/* Pipeline and ColumnTransformer style (default) */\n", + "\n", + "#sk-container-id-2 div.sk-toggleable {\n", + " /* Default theme specific background. It is overwritten whether we have a\n", + " specific estimator or a Pipeline/ColumnTransformer */\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "/* Toggleable label */\n", + "#sk-container-id-2 label.sk-toggleable__label {\n", + " cursor: pointer;\n", + " display: block;\n", + " width: 100%;\n", + " margin-bottom: 0;\n", + " padding: 0.5em;\n", + " box-sizing: border-box;\n", + " text-align: center;\n", + "}\n", + "\n", + "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n", + " /* Arrow on the left of the label */\n", + " content: \"▸\";\n", + " float: left;\n", + " margin-right: 0.25em;\n", + " color: var(--sklearn-color-icon);\n", + "}\n", + "\n", + "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "/* Toggleable content - dropdown */\n", + "\n", + "#sk-container-id-2 div.sk-toggleable__content {\n", + " max-height: 0;\n", + " max-width: 0;\n", + " overflow: hidden;\n", + " text-align: left;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-toggleable__content.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-toggleable__content pre {\n", + " margin: 0.2em;\n", + " border-radius: 0.25em;\n", + " color: var(--sklearn-color-text);\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", + " /* Expand drop-down */\n", + " max-height: 200px;\n", + " max-width: 100%;\n", + " overflow: auto;\n", + "}\n", + "\n", + "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", + " content: \"▾\";\n", + "}\n", + "\n", + "/* Pipeline/ColumnTransformer-specific style */\n", + "\n", + "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator-specific style */\n", + "\n", + "/* Colorize estimator box */\n", + "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n", + "#sk-container-id-2 div.sk-label label {\n", + " /* The background is the default theme color */\n", + " color: var(--sklearn-color-text-on-default-background);\n", + "}\n", + "\n", + "/* On hover, darken the color of the background */\n", + "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "/* Label box, darken color on hover, fitted */\n", + "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator label */\n", + "\n", + "#sk-container-id-2 div.sk-label label {\n", + " font-family: monospace;\n", + " font-weight: bold;\n", + " display: inline-block;\n", + " line-height: 1.2em;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-label-container {\n", + " text-align: center;\n", + "}\n", + "\n", + "/* Estimator-specific */\n", + "#sk-container-id-2 div.sk-estimator {\n", + " font-family: monospace;\n", + " border: 1px dotted var(--sklearn-color-border-box);\n", + " border-radius: 0.25em;\n", + " box-sizing: border-box;\n", + " margin-bottom: 0.5em;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-estimator.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "/* on hover */\n", + "#sk-container-id-2 div.sk-estimator:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-estimator.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n", + "\n", + "/* Common style for \"i\" and \"?\" */\n", + "\n", + ".sk-estimator-doc-link,\n", + "a:link.sk-estimator-doc-link,\n", + "a:visited.sk-estimator-doc-link {\n", + " float: right;\n", + " font-size: smaller;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1em;\n", + " height: 1em;\n", + " width: 1em;\n", + " text-decoration: none !important;\n", + " margin-left: 1ex;\n", + " /* unfitted */\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted,\n", + "a:link.sk-estimator-doc-link.fitted,\n", + "a:visited.sk-estimator-doc-link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "/* Span, style for the box shown on hovering the info icon */\n", + ".sk-estimator-doc-link span {\n", + " display: none;\n", + " z-index: 9999;\n", + " position: relative;\n", + " font-weight: normal;\n", + " right: .2ex;\n", + " padding: .5ex;\n", + " margin: .5ex;\n", + " width: min-content;\n", + " min-width: 20ex;\n", + " max-width: 50ex;\n", + " color: var(--sklearn-color-text);\n", + " box-shadow: 2pt 2pt 4pt #999;\n", + " /* unfitted */\n", + " background: var(--sklearn-color-unfitted-level-0);\n", + " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted span {\n", + " /* fitted */\n", + " background: var(--sklearn-color-fitted-level-0);\n", + " border: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link:hover span {\n", + " display: block;\n", + "}\n", + "\n", + "/* \"?\"-specific style due to the `<a>` HTML tag */\n", + "\n", + "#sk-container-id-2 a.estimator_doc_link {\n", + " float: right;\n", + " font-size: 1rem;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1rem;\n", + " height: 1rem;\n", + " width: 1rem;\n", + " text-decoration: none;\n", + " /* unfitted */\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + "}\n", + "\n", + "#sk-container-id-2 a.estimator_doc_link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "#sk-container-id-2 a.estimator_doc_link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;standardscaler&#x27;, StandardScaler()),\n", + " (&#x27;linearsvc&#x27;, LinearSVC(C=1, random_state=10))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[(&#x27;standardscaler&#x27;, StandardScaler()),\n", + " (&#x27;linearsvc&#x27;, LinearSVC(C=1, random_state=10))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;StandardScaler<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;LinearSVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.svm.LinearSVC.html\">?<span>Documentation for LinearSVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>LinearSVC(C=1, random_state=10)</pre></div> </div></div></div></div></div></div>" + ], + "text/plain": [ + "Pipeline(steps=[('standardscaler', StandardScaler()),\n", + " ('linearsvc', LinearSVC(C=1, random_state=10))])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.datasets import load_iris\n", + "from sklearn.pipeline import make_pipeline\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.svm import LinearSVC\n", + "\n", + "iris = load_iris(as_frame=True)\n", + "X = iris.data[['petal length (cm)' , 'petal width (cm)']].values\n", + "y = (iris.target == 2)\n", + "\n", + "svm_clf = make_pipeline(StandardScaler() , LinearSVC(C=1,random_state=10))\n", + "svm_clf.fit(X,y)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ True, False])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_new = [[5.5, 1.7] , [5.0 , 1.5]]\n", + "svm_clf.predict(X_new)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.66163366, -0.22036138])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Distance for each sample from the decision boundary (signed values denoting which side they are on positive is true)\n", + "svm_clf.decision_function(X_new)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "notebook", + "language": "python", + "name": "notebook" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/moonsClassification/svmMoonClassificiation.ipynb b/moonsClassification/svmMoonClassificiation.ipynb @@ -0,0 +1,1344 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/andrew/gitRepos/myvenv/lib/python3.11/site-packages/sklearn/svm/_classes.py:31: FutureWarning: The default value of `dual` will change from `True` to `'auto'` in 1.5. Set the value of `dual` explicitly to suppress the warning.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "<style>#sk-container-id-1 {\n", + " /* Definition of color scheme common for light and dark mode */\n", + " --sklearn-color-text: black;\n", + " --sklearn-color-line: gray;\n", + " /* Definition of color scheme for unfitted estimators */\n", + " --sklearn-color-unfitted-level-0: #fff5e6;\n", + " --sklearn-color-unfitted-level-1: #f6e4d2;\n", + " --sklearn-color-unfitted-level-2: #ffe0b3;\n", + " --sklearn-color-unfitted-level-3: chocolate;\n", + " /* Definition of color scheme for fitted estimators */\n", + " --sklearn-color-fitted-level-0: #f0f8ff;\n", + " --sklearn-color-fitted-level-1: #d4ebff;\n", + " --sklearn-color-fitted-level-2: #b3dbfd;\n", + " --sklearn-color-fitted-level-3: cornflowerblue;\n", + "\n", + " /* Specific color for light theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-icon: #696969;\n", + "\n", + " @media (prefers-color-scheme: dark) {\n", + " /* Redefinition of color scheme for dark theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-icon: #878787;\n", + " }\n", + "}\n", + "\n", + "#sk-container-id-1 {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "#sk-container-id-1 pre {\n", + " padding: 0;\n", + "}\n", + "\n", + "#sk-container-id-1 input.sk-hidden--visually {\n", + " border: 0;\n", + " clip: rect(1px 1px 1px 1px);\n", + " clip: rect(1px, 1px, 1px, 1px);\n", + " height: 1px;\n", + " margin: -1px;\n", + " overflow: hidden;\n", + " padding: 0;\n", + " position: absolute;\n", + " width: 1px;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-dashed-wrapped {\n", + " border: 1px dashed var(--sklearn-color-line);\n", + " margin: 0 0.4em 0.5em 0.4em;\n", + " box-sizing: border-box;\n", + " padding-bottom: 0.4em;\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-container {\n", + " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", + " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", + " so we also need the `!important` here to be able to override the\n", + " default hidden behavior on the sphinx rendered scikit-learn.org.\n", + " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n", + " display: inline-block !important;\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-text-repr-fallback {\n", + " display: none;\n", + "}\n", + "\n", + "div.sk-parallel-item,\n", + "div.sk-serial,\n", + "div.sk-item {\n", + " /* draw centered vertical line to link estimators */\n", + " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n", + " background-size: 2px 100%;\n", + " background-repeat: no-repeat;\n", + " background-position: center center;\n", + "}\n", + "\n", + "/* Parallel-specific style estimator block */\n", + "\n", + "#sk-container-id-1 div.sk-parallel-item::after {\n", + " content: \"\";\n", + " width: 100%;\n", + " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", + " flex-grow: 1;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-parallel {\n", + " display: flex;\n", + " align-items: stretch;\n", + " justify-content: center;\n", + " background-color: var(--sklearn-color-background);\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-parallel-item {\n", + " display: flex;\n", + " flex-direction: column;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n", + " align-self: flex-end;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n", + " align-self: flex-start;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n", + " width: 0;\n", + "}\n", + "\n", + "/* Serial-specific style estimator block */\n", + "\n", + "#sk-container-id-1 div.sk-serial {\n", + " display: flex;\n", + " flex-direction: column;\n", + " align-items: center;\n", + " background-color: var(--sklearn-color-background);\n", + " padding-right: 1em;\n", + " padding-left: 1em;\n", + "}\n", + "\n", + "\n", + "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n", + "clickable and can be expanded/collapsed.\n", + "- Pipeline and ColumnTransformer use this feature and define the default style\n", + "- Estimators will overwrite some part of the style using the `sk-estimator` class\n", + "*/\n", + "\n", + "/* Pipeline and ColumnTransformer style (default) */\n", + "\n", + "#sk-container-id-1 div.sk-toggleable {\n", + " /* Default theme specific background. It is overwritten whether we have a\n", + " specific estimator or a Pipeline/ColumnTransformer */\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "/* Toggleable label */\n", + "#sk-container-id-1 label.sk-toggleable__label {\n", + " cursor: pointer;\n", + " display: block;\n", + " width: 100%;\n", + " margin-bottom: 0;\n", + " padding: 0.5em;\n", + " box-sizing: border-box;\n", + " text-align: center;\n", + "}\n", + "\n", + "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n", + " /* Arrow on the left of the label */\n", + " content: \"▸\";\n", + " float: left;\n", + " margin-right: 0.25em;\n", + " color: var(--sklearn-color-icon);\n", + "}\n", + "\n", + "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "/* Toggleable content - dropdown */\n", + "\n", + "#sk-container-id-1 div.sk-toggleable__content {\n", + " max-height: 0;\n", + " max-width: 0;\n", + " overflow: hidden;\n", + " text-align: left;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-toggleable__content.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-toggleable__content pre {\n", + " margin: 0.2em;\n", + " border-radius: 0.25em;\n", + " color: var(--sklearn-color-text);\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", + " /* Expand drop-down */\n", + " max-height: 200px;\n", + " max-width: 100%;\n", + " overflow: auto;\n", + "}\n", + "\n", + "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", + " content: \"▾\";\n", + "}\n", + "\n", + "/* Pipeline/ColumnTransformer-specific style */\n", + "\n", + "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator-specific style */\n", + "\n", + "/* Colorize estimator box */\n", + "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n", + "#sk-container-id-1 div.sk-label label {\n", + " /* The background is the default theme color */\n", + " color: var(--sklearn-color-text-on-default-background);\n", + "}\n", + "\n", + "/* On hover, darken the color of the background */\n", + "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "/* Label box, darken color on hover, fitted */\n", + "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator label */\n", + "\n", + "#sk-container-id-1 div.sk-label label {\n", + " font-family: monospace;\n", + " font-weight: bold;\n", + " display: inline-block;\n", + " line-height: 1.2em;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-label-container {\n", + " text-align: center;\n", + "}\n", + "\n", + "/* Estimator-specific */\n", + "#sk-container-id-1 div.sk-estimator {\n", + " font-family: monospace;\n", + " border: 1px dotted var(--sklearn-color-border-box);\n", + " border-radius: 0.25em;\n", + " box-sizing: border-box;\n", + " margin-bottom: 0.5em;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-estimator.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "/* on hover */\n", + "#sk-container-id-1 div.sk-estimator:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-estimator.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n", + "\n", + "/* Common style for \"i\" and \"?\" */\n", + "\n", + ".sk-estimator-doc-link,\n", + "a:link.sk-estimator-doc-link,\n", + "a:visited.sk-estimator-doc-link {\n", + " float: right;\n", + " font-size: smaller;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1em;\n", + " height: 1em;\n", + " width: 1em;\n", + " text-decoration: none !important;\n", + " margin-left: 1ex;\n", + " /* unfitted */\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted,\n", + "a:link.sk-estimator-doc-link.fitted,\n", + "a:visited.sk-estimator-doc-link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "/* Span, style for the box shown on hovering the info icon */\n", + ".sk-estimator-doc-link span {\n", + " display: none;\n", + " z-index: 9999;\n", + " position: relative;\n", + " font-weight: normal;\n", + " right: .2ex;\n", + " padding: .5ex;\n", + " margin: .5ex;\n", + " width: min-content;\n", + " min-width: 20ex;\n", + " max-width: 50ex;\n", + " color: var(--sklearn-color-text);\n", + " box-shadow: 2pt 2pt 4pt #999;\n", + " /* unfitted */\n", + " background: var(--sklearn-color-unfitted-level-0);\n", + " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted span {\n", + " /* fitted */\n", + " background: var(--sklearn-color-fitted-level-0);\n", + " border: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link:hover span {\n", + " display: block;\n", + "}\n", + "\n", + "/* \"?\"-specific style due to the `<a>` HTML tag */\n", + "\n", + "#sk-container-id-1 a.estimator_doc_link {\n", + " float: right;\n", + " font-size: 1rem;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1rem;\n", + " height: 1rem;\n", + " width: 1rem;\n", + " text-decoration: none;\n", + " /* unfitted */\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + "}\n", + "\n", + "#sk-container-id-1 a.estimator_doc_link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "#sk-container-id-1 a.estimator_doc_link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;polynomialfeatures&#x27;, PolynomialFeatures(degree=3)),\n", + " (&#x27;standardscaler&#x27;, StandardScaler()),\n", + " (&#x27;linearsvc&#x27;,\n", + " LinearSVC(C=10, max_iter=10000, random_state=10))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[(&#x27;polynomialfeatures&#x27;, PolynomialFeatures(degree=3)),\n", + " (&#x27;standardscaler&#x27;, StandardScaler()),\n", + " (&#x27;linearsvc&#x27;,\n", + " LinearSVC(C=10, max_iter=10000, random_state=10))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;PolynomialFeatures<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.PolynomialFeatures.html\">?<span>Documentation for PolynomialFeatures</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>PolynomialFeatures(degree=3)</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;StandardScaler<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;LinearSVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.svm.LinearSVC.html\">?<span>Documentation for LinearSVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>LinearSVC(C=10, max_iter=10000, random_state=10)</pre></div> </div></div></div></div></div></div>" + ], + "text/plain": [ + "Pipeline(steps=[('polynomialfeatures', PolynomialFeatures(degree=3)),\n", + " ('standardscaler', StandardScaler()),\n", + " ('linearsvc',\n", + " LinearSVC(C=10, max_iter=10000, random_state=10))])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# SVM with polynomial features added\n", + "from sklearn.datasets import make_moons\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "from sklearn.svm import LinearSVC\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "X,y = make_moons(n_samples=100 , noise=.15, random_state=10)\n", + "\n", + "polynomial_svm_clf = make_pipeline(PolynomialFeatures(3), StandardScaler(), LinearSVC(C=10,max_iter=10000, random_state=10))\n", + "\n", + "polynomial_svm_clf.fit(X, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style>#sk-container-id-2 {\n", + " /* Definition of color scheme common for light and dark mode */\n", + " --sklearn-color-text: black;\n", + " --sklearn-color-line: gray;\n", + " /* Definition of color scheme for unfitted estimators */\n", + " --sklearn-color-unfitted-level-0: #fff5e6;\n", + " --sklearn-color-unfitted-level-1: #f6e4d2;\n", + " --sklearn-color-unfitted-level-2: #ffe0b3;\n", + " --sklearn-color-unfitted-level-3: chocolate;\n", + " /* Definition of color scheme for fitted estimators */\n", + " --sklearn-color-fitted-level-0: #f0f8ff;\n", + " --sklearn-color-fitted-level-1: #d4ebff;\n", + " --sklearn-color-fitted-level-2: #b3dbfd;\n", + " --sklearn-color-fitted-level-3: cornflowerblue;\n", + "\n", + " /* Specific color for light theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-icon: #696969;\n", + "\n", + " @media (prefers-color-scheme: dark) {\n", + " /* Redefinition of color scheme for dark theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-icon: #878787;\n", + " }\n", + "}\n", + "\n", + "#sk-container-id-2 {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "#sk-container-id-2 pre {\n", + " padding: 0;\n", + "}\n", + "\n", + "#sk-container-id-2 input.sk-hidden--visually {\n", + " border: 0;\n", + " clip: rect(1px 1px 1px 1px);\n", + " clip: rect(1px, 1px, 1px, 1px);\n", + " height: 1px;\n", + " margin: -1px;\n", + " overflow: hidden;\n", + " padding: 0;\n", + " position: absolute;\n", + " width: 1px;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-dashed-wrapped {\n", + " border: 1px dashed var(--sklearn-color-line);\n", + " margin: 0 0.4em 0.5em 0.4em;\n", + " box-sizing: border-box;\n", + " padding-bottom: 0.4em;\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-container {\n", + " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", + " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", + " so we also need the `!important` here to be able to override the\n", + " default hidden behavior on the sphinx rendered scikit-learn.org.\n", + " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n", + " display: inline-block !important;\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-text-repr-fallback {\n", + " display: none;\n", + "}\n", + "\n", + "div.sk-parallel-item,\n", + "div.sk-serial,\n", + "div.sk-item {\n", + " /* draw centered vertical line to link estimators */\n", + " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n", + " background-size: 2px 100%;\n", + " background-repeat: no-repeat;\n", + " background-position: center center;\n", + "}\n", + "\n", + "/* Parallel-specific style estimator block */\n", + "\n", + "#sk-container-id-2 div.sk-parallel-item::after {\n", + " content: \"\";\n", + " width: 100%;\n", + " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", + " flex-grow: 1;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-parallel {\n", + " display: flex;\n", + " align-items: stretch;\n", + " justify-content: center;\n", + " background-color: var(--sklearn-color-background);\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-parallel-item {\n", + " display: flex;\n", + " flex-direction: column;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n", + " align-self: flex-end;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n", + " align-self: flex-start;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n", + " width: 0;\n", + "}\n", + "\n", + "/* Serial-specific style estimator block */\n", + "\n", + "#sk-container-id-2 div.sk-serial {\n", + " display: flex;\n", + " flex-direction: column;\n", + " align-items: center;\n", + " background-color: var(--sklearn-color-background);\n", + " padding-right: 1em;\n", + " padding-left: 1em;\n", + "}\n", + "\n", + "\n", + "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n", + "clickable and can be expanded/collapsed.\n", + "- Pipeline and ColumnTransformer use this feature and define the default style\n", + "- Estimators will overwrite some part of the style using the `sk-estimator` class\n", + "*/\n", + "\n", + "/* Pipeline and ColumnTransformer style (default) */\n", + "\n", + "#sk-container-id-2 div.sk-toggleable {\n", + " /* Default theme specific background. It is overwritten whether we have a\n", + " specific estimator or a Pipeline/ColumnTransformer */\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "/* Toggleable label */\n", + "#sk-container-id-2 label.sk-toggleable__label {\n", + " cursor: pointer;\n", + " display: block;\n", + " width: 100%;\n", + " margin-bottom: 0;\n", + " padding: 0.5em;\n", + " box-sizing: border-box;\n", + " text-align: center;\n", + "}\n", + "\n", + "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n", + " /* Arrow on the left of the label */\n", + " content: \"▸\";\n", + " float: left;\n", + " margin-right: 0.25em;\n", + " color: var(--sklearn-color-icon);\n", + "}\n", + "\n", + "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "/* Toggleable content - dropdown */\n", + "\n", + "#sk-container-id-2 div.sk-toggleable__content {\n", + " max-height: 0;\n", + " max-width: 0;\n", + " overflow: hidden;\n", + " text-align: left;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-toggleable__content.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-toggleable__content pre {\n", + " margin: 0.2em;\n", + " border-radius: 0.25em;\n", + " color: var(--sklearn-color-text);\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", + " /* Expand drop-down */\n", + " max-height: 200px;\n", + " max-width: 100%;\n", + " overflow: auto;\n", + "}\n", + "\n", + "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", + " content: \"▾\";\n", + "}\n", + "\n", + "/* Pipeline/ColumnTransformer-specific style */\n", + "\n", + "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator-specific style */\n", + "\n", + "/* Colorize estimator box */\n", + "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n", + "#sk-container-id-2 div.sk-label label {\n", + " /* The background is the default theme color */\n", + " color: var(--sklearn-color-text-on-default-background);\n", + "}\n", + "\n", + "/* On hover, darken the color of the background */\n", + "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "/* Label box, darken color on hover, fitted */\n", + "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator label */\n", + "\n", + "#sk-container-id-2 div.sk-label label {\n", + " font-family: monospace;\n", + " font-weight: bold;\n", + " display: inline-block;\n", + " line-height: 1.2em;\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-label-container {\n", + " text-align: center;\n", + "}\n", + "\n", + "/* Estimator-specific */\n", + "#sk-container-id-2 div.sk-estimator {\n", + " font-family: monospace;\n", + " border: 1px dotted var(--sklearn-color-border-box);\n", + " border-radius: 0.25em;\n", + " box-sizing: border-box;\n", + " margin-bottom: 0.5em;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-estimator.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "/* on hover */\n", + "#sk-container-id-2 div.sk-estimator:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-2 div.sk-estimator.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n", + "\n", + "/* Common style for \"i\" and \"?\" */\n", + "\n", + ".sk-estimator-doc-link,\n", + "a:link.sk-estimator-doc-link,\n", + "a:visited.sk-estimator-doc-link {\n", + " float: right;\n", + " font-size: smaller;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1em;\n", + " height: 1em;\n", + " width: 1em;\n", + " text-decoration: none !important;\n", + " margin-left: 1ex;\n", + " /* unfitted */\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted,\n", + "a:link.sk-estimator-doc-link.fitted,\n", + "a:visited.sk-estimator-doc-link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "/* Span, style for the box shown on hovering the info icon */\n", + ".sk-estimator-doc-link span {\n", + " display: none;\n", + " z-index: 9999;\n", + " position: relative;\n", + " font-weight: normal;\n", + " right: .2ex;\n", + " padding: .5ex;\n", + " margin: .5ex;\n", + " width: min-content;\n", + " min-width: 20ex;\n", + " max-width: 50ex;\n", + " color: var(--sklearn-color-text);\n", + " box-shadow: 2pt 2pt 4pt #999;\n", + " /* unfitted */\n", + " background: var(--sklearn-color-unfitted-level-0);\n", + " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted span {\n", + " /* fitted */\n", + " background: var(--sklearn-color-fitted-level-0);\n", + " border: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link:hover span {\n", + " display: block;\n", + "}\n", + "\n", + "/* \"?\"-specific style due to the `<a>` HTML tag */\n", + "\n", + "#sk-container-id-2 a.estimator_doc_link {\n", + " float: right;\n", + " font-size: 1rem;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1rem;\n", + " height: 1rem;\n", + " width: 1rem;\n", + " text-decoration: none;\n", + " /* unfitted */\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + "}\n", + "\n", + "#sk-container-id-2 a.estimator_doc_link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "#sk-container-id-2 a.estimator_doc_link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;standardscaler&#x27;, StandardScaler()),\n", + " (&#x27;svc&#x27;, SVC(C=5, coef0=1, kernel=&#x27;poly&#x27;))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[(&#x27;standardscaler&#x27;, StandardScaler()),\n", + " (&#x27;svc&#x27;, SVC(C=5, coef0=1, kernel=&#x27;poly&#x27;))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;StandardScaler<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-7\" type=\"checkbox\" ><label for=\"sk-estimator-id-7\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(C=5, coef0=1, kernel=&#x27;poly&#x27;)</pre></div> </div></div></div></div></div></div>" + ], + "text/plain": [ + "Pipeline(steps=[('standardscaler', StandardScaler()),\n", + " ('svc', SVC(C=5, coef0=1, kernel='poly'))])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.svm import SVC\n", + "\n", + "poly_kernel_svm_clf = make_pipeline(StandardScaler(),SVC(kernel='poly', degree=3, coef0=1,C=5))\n", + "poly_kernel_svm_clf.fit(X,y)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style>#sk-container-id-3 {\n", + " /* Definition of color scheme common for light and dark mode */\n", + " --sklearn-color-text: black;\n", + " --sklearn-color-line: gray;\n", + " /* Definition of color scheme for unfitted estimators */\n", + " --sklearn-color-unfitted-level-0: #fff5e6;\n", + " --sklearn-color-unfitted-level-1: #f6e4d2;\n", + " --sklearn-color-unfitted-level-2: #ffe0b3;\n", + " --sklearn-color-unfitted-level-3: chocolate;\n", + " /* Definition of color scheme for fitted estimators */\n", + " --sklearn-color-fitted-level-0: #f0f8ff;\n", + " --sklearn-color-fitted-level-1: #d4ebff;\n", + " --sklearn-color-fitted-level-2: #b3dbfd;\n", + " --sklearn-color-fitted-level-3: cornflowerblue;\n", + "\n", + " /* Specific color for light theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-icon: #696969;\n", + "\n", + " @media (prefers-color-scheme: dark) {\n", + " /* Redefinition of color scheme for dark theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-icon: #878787;\n", + " }\n", + "}\n", + "\n", + "#sk-container-id-3 {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "#sk-container-id-3 pre {\n", + " padding: 0;\n", + "}\n", + "\n", + "#sk-container-id-3 input.sk-hidden--visually {\n", + " border: 0;\n", + " clip: rect(1px 1px 1px 1px);\n", + " clip: rect(1px, 1px, 1px, 1px);\n", + " height: 1px;\n", + " margin: -1px;\n", + " overflow: hidden;\n", + " padding: 0;\n", + " position: absolute;\n", + " width: 1px;\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-dashed-wrapped {\n", + " border: 1px dashed var(--sklearn-color-line);\n", + " margin: 0 0.4em 0.5em 0.4em;\n", + " box-sizing: border-box;\n", + " padding-bottom: 0.4em;\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-container {\n", + " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", + " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", + " so we also need the `!important` here to be able to override the\n", + " default hidden behavior on the sphinx rendered scikit-learn.org.\n", + " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n", + " display: inline-block !important;\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-text-repr-fallback {\n", + " display: none;\n", + "}\n", + "\n", + "div.sk-parallel-item,\n", + "div.sk-serial,\n", + "div.sk-item {\n", + " /* draw centered vertical line to link estimators */\n", + " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n", + " background-size: 2px 100%;\n", + " background-repeat: no-repeat;\n", + " background-position: center center;\n", + "}\n", + "\n", + "/* Parallel-specific style estimator block */\n", + "\n", + "#sk-container-id-3 div.sk-parallel-item::after {\n", + " content: \"\";\n", + " width: 100%;\n", + " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", + " flex-grow: 1;\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-parallel {\n", + " display: flex;\n", + " align-items: stretch;\n", + " justify-content: center;\n", + " background-color: var(--sklearn-color-background);\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-parallel-item {\n", + " display: flex;\n", + " flex-direction: column;\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-parallel-item:first-child::after {\n", + " align-self: flex-end;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-parallel-item:last-child::after {\n", + " align-self: flex-start;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-parallel-item:only-child::after {\n", + " width: 0;\n", + "}\n", + "\n", + "/* Serial-specific style estimator block */\n", + "\n", + "#sk-container-id-3 div.sk-serial {\n", + " display: flex;\n", + " flex-direction: column;\n", + " align-items: center;\n", + " background-color: var(--sklearn-color-background);\n", + " padding-right: 1em;\n", + " padding-left: 1em;\n", + "}\n", + "\n", + "\n", + "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n", + "clickable and can be expanded/collapsed.\n", + "- Pipeline and ColumnTransformer use this feature and define the default style\n", + "- Estimators will overwrite some part of the style using the `sk-estimator` class\n", + "*/\n", + "\n", + "/* Pipeline and ColumnTransformer style (default) */\n", + "\n", + "#sk-container-id-3 div.sk-toggleable {\n", + " /* Default theme specific background. It is overwritten whether we have a\n", + " specific estimator or a Pipeline/ColumnTransformer */\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "/* Toggleable label */\n", + "#sk-container-id-3 label.sk-toggleable__label {\n", + " cursor: pointer;\n", + " display: block;\n", + " width: 100%;\n", + " margin-bottom: 0;\n", + " padding: 0.5em;\n", + " box-sizing: border-box;\n", + " text-align: center;\n", + "}\n", + "\n", + "#sk-container-id-3 label.sk-toggleable__label-arrow:before {\n", + " /* Arrow on the left of the label */\n", + " content: \"▸\";\n", + " float: left;\n", + " margin-right: 0.25em;\n", + " color: var(--sklearn-color-icon);\n", + "}\n", + "\n", + "#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "/* Toggleable content - dropdown */\n", + "\n", + "#sk-container-id-3 div.sk-toggleable__content {\n", + " max-height: 0;\n", + " max-width: 0;\n", + " overflow: hidden;\n", + " text-align: left;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-toggleable__content.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-toggleable__content pre {\n", + " margin: 0.2em;\n", + " border-radius: 0.25em;\n", + " color: var(--sklearn-color-text);\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-toggleable__content.fitted pre {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", + " /* Expand drop-down */\n", + " max-height: 200px;\n", + " max-width: 100%;\n", + " overflow: auto;\n", + "}\n", + "\n", + "#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", + " content: \"▾\";\n", + "}\n", + "\n", + "/* Pipeline/ColumnTransformer-specific style */\n", + "\n", + "#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator-specific style */\n", + "\n", + "/* Colorize estimator box */\n", + "#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-label label.sk-toggleable__label,\n", + "#sk-container-id-3 div.sk-label label {\n", + " /* The background is the default theme color */\n", + " color: var(--sklearn-color-text-on-default-background);\n", + "}\n", + "\n", + "/* On hover, darken the color of the background */\n", + "#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "/* Label box, darken color on hover, fitted */\n", + "#sk-container-id-3 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator label */\n", + "\n", + "#sk-container-id-3 div.sk-label label {\n", + " font-family: monospace;\n", + " font-weight: bold;\n", + " display: inline-block;\n", + " line-height: 1.2em;\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-label-container {\n", + " text-align: center;\n", + "}\n", + "\n", + "/* Estimator-specific */\n", + "#sk-container-id-3 div.sk-estimator {\n", + " font-family: monospace;\n", + " border: 1px dotted var(--sklearn-color-border-box);\n", + " border-radius: 0.25em;\n", + " box-sizing: border-box;\n", + " margin-bottom: 0.5em;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-estimator.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "/* on hover */\n", + "#sk-container-id-3 div.sk-estimator:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-3 div.sk-estimator.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n", + "\n", + "/* Common style for \"i\" and \"?\" */\n", + "\n", + ".sk-estimator-doc-link,\n", + "a:link.sk-estimator-doc-link,\n", + "a:visited.sk-estimator-doc-link {\n", + " float: right;\n", + " font-size: smaller;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1em;\n", + " height: 1em;\n", + " width: 1em;\n", + " text-decoration: none !important;\n", + " margin-left: 1ex;\n", + " /* unfitted */\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted,\n", + "a:link.sk-estimator-doc-link.fitted,\n", + "a:visited.sk-estimator-doc-link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "/* Span, style for the box shown on hovering the info icon */\n", + ".sk-estimator-doc-link span {\n", + " display: none;\n", + " z-index: 9999;\n", + " position: relative;\n", + " font-weight: normal;\n", + " right: .2ex;\n", + " padding: .5ex;\n", + " margin: .5ex;\n", + " width: min-content;\n", + " min-width: 20ex;\n", + " max-width: 50ex;\n", + " color: var(--sklearn-color-text);\n", + " box-shadow: 2pt 2pt 4pt #999;\n", + " /* unfitted */\n", + " background: var(--sklearn-color-unfitted-level-0);\n", + " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted span {\n", + " /* fitted */\n", + " background: var(--sklearn-color-fitted-level-0);\n", + " border: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link:hover span {\n", + " display: block;\n", + "}\n", + "\n", + "/* \"?\"-specific style due to the `<a>` HTML tag */\n", + "\n", + "#sk-container-id-3 a.estimator_doc_link {\n", + " float: right;\n", + " font-size: 1rem;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1rem;\n", + " height: 1rem;\n", + " width: 1rem;\n", + " text-decoration: none;\n", + " /* unfitted */\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + "}\n", + "\n", + "#sk-container-id-3 a.estimator_doc_link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "#sk-container-id-3 a.estimator_doc_link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "#sk-container-id-3 a.estimator_doc_link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;standardscaler&#x27;, StandardScaler()),\n", + " (&#x27;svc&#x27;, SVC(C=0.001, gamma=5))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-8\" type=\"checkbox\" ><label for=\"sk-estimator-id-8\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[(&#x27;standardscaler&#x27;, StandardScaler()),\n", + " (&#x27;svc&#x27;, SVC(C=0.001, gamma=5))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-9\" type=\"checkbox\" ><label for=\"sk-estimator-id-9\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;StandardScaler<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-10\" type=\"checkbox\" ><label for=\"sk-estimator-id-10\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(C=0.001, gamma=5)</pre></div> </div></div></div></div></div></div>" + ], + "text/plain": [ + "Pipeline(steps=[('standardscaler', StandardScaler()),\n", + " ('svc', SVC(C=0.001, gamma=5))])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rbf_svm_clf = make_pipeline(StandardScaler(), SVC(kernel='rbf', gamma=5, C=.001))\n", + "rbf_svm_clf.fit(X,y)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "notebook", + "language": "python", + "name": "notebook" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/svmRegression/SVMRegression.ipynb b/svmRegression/SVMRegression.ipynb @@ -0,0 +1,565 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.svm import LinearSVR\n", + "import numpy as np\n", + "\n", + "X = np.linspace(-3, 3, 1000)\n", + "y = X*2 + (np.random.random(X.shape) * 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.collections.PathCollection at 0x7f3334d76dd0>" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.scatter(X,y, s=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/andrew/gitRepos/myvenv/lib/python3.11/site-packages/sklearn/svm/_classes.py:31: FutureWarning: The default value of `dual` will change from `True` to `'auto'` in 1.5. Set the value of `dual` explicitly to suppress the warning.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "<style>#sk-container-id-1 {\n", + " /* Definition of color scheme common for light and dark mode */\n", + " --sklearn-color-text: black;\n", + " --sklearn-color-line: gray;\n", + " /* Definition of color scheme for unfitted estimators */\n", + " --sklearn-color-unfitted-level-0: #fff5e6;\n", + " --sklearn-color-unfitted-level-1: #f6e4d2;\n", + " --sklearn-color-unfitted-level-2: #ffe0b3;\n", + " --sklearn-color-unfitted-level-3: chocolate;\n", + " /* Definition of color scheme for fitted estimators */\n", + " --sklearn-color-fitted-level-0: #f0f8ff;\n", + " --sklearn-color-fitted-level-1: #d4ebff;\n", + " --sklearn-color-fitted-level-2: #b3dbfd;\n", + " --sklearn-color-fitted-level-3: cornflowerblue;\n", + "\n", + " /* Specific color for light theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", + " --sklearn-color-icon: #696969;\n", + "\n", + " @media (prefers-color-scheme: dark) {\n", + " /* Redefinition of color scheme for dark theme */\n", + " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n", + " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", + " --sklearn-color-icon: #878787;\n", + " }\n", + "}\n", + "\n", + "#sk-container-id-1 {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "#sk-container-id-1 pre {\n", + " padding: 0;\n", + "}\n", + "\n", + "#sk-container-id-1 input.sk-hidden--visually {\n", + " border: 0;\n", + " clip: rect(1px 1px 1px 1px);\n", + " clip: rect(1px, 1px, 1px, 1px);\n", + " height: 1px;\n", + " margin: -1px;\n", + " overflow: hidden;\n", + " padding: 0;\n", + " position: absolute;\n", + " width: 1px;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-dashed-wrapped {\n", + " border: 1px dashed var(--sklearn-color-line);\n", + " margin: 0 0.4em 0.5em 0.4em;\n", + " box-sizing: border-box;\n", + " padding-bottom: 0.4em;\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-container {\n", + " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", + " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", + " so we also need the `!important` here to be able to override the\n", + " default hidden behavior on the sphinx rendered scikit-learn.org.\n", + " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n", + " display: inline-block !important;\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-text-repr-fallback {\n", + " display: none;\n", + "}\n", + "\n", + "div.sk-parallel-item,\n", + "div.sk-serial,\n", + "div.sk-item {\n", + " /* draw centered vertical line to link estimators */\n", + " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n", + " background-size: 2px 100%;\n", + " background-repeat: no-repeat;\n", + " background-position: center center;\n", + "}\n", + "\n", + "/* Parallel-specific style estimator block */\n", + "\n", + "#sk-container-id-1 div.sk-parallel-item::after {\n", + " content: \"\";\n", + " width: 100%;\n", + " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", + " flex-grow: 1;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-parallel {\n", + " display: flex;\n", + " align-items: stretch;\n", + " justify-content: center;\n", + " background-color: var(--sklearn-color-background);\n", + " position: relative;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-parallel-item {\n", + " display: flex;\n", + " flex-direction: column;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n", + " align-self: flex-end;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n", + " align-self: flex-start;\n", + " width: 50%;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n", + " width: 0;\n", + "}\n", + "\n", + "/* Serial-specific style estimator block */\n", + "\n", + "#sk-container-id-1 div.sk-serial {\n", + " display: flex;\n", + " flex-direction: column;\n", + " align-items: center;\n", + " background-color: var(--sklearn-color-background);\n", + " padding-right: 1em;\n", + " padding-left: 1em;\n", + "}\n", + "\n", + "\n", + "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n", + "clickable and can be expanded/collapsed.\n", + "- Pipeline and ColumnTransformer use this feature and define the default style\n", + "- Estimators will overwrite some part of the style using the `sk-estimator` class\n", + "*/\n", + "\n", + "/* Pipeline and ColumnTransformer style (default) */\n", + "\n", + "#sk-container-id-1 div.sk-toggleable {\n", + " /* Default theme specific background. It is overwritten whether we have a\n", + " specific estimator or a Pipeline/ColumnTransformer */\n", + " background-color: var(--sklearn-color-background);\n", + "}\n", + "\n", + "/* Toggleable label */\n", + "#sk-container-id-1 label.sk-toggleable__label {\n", + " cursor: pointer;\n", + " display: block;\n", + " width: 100%;\n", + " margin-bottom: 0;\n", + " padding: 0.5em;\n", + " box-sizing: border-box;\n", + " text-align: center;\n", + "}\n", + "\n", + "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n", + " /* Arrow on the left of the label */\n", + " content: \"▸\";\n", + " float: left;\n", + " margin-right: 0.25em;\n", + " color: var(--sklearn-color-icon);\n", + "}\n", + "\n", + "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n", + " color: var(--sklearn-color-text);\n", + "}\n", + "\n", + "/* Toggleable content - dropdown */\n", + "\n", + "#sk-container-id-1 div.sk-toggleable__content {\n", + " max-height: 0;\n", + " max-width: 0;\n", + " overflow: hidden;\n", + " text-align: left;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-toggleable__content.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-toggleable__content pre {\n", + " margin: 0.2em;\n", + " border-radius: 0.25em;\n", + " color: var(--sklearn-color-text);\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", + " /* Expand drop-down */\n", + " max-height: 200px;\n", + " max-width: 100%;\n", + " overflow: auto;\n", + "}\n", + "\n", + "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", + " content: \"▾\";\n", + "}\n", + "\n", + "/* Pipeline/ColumnTransformer-specific style */\n", + "\n", + "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator-specific style */\n", + "\n", + "/* Colorize estimator box */\n", + "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n", + "#sk-container-id-1 div.sk-label label {\n", + " /* The background is the default theme color */\n", + " color: var(--sklearn-color-text-on-default-background);\n", + "}\n", + "\n", + "/* On hover, darken the color of the background */\n", + "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "/* Label box, darken color on hover, fitted */\n", + "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", + " color: var(--sklearn-color-text);\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Estimator label */\n", + "\n", + "#sk-container-id-1 div.sk-label label {\n", + " font-family: monospace;\n", + " font-weight: bold;\n", + " display: inline-block;\n", + " line-height: 1.2em;\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-label-container {\n", + " text-align: center;\n", + "}\n", + "\n", + "/* Estimator-specific */\n", + "#sk-container-id-1 div.sk-estimator {\n", + " font-family: monospace;\n", + " border: 1px dotted var(--sklearn-color-border-box);\n", + " border-radius: 0.25em;\n", + " box-sizing: border-box;\n", + " margin-bottom: 0.5em;\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-0);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-estimator.fitted {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-0);\n", + "}\n", + "\n", + "/* on hover */\n", + "#sk-container-id-1 div.sk-estimator:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-2);\n", + "}\n", + "\n", + "#sk-container-id-1 div.sk-estimator.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-2);\n", + "}\n", + "\n", + "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n", + "\n", + "/* Common style for \"i\" and \"?\" */\n", + "\n", + ".sk-estimator-doc-link,\n", + "a:link.sk-estimator-doc-link,\n", + "a:visited.sk-estimator-doc-link {\n", + " float: right;\n", + " font-size: smaller;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1em;\n", + " height: 1em;\n", + " width: 1em;\n", + " text-decoration: none !important;\n", + " margin-left: 1ex;\n", + " /* unfitted */\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted,\n", + "a:link.sk-estimator-doc-link.fitted,\n", + "a:visited.sk-estimator-doc-link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n", + ".sk-estimator-doc-link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover,\n", + "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n", + ".sk-estimator-doc-link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "/* Span, style for the box shown on hovering the info icon */\n", + ".sk-estimator-doc-link span {\n", + " display: none;\n", + " z-index: 9999;\n", + " position: relative;\n", + " font-weight: normal;\n", + " right: .2ex;\n", + " padding: .5ex;\n", + " margin: .5ex;\n", + " width: min-content;\n", + " min-width: 20ex;\n", + " max-width: 50ex;\n", + " color: var(--sklearn-color-text);\n", + " box-shadow: 2pt 2pt 4pt #999;\n", + " /* unfitted */\n", + " background: var(--sklearn-color-unfitted-level-0);\n", + " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link.fitted span {\n", + " /* fitted */\n", + " background: var(--sklearn-color-fitted-level-0);\n", + " border: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "\n", + ".sk-estimator-doc-link:hover span {\n", + " display: block;\n", + "}\n", + "\n", + "/* \"?\"-specific style due to the `<a>` HTML tag */\n", + "\n", + "#sk-container-id-1 a.estimator_doc_link {\n", + " float: right;\n", + " font-size: 1rem;\n", + " line-height: 1em;\n", + " font-family: monospace;\n", + " background-color: var(--sklearn-color-background);\n", + " border-radius: 1rem;\n", + " height: 1rem;\n", + " width: 1rem;\n", + " text-decoration: none;\n", + " /* unfitted */\n", + " color: var(--sklearn-color-unfitted-level-1);\n", + " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", + "}\n", + "\n", + "#sk-container-id-1 a.estimator_doc_link.fitted {\n", + " /* fitted */\n", + " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", + " color: var(--sklearn-color-fitted-level-1);\n", + "}\n", + "\n", + "/* On hover */\n", + "#sk-container-id-1 a.estimator_doc_link:hover {\n", + " /* unfitted */\n", + " background-color: var(--sklearn-color-unfitted-level-3);\n", + " color: var(--sklearn-color-background);\n", + " text-decoration: none;\n", + "}\n", + "\n", + "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n", + " /* fitted */\n", + " background-color: var(--sklearn-color-fitted-level-3);\n", + "}\n", + "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;standardscaler&#x27;, StandardScaler()),\n", + " (&#x27;linearsvr&#x27;, LinearSVR(epsilon=0.5, random_state=10))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[(&#x27;standardscaler&#x27;, StandardScaler()),\n", + " (&#x27;linearsvr&#x27;, LinearSVR(epsilon=0.5, random_state=10))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;StandardScaler<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;LinearSVR<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.svm.LinearSVR.html\">?<span>Documentation for LinearSVR</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>LinearSVR(epsilon=0.5, random_state=10)</pre></div> </div></div></div></div></div></div>" + ], + "text/plain": [ + "Pipeline(steps=[('standardscaler', StandardScaler()),\n", + " ('linearsvr', LinearSVR(epsilon=0.5, random_state=10))])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.pipeline import make_pipeline\n", + "from sklearn.preprocessing import StandardScaler\n", + "X = X.reshape(-1,1)\n", + "\n", + "svm_reg = make_pipeline(StandardScaler(), LinearSVR(epsilon=.5, random_state=10))\n", + "svm_reg.fit(X,y)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3.43770059])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "svm_reg.predict([[1]])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.collections.PathCollection at 0x7f3327f58990>" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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+OKLLxxpS5Mt8f7999/j4MGDMY8544wzkJaW1uj73bt3IycnBytXrnQsVZVIet/V3r17MXDgQFxwwQWYO3cuUlKabDzbiJH/Xs2dOxfjx4/HoUOHbG5dcqipqUHr1q3xxhtv4Jprrqn/fuTIkTh06BCzkVF4PB4sXLiwwTujxsaOHYvFixdjxYoV6Ny5s9PNSRqXXXYZunTpgtmzZyf83qkJv2OCtG/fHu3btzd0biAQAABUV1db2STX0vOu9uzZg0suuQS9evXCnDlzmlUQApj77xUp0tLS0KtXL7z33nv1nWogEMB7772HsWPHOts4SloigjvvvBMLFy7Ehx9+yCBEp0Ag4Fif12QDEa1Wr16NtWvXYsCAAWjXrh2++eYbPPLII+jSpUuzyIbosWfPHgwcOBB5eXl4+umn8f3339f/7rTTTnOwZe60a9culJeXY9euXairq8OGDRsAAD/72c/Qpk0bZxvnsHvuuQcjR47E+eefjz59+mD69Ok4cuQI/vCHPzjdNFc5fPgwvv766/qfv/32W2zYsAE+nw+5ubkOtsx9xowZg3nz5mHx4sXIyMion2+UlZWFVq1aOdw6d3nooYfw61//Grm5uaiqqsK8efPw4Ycf4p133nGmQY6s1XGRzz77TC655BLx+XySnp4u+fn5UlhYKLt373a6aa4zZ84cARDxQ42NHDky4rv64IMPnG6aK8yYMUNyc3MlLS1N+vTpI6tWrXK6Sa7zwQcfRPzv0MiRI51umutE+9+mOXPmON0017nlllskLy9P0tLSpH379jJo0CBZtmyZY+1psnNEiIiIyP2a1wA/ERERuQoDESIiInIMAxEiIiJyDAMRIiIicgwDESIiInIMAxEiIiJyDAMRIiIicgwDESIiInIMAxEiIiJyDAMRIiIicgwDESIiInIMAxEiIiJyzP8H+q/aF4CmPCwAAAAASUVORK5CYII=", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "y_pred = svm_reg.predict(X)\n", + "\n", + "plt.plot(X, y_pred, c='r')\n", + "plt.scatter(X,y, c='b', s=1)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "notebook", + "language": "python", + "name": "notebook" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}