mirror of
https://github.com/deepseek-ai/DeepSeek-Coder.git
synced 2025-02-23 14:19:09 -05:00
938 lines
55 KiB
Plaintext
938 lines
55 KiB
Plaintext
{
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0,
|
|
"metadata": {
|
|
"colab": {
|
|
"provenance": [],
|
|
"include_colab_link": true
|
|
},
|
|
"kernelspec": {
|
|
"name": "python3",
|
|
"display_name": "Python 3"
|
|
},
|
|
"language_info": {
|
|
"name": "python"
|
|
}
|
|
},
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "view-in-github",
|
|
"colab_type": "text"
|
|
},
|
|
"source": [
|
|
"<a href=\"https://colab.research.google.com/github/Orrm23/DeepSeek-Coder/blob/main/BreastCancerDetection_VariousMLAlgorithm.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "AhpeX5Dm_eLW"
|
|
},
|
|
"source": [
|
|
"# **Day-10_BreastCancerDetection_VariousMLAlgorithm**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "8rvHswu2td0Z"
|
|
},
|
|
"source": [
|
|
"### *Importing Libraries*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "P-YXxKhu_Uk4"
|
|
},
|
|
"source": [
|
|
"import pandas as pd #useful for loading the dataset\n",
|
|
"import numpy as np #to perform array\n",
|
|
"from matplotlib import pyplot"
|
|
],
|
|
"execution_count": 1,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "mOt3nocbwvZk"
|
|
},
|
|
"source": [
|
|
"### *Choose Dataset from Local Directory*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "xB2NMwXtw2dG",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 73
|
|
},
|
|
"outputId": "ec354929-3ba9-42a1-b9bb-ccf832a4bb1b"
|
|
},
|
|
"source": [
|
|
"from google.colab import files\n",
|
|
"uploaded = files.upload()"
|
|
],
|
|
"execution_count": 2,
|
|
"outputs": [
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
],
|
|
"text/html": [
|
|
"\n",
|
|
" <input type=\"file\" id=\"files-fecec7e8-bcb2-40b8-af0a-82ebe3c06ca1\" name=\"files[]\" multiple disabled\n",
|
|
" style=\"border:none\" />\n",
|
|
" <output id=\"result-fecec7e8-bcb2-40b8-af0a-82ebe3c06ca1\">\n",
|
|
" Upload widget is only available when the cell has been executed in the\n",
|
|
" current browser session. Please rerun this cell to enable.\n",
|
|
" </output>\n",
|
|
" <script>// Copyright 2017 Google LLC\n",
|
|
"//\n",
|
|
"// Licensed under the Apache License, Version 2.0 (the \"License\");\n",
|
|
"// you may not use this file except in compliance with the License.\n",
|
|
"// You may obtain a copy of the License at\n",
|
|
"//\n",
|
|
"// http://www.apache.org/licenses/LICENSE-2.0\n",
|
|
"//\n",
|
|
"// Unless required by applicable law or agreed to in writing, software\n",
|
|
"// distributed under the License is distributed on an \"AS IS\" BASIS,\n",
|
|
"// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
|
|
"// See the License for the specific language governing permissions and\n",
|
|
"// limitations under the License.\n",
|
|
"\n",
|
|
"/**\n",
|
|
" * @fileoverview Helpers for google.colab Python module.\n",
|
|
" */\n",
|
|
"(function(scope) {\n",
|
|
"function span(text, styleAttributes = {}) {\n",
|
|
" const element = document.createElement('span');\n",
|
|
" element.textContent = text;\n",
|
|
" for (const key of Object.keys(styleAttributes)) {\n",
|
|
" element.style[key] = styleAttributes[key];\n",
|
|
" }\n",
|
|
" return element;\n",
|
|
"}\n",
|
|
"\n",
|
|
"// Max number of bytes which will be uploaded at a time.\n",
|
|
"const MAX_PAYLOAD_SIZE = 100 * 1024;\n",
|
|
"\n",
|
|
"function _uploadFiles(inputId, outputId) {\n",
|
|
" const steps = uploadFilesStep(inputId, outputId);\n",
|
|
" const outputElement = document.getElementById(outputId);\n",
|
|
" // Cache steps on the outputElement to make it available for the next call\n",
|
|
" // to uploadFilesContinue from Python.\n",
|
|
" outputElement.steps = steps;\n",
|
|
"\n",
|
|
" return _uploadFilesContinue(outputId);\n",
|
|
"}\n",
|
|
"\n",
|
|
"// This is roughly an async generator (not supported in the browser yet),\n",
|
|
"// where there are multiple asynchronous steps and the Python side is going\n",
|
|
"// to poll for completion of each step.\n",
|
|
"// This uses a Promise to block the python side on completion of each step,\n",
|
|
"// then passes the result of the previous step as the input to the next step.\n",
|
|
"function _uploadFilesContinue(outputId) {\n",
|
|
" const outputElement = document.getElementById(outputId);\n",
|
|
" const steps = outputElement.steps;\n",
|
|
"\n",
|
|
" const next = steps.next(outputElement.lastPromiseValue);\n",
|
|
" return Promise.resolve(next.value.promise).then((value) => {\n",
|
|
" // Cache the last promise value to make it available to the next\n",
|
|
" // step of the generator.\n",
|
|
" outputElement.lastPromiseValue = value;\n",
|
|
" return next.value.response;\n",
|
|
" });\n",
|
|
"}\n",
|
|
"\n",
|
|
"/**\n",
|
|
" * Generator function which is called between each async step of the upload\n",
|
|
" * process.\n",
|
|
" * @param {string} inputId Element ID of the input file picker element.\n",
|
|
" * @param {string} outputId Element ID of the output display.\n",
|
|
" * @return {!Iterable<!Object>} Iterable of next steps.\n",
|
|
" */\n",
|
|
"function* uploadFilesStep(inputId, outputId) {\n",
|
|
" const inputElement = document.getElementById(inputId);\n",
|
|
" inputElement.disabled = false;\n",
|
|
"\n",
|
|
" const outputElement = document.getElementById(outputId);\n",
|
|
" outputElement.innerHTML = '';\n",
|
|
"\n",
|
|
" const pickedPromise = new Promise((resolve) => {\n",
|
|
" inputElement.addEventListener('change', (e) => {\n",
|
|
" resolve(e.target.files);\n",
|
|
" });\n",
|
|
" });\n",
|
|
"\n",
|
|
" const cancel = document.createElement('button');\n",
|
|
" inputElement.parentElement.appendChild(cancel);\n",
|
|
" cancel.textContent = 'Cancel upload';\n",
|
|
" const cancelPromise = new Promise((resolve) => {\n",
|
|
" cancel.onclick = () => {\n",
|
|
" resolve(null);\n",
|
|
" };\n",
|
|
" });\n",
|
|
"\n",
|
|
" // Wait for the user to pick the files.\n",
|
|
" const files = yield {\n",
|
|
" promise: Promise.race([pickedPromise, cancelPromise]),\n",
|
|
" response: {\n",
|
|
" action: 'starting',\n",
|
|
" }\n",
|
|
" };\n",
|
|
"\n",
|
|
" cancel.remove();\n",
|
|
"\n",
|
|
" // Disable the input element since further picks are not allowed.\n",
|
|
" inputElement.disabled = true;\n",
|
|
"\n",
|
|
" if (!files) {\n",
|
|
" return {\n",
|
|
" response: {\n",
|
|
" action: 'complete',\n",
|
|
" }\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" for (const file of files) {\n",
|
|
" const li = document.createElement('li');\n",
|
|
" li.append(span(file.name, {fontWeight: 'bold'}));\n",
|
|
" li.append(span(\n",
|
|
" `(${file.type || 'n/a'}) - ${file.size} bytes, ` +\n",
|
|
" `last modified: ${\n",
|
|
" file.lastModifiedDate ? file.lastModifiedDate.toLocaleDateString() :\n",
|
|
" 'n/a'} - `));\n",
|
|
" const percent = span('0% done');\n",
|
|
" li.appendChild(percent);\n",
|
|
"\n",
|
|
" outputElement.appendChild(li);\n",
|
|
"\n",
|
|
" const fileDataPromise = new Promise((resolve) => {\n",
|
|
" const reader = new FileReader();\n",
|
|
" reader.onload = (e) => {\n",
|
|
" resolve(e.target.result);\n",
|
|
" };\n",
|
|
" reader.readAsArrayBuffer(file);\n",
|
|
" });\n",
|
|
" // Wait for the data to be ready.\n",
|
|
" let fileData = yield {\n",
|
|
" promise: fileDataPromise,\n",
|
|
" response: {\n",
|
|
" action: 'continue',\n",
|
|
" }\n",
|
|
" };\n",
|
|
"\n",
|
|
" // Use a chunked sending to avoid message size limits. See b/62115660.\n",
|
|
" let position = 0;\n",
|
|
" do {\n",
|
|
" const length = Math.min(fileData.byteLength - position, MAX_PAYLOAD_SIZE);\n",
|
|
" const chunk = new Uint8Array(fileData, position, length);\n",
|
|
" position += length;\n",
|
|
"\n",
|
|
" const base64 = btoa(String.fromCharCode.apply(null, chunk));\n",
|
|
" yield {\n",
|
|
" response: {\n",
|
|
" action: 'append',\n",
|
|
" file: file.name,\n",
|
|
" data: base64,\n",
|
|
" },\n",
|
|
" };\n",
|
|
"\n",
|
|
" let percentDone = fileData.byteLength === 0 ?\n",
|
|
" 100 :\n",
|
|
" Math.round((position / fileData.byteLength) * 100);\n",
|
|
" percent.textContent = `${percentDone}% done`;\n",
|
|
"\n",
|
|
" } while (position < fileData.byteLength);\n",
|
|
" }\n",
|
|
"\n",
|
|
" // All done.\n",
|
|
" yield {\n",
|
|
" response: {\n",
|
|
" action: 'complete',\n",
|
|
" }\n",
|
|
" };\n",
|
|
"}\n",
|
|
"\n",
|
|
"scope.google = scope.google || {};\n",
|
|
"scope.google.colab = scope.google.colab || {};\n",
|
|
"scope.google.colab._files = {\n",
|
|
" _uploadFiles,\n",
|
|
" _uploadFilesContinue,\n",
|
|
"};\n",
|
|
"})(self);\n",
|
|
"</script> "
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"Saving data.csv to data.csv\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "69Kx6TycwzHo"
|
|
},
|
|
"source": [
|
|
"### *Load Dataset*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "7aXWQK9Cw7Dz"
|
|
},
|
|
"source": [
|
|
"dataset = pd.read_csv('data.csv')"
|
|
],
|
|
"execution_count": 3,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "huZ5AaCtxD0p"
|
|
},
|
|
"source": [
|
|
"### *Summarize Dataset*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "SmD4EDrkxFzq",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"outputId": "c8de07bb-c31d-45b6-d7f1-f37549d27d5f"
|
|
},
|
|
"source": [
|
|
"print(dataset.shape)\n",
|
|
"print(dataset.head(5))"
|
|
],
|
|
"execution_count": 4,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"(569, 33)\n",
|
|
" id diagnosis radius_mean texture_mean perimeter_mean area_mean \\\n",
|
|
"0 842302 M 17.99 10.38 122.80 1001.0 \n",
|
|
"1 842517 M 20.57 17.77 132.90 1326.0 \n",
|
|
"2 84300903 M 19.69 21.25 130.00 1203.0 \n",
|
|
"3 84348301 M 11.42 20.38 77.58 386.1 \n",
|
|
"4 84358402 M 20.29 14.34 135.10 1297.0 \n",
|
|
"\n",
|
|
" smoothness_mean compactness_mean concavity_mean concave points_mean \\\n",
|
|
"0 0.11840 0.27760 0.3001 0.14710 \n",
|
|
"1 0.08474 0.07864 0.0869 0.07017 \n",
|
|
"2 0.10960 0.15990 0.1974 0.12790 \n",
|
|
"3 0.14250 0.28390 0.2414 0.10520 \n",
|
|
"4 0.10030 0.13280 0.1980 0.10430 \n",
|
|
"\n",
|
|
" ... texture_worst perimeter_worst area_worst smoothness_worst \\\n",
|
|
"0 ... 17.33 184.60 2019.0 0.1622 \n",
|
|
"1 ... 23.41 158.80 1956.0 0.1238 \n",
|
|
"2 ... 25.53 152.50 1709.0 0.1444 \n",
|
|
"3 ... 26.50 98.87 567.7 0.2098 \n",
|
|
"4 ... 16.67 152.20 1575.0 0.1374 \n",
|
|
"\n",
|
|
" compactness_worst concavity_worst concave points_worst symmetry_worst \\\n",
|
|
"0 0.6656 0.7119 0.2654 0.4601 \n",
|
|
"1 0.1866 0.2416 0.1860 0.2750 \n",
|
|
"2 0.4245 0.4504 0.2430 0.3613 \n",
|
|
"3 0.8663 0.6869 0.2575 0.6638 \n",
|
|
"4 0.2050 0.4000 0.1625 0.2364 \n",
|
|
"\n",
|
|
" fractal_dimension_worst Unnamed: 32 \n",
|
|
"0 0.11890 NaN \n",
|
|
"1 0.08902 NaN \n",
|
|
"2 0.08758 NaN \n",
|
|
"3 0.17300 NaN \n",
|
|
"4 0.07678 NaN \n",
|
|
"\n",
|
|
"[5 rows x 33 columns]\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "-MFwV-9k3Tu1"
|
|
},
|
|
"source": [
|
|
"### *Mapping Class String Values to Numbers*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "yJvwzEfF3ZMe",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"outputId": "7138e1d5-0f52-4a8d-80e1-63f3280ea23f"
|
|
},
|
|
"source": [
|
|
"dataset['diagnosis'] = dataset['diagnosis'].map({'B': 0, 'M': 1}).astype(int)\n",
|
|
"print(dataset.head)"
|
|
],
|
|
"execution_count": 5,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"<bound method NDFrame.head of id diagnosis radius_mean texture_mean perimeter_mean \\\n",
|
|
"0 842302 1 17.99 10.38 122.80 \n",
|
|
"1 842517 1 20.57 17.77 132.90 \n",
|
|
"2 84300903 1 19.69 21.25 130.00 \n",
|
|
"3 84348301 1 11.42 20.38 77.58 \n",
|
|
"4 84358402 1 20.29 14.34 135.10 \n",
|
|
".. ... ... ... ... ... \n",
|
|
"564 926424 1 21.56 22.39 142.00 \n",
|
|
"565 926682 1 20.13 28.25 131.20 \n",
|
|
"566 926954 1 16.60 28.08 108.30 \n",
|
|
"567 927241 1 20.60 29.33 140.10 \n",
|
|
"568 92751 0 7.76 24.54 47.92 \n",
|
|
"\n",
|
|
" area_mean smoothness_mean compactness_mean concavity_mean \\\n",
|
|
"0 1001.0 0.11840 0.27760 0.30010 \n",
|
|
"1 1326.0 0.08474 0.07864 0.08690 \n",
|
|
"2 1203.0 0.10960 0.15990 0.19740 \n",
|
|
"3 386.1 0.14250 0.28390 0.24140 \n",
|
|
"4 1297.0 0.10030 0.13280 0.19800 \n",
|
|
".. ... ... ... ... \n",
|
|
"564 1479.0 0.11100 0.11590 0.24390 \n",
|
|
"565 1261.0 0.09780 0.10340 0.14400 \n",
|
|
"566 858.1 0.08455 0.10230 0.09251 \n",
|
|
"567 1265.0 0.11780 0.27700 0.35140 \n",
|
|
"568 181.0 0.05263 0.04362 0.00000 \n",
|
|
"\n",
|
|
" concave points_mean ... texture_worst perimeter_worst area_worst \\\n",
|
|
"0 0.14710 ... 17.33 184.60 2019.0 \n",
|
|
"1 0.07017 ... 23.41 158.80 1956.0 \n",
|
|
"2 0.12790 ... 25.53 152.50 1709.0 \n",
|
|
"3 0.10520 ... 26.50 98.87 567.7 \n",
|
|
"4 0.10430 ... 16.67 152.20 1575.0 \n",
|
|
".. ... ... ... ... ... \n",
|
|
"564 0.13890 ... 26.40 166.10 2027.0 \n",
|
|
"565 0.09791 ... 38.25 155.00 1731.0 \n",
|
|
"566 0.05302 ... 34.12 126.70 1124.0 \n",
|
|
"567 0.15200 ... 39.42 184.60 1821.0 \n",
|
|
"568 0.00000 ... 30.37 59.16 268.6 \n",
|
|
"\n",
|
|
" smoothness_worst compactness_worst concavity_worst \\\n",
|
|
"0 0.16220 0.66560 0.7119 \n",
|
|
"1 0.12380 0.18660 0.2416 \n",
|
|
"2 0.14440 0.42450 0.4504 \n",
|
|
"3 0.20980 0.86630 0.6869 \n",
|
|
"4 0.13740 0.20500 0.4000 \n",
|
|
".. ... ... ... \n",
|
|
"564 0.14100 0.21130 0.4107 \n",
|
|
"565 0.11660 0.19220 0.3215 \n",
|
|
"566 0.11390 0.30940 0.3403 \n",
|
|
"567 0.16500 0.86810 0.9387 \n",
|
|
"568 0.08996 0.06444 0.0000 \n",
|
|
"\n",
|
|
" concave points_worst symmetry_worst fractal_dimension_worst \\\n",
|
|
"0 0.2654 0.4601 0.11890 \n",
|
|
"1 0.1860 0.2750 0.08902 \n",
|
|
"2 0.2430 0.3613 0.08758 \n",
|
|
"3 0.2575 0.6638 0.17300 \n",
|
|
"4 0.1625 0.2364 0.07678 \n",
|
|
".. ... ... ... \n",
|
|
"564 0.2216 0.2060 0.07115 \n",
|
|
"565 0.1628 0.2572 0.06637 \n",
|
|
"566 0.1418 0.2218 0.07820 \n",
|
|
"567 0.2650 0.4087 0.12400 \n",
|
|
"568 0.0000 0.2871 0.07039 \n",
|
|
"\n",
|
|
" Unnamed: 32 \n",
|
|
"0 NaN \n",
|
|
"1 NaN \n",
|
|
"2 NaN \n",
|
|
"3 NaN \n",
|
|
"4 NaN \n",
|
|
".. ... \n",
|
|
"564 NaN \n",
|
|
"565 NaN \n",
|
|
"566 NaN \n",
|
|
"567 NaN \n",
|
|
"568 NaN \n",
|
|
"\n",
|
|
"[569 rows x 33 columns]>\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "0qgR6rGRxH5y"
|
|
},
|
|
"source": [
|
|
"### *Segregate Dataset into X(Input/IndependentVariable) & Y(Output/DependentVariable)*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "8qOVIILpxefB",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"outputId": "a50556fe-21af-46eb-ff7e-056be4e2d174"
|
|
},
|
|
"source": [
|
|
"X = dataset.iloc[:, 2:32].values\n",
|
|
"X"
|
|
],
|
|
"execution_count": 6,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
"array([[1.799e+01, 1.038e+01, 1.228e+02, ..., 2.654e-01, 4.601e-01,\n",
|
|
" 1.189e-01],\n",
|
|
" [2.057e+01, 1.777e+01, 1.329e+02, ..., 1.860e-01, 2.750e-01,\n",
|
|
" 8.902e-02],\n",
|
|
" [1.969e+01, 2.125e+01, 1.300e+02, ..., 2.430e-01, 3.613e-01,\n",
|
|
" 8.758e-02],\n",
|
|
" ...,\n",
|
|
" [1.660e+01, 2.808e+01, 1.083e+02, ..., 1.418e-01, 2.218e-01,\n",
|
|
" 7.820e-02],\n",
|
|
" [2.060e+01, 2.933e+01, 1.401e+02, ..., 2.650e-01, 4.087e-01,\n",
|
|
" 1.240e-01],\n",
|
|
" [7.760e+00, 2.454e+01, 4.792e+01, ..., 0.000e+00, 2.871e-01,\n",
|
|
" 7.039e-02]])"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 6
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "TE6LNAwmxkBn",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"outputId": "93adc199-d960-4cdd-9d42-3ad978584020"
|
|
},
|
|
"source": [
|
|
"Y = dataset.iloc[:,1].values\n",
|
|
"Y"
|
|
],
|
|
"execution_count": 7,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
"array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,\n",
|
|
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n",
|
|
" 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1,\n",
|
|
" 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1,\n",
|
|
" 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0,\n",
|
|
" 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1,\n",
|
|
" 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n",
|
|
" 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0,\n",
|
|
" 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1,\n",
|
|
" 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1,\n",
|
|
" 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0,\n",
|
|
" 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
|
|
" 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0,\n",
|
|
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,\n",
|
|
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1,\n",
|
|
" 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,\n",
|
|
" 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,\n",
|
|
" 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0,\n",
|
|
" 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1,\n",
|
|
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0,\n",
|
|
" 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n",
|
|
" 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,\n",
|
|
" 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,\n",
|
|
" 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n",
|
|
" 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
|
|
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0])"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 7
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "oOzExtMjxmup"
|
|
},
|
|
"source": [
|
|
"### *Splitting Dataset into Train & Test*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "uJXcK2PHxqJ9"
|
|
},
|
|
"source": [
|
|
"from sklearn.model_selection import train_test_split\n",
|
|
"X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.25, random_state = 0)"
|
|
],
|
|
"execution_count": 8,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "89y8rh-3yv15"
|
|
},
|
|
"source": [
|
|
"### *Feature Scaling*\n",
|
|
"### we scale our data to make all the features contribute equally to the result\n",
|
|
"###Fit_Transform - fit method is calculating the mean and variance of each of the features present in our data\n",
|
|
"###Transform - Transform method is transforming all the features using the respective mean and variance,\n",
|
|
"###We want our test data to be a completely new and a surprise set for our model"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "ehsC_5BSy-Pa"
|
|
},
|
|
"source": [
|
|
"from sklearn.preprocessing import StandardScaler\n",
|
|
"sc = StandardScaler()\n",
|
|
"X_train = sc.fit_transform(X_train)\n",
|
|
"X_test = sc.transform(X_test)"
|
|
],
|
|
"execution_count": 9,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "X1gsZ3YZ51gz"
|
|
},
|
|
"source": [
|
|
"### *Validating some ML algorithm by its accuracy - Model Score*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "ekrjJPx_5-rJ"
|
|
},
|
|
"source": [
|
|
"from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n",
|
|
"from sklearn.linear_model import LogisticRegression\n",
|
|
"from sklearn.tree import DecisionTreeClassifier\n",
|
|
"from sklearn.neighbors import KNeighborsClassifier\n",
|
|
"from sklearn.naive_bayes import GaussianNB\n",
|
|
"from sklearn.svm import SVC\n",
|
|
"\n",
|
|
"from sklearn.model_selection import cross_val_score\n",
|
|
"from sklearn.model_selection import StratifiedKFold"
|
|
],
|
|
"execution_count": 10,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "7fmWEBDq6fUM"
|
|
},
|
|
"source": [
|
|
"models = []\n",
|
|
"models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))\n",
|
|
"models.append(('LDA', LinearDiscriminantAnalysis()))\n",
|
|
"models.append(('KNN', KNeighborsClassifier()))\n",
|
|
"models.append(('CART', DecisionTreeClassifier()))\n",
|
|
"models.append(('NB', GaussianNB()))\n",
|
|
"models.append(('SVM', SVC(gamma='auto')))"
|
|
],
|
|
"execution_count": 11,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "r0dYFpqw6iXs",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 923
|
|
},
|
|
"outputId": "c7d83a67-7567-499b-b99c-3792b5c0f9c5"
|
|
},
|
|
"source": [
|
|
"results = []\n",
|
|
"names = []\n",
|
|
"res = []\n",
|
|
"for name, model in models:\n",
|
|
" kfold = StratifiedKFold(n_splits=10, random_state=None)\n",
|
|
" cv_results = cross_val_score(model, X_train, y_train, cv=kfold, scoring='accuracy')\n",
|
|
" results.append(cv_results)\n",
|
|
" names.append(name)\n",
|
|
" res.append(cv_results.mean())\n",
|
|
" print('%s: %f' % (name, cv_results.mean()))\n",
|
|
"\n",
|
|
"pyplot.ylim(.900, .999)\n",
|
|
"pyplot.bar(names, res, color ='maroon', width = 0.6)\n",
|
|
"\n",
|
|
"pyplot.title('Algorithm Comparison')\n",
|
|
"pyplot.show()"
|
|
],
|
|
"execution_count": 12,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stderr",
|
|
"text": [
|
|
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:1256: FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. Use OneVsRestClassifier(LogisticRegression(..)) instead. Leave it to its default value to avoid this warning.\n",
|
|
" warnings.warn(\n",
|
|
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:1256: FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. Use OneVsRestClassifier(LogisticRegression(..)) instead. Leave it to its default value to avoid this warning.\n",
|
|
" warnings.warn(\n",
|
|
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:1256: FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. Use OneVsRestClassifier(LogisticRegression(..)) instead. Leave it to its default value to avoid this warning.\n",
|
|
" warnings.warn(\n",
|
|
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:1256: FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. Use OneVsRestClassifier(LogisticRegression(..)) instead. Leave it to its default value to avoid this warning.\n",
|
|
" warnings.warn(\n",
|
|
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:1256: FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. Use OneVsRestClassifier(LogisticRegression(..)) instead. Leave it to its default value to avoid this warning.\n",
|
|
" warnings.warn(\n",
|
|
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:1256: FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. Use OneVsRestClassifier(LogisticRegression(..)) instead. Leave it to its default value to avoid this warning.\n",
|
|
" warnings.warn(\n",
|
|
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:1256: FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. Use OneVsRestClassifier(LogisticRegression(..)) instead. Leave it to its default value to avoid this warning.\n",
|
|
" warnings.warn(\n",
|
|
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:1256: FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. Use OneVsRestClassifier(LogisticRegression(..)) instead. Leave it to its default value to avoid this warning.\n",
|
|
" warnings.warn(\n",
|
|
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:1256: FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. Use OneVsRestClassifier(LogisticRegression(..)) instead. Leave it to its default value to avoid this warning.\n",
|
|
" warnings.warn(\n",
|
|
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:1256: FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. Use OneVsRestClassifier(LogisticRegression(..)) instead. Leave it to its default value to avoid this warning.\n",
|
|
" warnings.warn(\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"LR: 0.981285\n",
|
|
"LDA: 0.957863\n",
|
|
"KNN: 0.964839\n",
|
|
"CART: 0.929568\n",
|
|
"NB: 0.941417\n",
|
|
"SVM: 0.979014\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
],
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGzCAYAAAAMr0ziAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMkpJREFUeJzt3XtYVWX+///XBoKNIuIBIRVF0MnUhFIhc0azmCg6mOMpR1PRnDLRHJw8ZaD2KbLS0cg8lIkapeUpa4oyFCc/UuRpPs1Qpl8THRKwUnBIUNnr90c/d+0BD4C6b+z5uK51de17vde973uxbb9Y+94Lm2VZlgAAAAzm4e4BAAAAXAiBBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFuEJsNptmzJjhtucPDQ3ViBEjLrr2nnvuubwDwnmlpaXJZrPp4MGD7h4KYAQCC3AJvPzyy7LZbIqOjnb3UC5abm6uZsyYYfQb4vr163XXXXepadOm8vb2VvPmzTVw4EBt3rzZ3UMDcIURWIBLID09XaGhocrJydH+/fvdPZwq7d27V6+88orzcW5urmbOnGlkYLEsS/Hx8frDH/6gwsJCJSYmatGiRRo7dqwOHDig22+/Xdu3b3f3MC+rBx98UCdPnlTr1q3dPRTACF7uHgBQ133zzTfavn271q1bp4cffljp6elKTk5297Ak/fTGX1ZWJl9fX/n4+Lh7OBdtzpw5SktL04QJEzR37lzZbDbnvieeeEIrV66Ul9fV+b+v0tJS1a9fX56envL09HT3cABjcIUFqKX09HQ1atRId999t/r376/09PSLPjYrK0tdu3aV3W5XeHi4Fi9erBkzZri8QUvSmTNn9NRTTyk8PFw+Pj4KDQ3VtGnTVF5e7lJ3du3Jhx9+qK5du8rX11eLFy927ju7hiUtLU0DBgyQJPXu3Vs2m002m01ZWVku/W3btk1RUVGy2+0KCwvTihUrXPafXWexbds2jR8/XoGBgQoICNDDDz+sU6dO6fjx4xo2bJgaNWqkRo0aadKkSbrQH4g/efKkUlJS1L59e73wwguVzoX009WHqKgo5+MDBw5owIABaty4serVq6ebb75Zf/vb3yqda5vNprfeekszZ85UixYt1KBBA/Xv31/FxcUqLy/XhAkT1KxZM/n5+Sk+Pr7S+bXZbEpISFB6erquu+462e12denSRX//+99d6vLy8vToo4/quuuuk6+vr5o0aaIBAwZUupp19vxt3bpVjz76qJo1a6aWLVu67PvlMTt27FBsbKyaNm0qX19ftWnTRiNHjnTps7S0VBMnTlRISIh8fHx03XXX6YUXXqh03s/OZcOGDerUqZN8fHzUsWNHZWRknPfnA7jL1fkrCnAFpaen6w9/+IO8vb01ePBgLVy4UJ9//rm6det23uN2796tO++8U9dee61mzpypiooKzZo1S4GBgZVqH3roIS1fvlz9+/fXxIkT9dlnnyklJUVffvml1q9f71K7d+9eDR48WA8//LBGjx6t6667rlJ/PXv21Pjx4/Xiiy9q2rRpuv766yXJ+V9J2r9/v/r3769Ro0Zp+PDheu211zRixAh16dJFHTt2dOlv3LhxCg4O1syZM/Xpp59qyZIlCggI0Pbt29WqVSs988wzev/99/X888+rU6dOGjZs2DnPy7Zt2/TDDz9owoQJF3WFobCwULfccot+/PFHjR8/Xk2aNNHy5ct13333ac2aNerbt69LfUpKinx9fTVlyhTt379fqampuuaaa+Th4aFjx45pxowZ+vTTT5WWlqY2bdooKSnJ5fitW7dq9erVGj9+vHx8fPTyyy/rzjvvVE5Ojjp16iRJ+vzzz7V9+3Y98MADatmypQ4ePKiFCxfq1ltvVW5ururVq+fS56OPPqrAwEAlJSWptLS0ynkWFRXpjjvuUGBgoKZMmaKAgAAdPHhQ69atc9ZYlqX77rtPW7Zs0ahRoxQZGakPP/xQjz/+uPLz8/XXv/610rlet26dHn30UTVo0EAvvvii+vXrp0OHDqlJkyYXPPfAFWUBqLEdO3ZYkqxNmzZZlmVZDofDatmypfXYY49VqpVkJScnOx/fe++9Vr169az8/Hxn2759+ywvLy/rl/809+zZY0myHnroIZf+/vKXv1iSrM2bNzvbWrdubUmyMjIyKj1/69atreHDhzsfv/3225Yka8uWLVXWSrL+/ve/O9uKioosHx8fa+LEic62ZcuWWZKs2NhYy+FwONu7d+9u2Ww265FHHnG2nTlzxmrZsqXVq1evSs/3S/Pnz7ckWevXrz9v3VkTJkywJFmffPKJs+3EiRNWmzZtrNDQUKuiosKyLMvasmWLJcnq1KmTderUKWft4MGDLZvNZt11110u/Xbv3t1q3bq1S5skS5K1Y8cOZ1teXp5lt9utvn37Ott+/PHHSuPMzs62JFkrVqxwtp09f7/97W+tM2fOuNSf3ffNN99YlmVZ69evtyRZn3/++TnPxYYNGyxJ1v/8z/+4tPfv39+y2WzW/v37Xebi7e3t0vaPf/zDkmSlpqae8zkAd+EjIaAW0tPTFRQUpN69e0v66TL7oEGDtGrVKlVUVJzzuIqKCn388ce6//771bx5c2d727Ztddddd7nUvv/++5KkxMREl/aJEydKUqWPPtq0aaPY2NiaT+r/16FDB/3ud79zPg4MDNR1112nAwcOVKodNWqUy0c30dHRsixLo0aNcrZ5enqqa9euVR7/SyUlJZKkBg0aXNQ433//fUVFRem3v/2ts83Pz09/+tOfdPDgQeXm5rrUDxs2TNdcc02lsf73RyvR0dE6fPiwzpw549LevXt3denSxfm4VatW6tOnjz788EPnz9zX19e5//Tp0/r+++/Vtm1bBQQEaNeuXZXmMHr06AteTQoICJAkvffeezp9+nSVNe+//748PT01fvx4l/aJEyfKsix98MEHLu0xMTEKDw93Pu7cubP8/f0v+DMC3IHAAtRQRUWFVq1apd69e+ubb77R/v37tX//fkVHR6uwsFCZmZnnPLaoqEgnT55U27ZtK+3777a8vDx5eHhUag8ODlZAQIDy8vJc2tu0aVOLWf2sVatWldoaNWqkY8eOXbC2YcOGkqSQkJBK7VUd/0v+/v6SpBMnTlzUOPPy8qr82Ovsx1v/fX6qM1aHw6Hi4mKX9nbt2lV6rt/85jf68ccfdfToUUk/rcNJSkpyriNp2rSpAgMDdfz48Ur9SRf3M+vVq5f69eunmTNnqmnTpurTp4+WLVvmss4mLy9PzZs3rxT2LvZcSOf+GQPuRmABamjz5s06cuSIVq1apXbt2jm3gQMHSlK1Ft9ejKoWn1bll7/d18a5fuO3qlg0e67aqtqrOv6X2rdvL0n64osvLjTEGqnOWKULj7cq48aN09NPP62BAwfqrbfe0kcffaRNmzapSZMmcjgcleov5mdms9m0Zs0aZWdnKyEhQfn5+Ro5cqS6dOmi//znP9Ueo3Rp5wxcbiy6BWooPT1dzZo104IFCyrtW7dundavX69FixZV+WbUrFkz2e32Ku/Z8t9trVu3lsPh0L59+1wWxRYWFur48eM1vk/HxQagK+23v/2tGjVqpDfffFPTpk274EclrVu31t69eyu1f/XVV879l9K+ffsqtX399deqV6+ec8H0mjVrNHz4cM2ZM8dZU1ZWpuPHj9f6+W+++WbdfPPNevrpp/XGG29oyJAhWrVqlR566CG1bt1aH3/8sU6cOOFyleVynQvgSuIKC1ADJ0+e1Lp163TPPfeof//+lbaEhASdOHFCGzdurPJ4T09PxcTEaMOGDfr222+d7fv376+0ziAuLk6SNG/ePJf2uXPnSpLuvvvuGs2hfv36knRJ3kQvpXr16mny5Mn68ssvNXny5Cp/23/99deVk5Mj6afzk5OTo+zsbOf+0tJSLVmyRKGhoerQocMlHV92drbLOpTDhw/rnXfe0R133OEMV56enpXGnZqaet51TRdy7NixSn1GRkZKkvNjobi4OFVUVOill15yqfvrX/8qm81WaX0UUJdwhQWogY0bN+rEiRO67777qtx/8803KzAwUOnp6Ro0aFCVNTNmzNBHH32kHj16aMyYMc43mk6dOmnPnj3OuoiICA0fPlxLlizR8ePH1atXL+Xk5Gj58uW6//77nQt+qysyMlKenp6aPXu2iouL5ePjo9tuu03NmjWrUX+X0uOPP65//etfmjNnjrZs2aL+/fsrODhYBQUF2rBhg3Jycpx3up0yZYrefPNN3XXXXRo/frwaN26s5cuX65tvvtHatWvl4XFpfy/r1KmTYmNjXb7WLEkzZ8501txzzz1auXKlGjZsqA4dOig7O1sff/xxrb4qvHz5cr388svq27evwsPDdeLECb3yyivy9/d3htp7771XvXv31hNPPKGDBw8qIiJCH330kd555x1NmDDBZYEtUNcQWIAaSE9Pl91u1+9///sq93t4eOjuu+9Wenq6vv/++yrfqLp06aIPPvhAf/nLX/Tkk08qJCREs2bN0pdffum8hH/Wq6++qrCwMKWlpWn9+vUKDg7W1KlTa3VH3eDgYC1atEgpKSkaNWqUKioqtGXLFiMCi4eHh1asWKE+ffpoyZIleuGFF1RSUqLAwED17NlTzz33nLp37y5JCgoK0vbt2zV58mSlpqaqrKxMnTt31rvvvlvjq0/n06tXL3Xv3l0zZ87UoUOH1KFDB6Wlpalz587Omvnz58vT01Pp6ekqKytTjx49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\n"
|
|
},
|
|
"metadata": {}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "ospEktZ3_KgQ"
|
|
},
|
|
"source": [
|
|
"### *Training & Prediction using the algorithm with high accuracy*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"id": "zbi3Uvd0_Yn7",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"outputId": "c3532d24-4239-4945-daee-c3d5ba95fcda"
|
|
},
|
|
"source": [
|
|
"from sklearn.svm import SVC\n",
|
|
"model.fit(X_train, y_train)\n",
|
|
"y_pred = model.predict(X_test)\n",
|
|
"print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"
|
|
],
|
|
"execution_count": 13,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"[[1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 1]\n",
|
|
" [1 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 1]\n",
|
|
" [1 1]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [0 0]\n",
|
|
" [1 1]]\n"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
} |