From 8ded6408c87a9acc25732a35e9568637a9605aaf Mon Sep 17 00:00:00 2001
From: andvagapov <86461996+andvagapov@users.noreply.github.com>
Date: Fri, 25 Jun 2021 09:43:21 +0300
Subject: [PATCH 1/4] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?=
=?UTF-8?q?=D0=BD=D0=B0=201=20=D0=BB=D0=B0=D0=B1=D0=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../lab1_3 (5).ipynb" | 5352 +++++++++++++++++
1 file changed, 5352 insertions(+)
create mode 100644 "ml/lb1/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/lab1_3 (5).ipynb"
diff --git "a/ml/lb1/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/lab1_3 (5).ipynb" "b/ml/lb1/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/lab1_3 (5).ipynb"
new file mode 100644
index 0000000..24054b8
--- /dev/null
+++ "b/ml/lb1/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/lab1_3 (5).ipynb"
@@ -0,0 +1,5352 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "id": "vkCoLck9lErz"
+ },
+ "outputs": [],
+ "source": [
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "H848iYKnoGMT"
+ },
+ "source": [
+ "# Массивы NumPy"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "s-kILeHIlbZN",
+ "outputId": "547845c4-a64a-4728-f26a-9f489045c10d"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "vec = np.array([1,2,3])\n",
+ "vec.ndim "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "8ZgVPvqdlklr",
+ "outputId": "26795931-3d45-4648-a7bb-ddd3f036928a"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mat = np.array([[1,2,3],[4,5,6]])\n",
+ "mat.ndim "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "2q57HdX3lvBT",
+ "outputId": "677d5488-ee13-4009-dd85-dad9919e5d15"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(3,)"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "vec.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ },
+ "id": "qpIG5Qm3l5IE",
+ "outputId": "12d53ebb-c6fd-49a7-cc71-7c5503a16c66"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'int32'"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mat.dtype.name "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "ei_BzZIml9C7",
+ "outputId": "d58b96a1-6d20-4e0b-d59b-c0425b196fc0"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "4"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mat.itemsize "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Создание массивов"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "a2mFdyuCmLUz",
+ "outputId": "fe8050c4-42e0-4eeb-e9af-e76864aa5ed4"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([1, 2, 3])"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A = np.array([1, 2, 3]) \n",
+ "A"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "hC8j1VZdmSrK",
+ "outputId": "22d718fa-12e9-4f40-bb77-2b282e866edd",
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([1., 2., 3.])"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A = np.array([1, 2, 3], dtype=float) \n",
+ "A"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "zquz8XgcmYVa",
+ "outputId": "2fbe2d0a-122e-4a8b-ba4f-ee09ca09b349"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[1, 2, 3],\n",
+ " [4, 5, 6]])"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "B = np.array([[1,2,3],[4,5,6]])\n",
+ "B"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Создание массивов специального вида"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "47g5kC0Zmmgc",
+ "outputId": "b4305f66-e9c1-41aa-96da-07b1d78d6707"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0., 0., 0.])"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.zeros((3)) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "DSzH4O7Gm1Pr",
+ "outputId": "e42e029c-01d2-442b-8e86-7026c6e78136"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[1., 1., 1., 1.],\n",
+ " [1., 1., 1., 1.],\n",
+ " [1., 1., 1., 1.]])"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.ones((3, 4)) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "8BxSLNaEnCKr",
+ "outputId": "0f5bbb59-6aa3-48fd-de40-03e47e14abb3"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[1., 0., 0.],\n",
+ " [0., 1., 0.],\n",
+ " [0., 0., 1.]])"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.identity(3) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "6ncYJf5DneBq",
+ "outputId": "98a14f64-c1dd-419e-e689-18af925a1293"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 7.55642701e-311, -5.37804471e-310, 1.96930938e+243,\n",
+ " 3.65875398e+233, 1.17523295e+214],\n",
+ " [-5.45592196e-310, 1.55533306e+161, 1.27581013e+232,\n",
+ " 2.68901231e+161, -5.49348129e-310]])"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.empty((2, 5)) "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "qehyDUqUoegk"
+ },
+ "source": [
+ "### Создание последовательностей"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "GxBPtN8qolZO",
+ "outputId": "0f270c86-b8e9-464b-c7bc-134c60391da4"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 2, 5, 8, 11, 14, 17])"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.arange(2, 20, 3) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "Ej7dmZJRopn4",
+ "outputId": "9d10c924-0a2f-4e16-d420-2aad445d0249"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([2.5, 3.4, 4.3, 5.2, 6.1, 7. , 7.9])"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.arange(2.5, 8.7, 0.9)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "dzd0Z41cozVz",
+ "outputId": "d7ae4fe6-3ed0-479d-b682-94b5561a5c7a"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 2. , 3.23076923, 4.46153846, 5.69230769, 6.92307692,\n",
+ " 8.15384615, 9.38461538, 10.61538462, 11.84615385, 13.07692308,\n",
+ " 14.30769231, 15.53846154, 16.76923077, 18. ])"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.linspace(2, 18, 14)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "TnOxT5a4o30L",
+ "outputId": "3a9a54ea-1171-4e22-cd48-45efa53228ec"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0, 1, 2],\n",
+ " [3, 4, 5],\n",
+ " [6, 7, 8]])"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.arange(9).reshape(3, 3) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "4IsX2FWhpRpz",
+ "outputId": "8802669e-8b0c-411c-e63a-357d44851507"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0, 1, 2, 3],\n",
+ " [4, 5, 6, 7]])"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "С = np.arange(8).reshape(2, -1) \n",
+ "С"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0, 1, 2],\n",
+ " [3, 4, 5]])"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "C = np.arange(6).reshape(2, -1)\n",
+ "C"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "-rPMYzu4pg5j",
+ "outputId": "938cac8c-2816-4669-bc2c-5a91cbd1aa6d"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0, 3],\n",
+ " [1, 4],\n",
+ " [2, 5]])"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "C.T "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "_zMeMNHfqBIq",
+ "outputId": "cc03ad28-d920-4ce3-8fe9-6b529bbfad66"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 1, 2, 0, 1, 4],\n",
+ " [ 3, 4, 5, 9, 16, 25]])"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A = np.arange(6).reshape(2, -1)\n",
+ "np.hstack((A, A**2)) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "ubk0VbvcqOzr",
+ "outputId": "9ad79459-fab5-4577-98ca-e9735570b99e"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 1, 2],\n",
+ " [ 3, 4, 5],\n",
+ " [ 0, 1, 4],\n",
+ " [ 9, 16, 25]])"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.vstack((A, A**2)) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "PE4KDqvBqViK",
+ "outputId": "036a2d48-6107-46d0-ff71-98c5e99d7185"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 1, 2, 0, 1, 4],\n",
+ " [ 3, 4, 5, 9, 16, 25]])"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.concatenate((A, A**2), axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "JLbS2xv_rBeb",
+ "outputId": "5b5e7b4e-c834-4649-f2e1-713247d7b50e"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0, 1, 2, 0, 1, 2],\n",
+ " [0, 1, 2, 0, 1, 2]])"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A = np.arange(3)\n",
+ "np.tile(A, (2, 2))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "GCwo92V5rr6p"
+ },
+ "source": [
+ "## Базовые операции"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "id": "bPj5TI5kr03V"
+ },
+ "outputs": [],
+ "source": [
+ "A = np.arange(9).reshape(3, 3)\n",
+ "B = np.arange(1, 10).reshape(3, 3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "AZPW4cQ-r8nz",
+ "outputId": "de5a3ab9-09c0-4d00-d8a2-401f046d9cb8"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[0 1 2]\n",
+ " [3 4 5]\n",
+ " [6 7 8]]\n",
+ "[[1 2 3]\n",
+ " [4 5 6]\n",
+ " [7 8 9]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(A)\n",
+ "print(B)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "37V9YTf4sHOj",
+ "outputId": "0ff71bda-a910-4c99-d904-e565b41bc3ad"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 1, 3, 5],\n",
+ " [ 7, 9, 11],\n",
+ " [13, 15, 17]])"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A + B"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "JwMeQNvKsKVq",
+ "outputId": "ab3fe51b-8d1c-4d2e-e5b7-815a6bb18609"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0. , 0.5 , 0.66666667],\n",
+ " [0.75 , 0.8 , 0.83333333],\n",
+ " [0.85714286, 0.875 , 0.88888889]])"
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A * 1.0 / B"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "dKauehNWsNYa",
+ "outputId": "72d1715f-c878-45d6-c38c-23a03182a06a"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[1, 2, 3],\n",
+ " [4, 5, 6],\n",
+ " [7, 8, 9]])"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A + 1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "9--NC41bsSZe",
+ "outputId": "34d27d30-c7ed-4ae5-fa3c-7659a27d35ce"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 3, 6],\n",
+ " [ 9, 12, 15],\n",
+ " [18, 21, 24]])"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "3 * A"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "UNW3iyersT-0",
+ "outputId": "d179cf19-60bc-4110-cf8e-644628cc0d81"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 1, 4],\n",
+ " [ 9, 16, 25],\n",
+ " [36, 49, 64]], dtype=int32)"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A ** 2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "wSnQz8XRsVYj",
+ "outputId": "3474a1ee-a8cc-44c4-a2b4-a7f0d603f035"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 2, 6],\n",
+ " [12, 20, 30],\n",
+ " [42, 56, 72]])"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A * B "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7skVtabvsXCi",
+ "outputId": "b2f3ad69-b355-4159-ba53-2236b4e68f43"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 18, 21, 24],\n",
+ " [ 54, 66, 78],\n",
+ " [ 90, 111, 132]])"
+ ]
+ },
+ "execution_count": 33,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A.dot(B) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "5KR3jRkosZfa",
+ "outputId": "97f14a8c-f0c3-423a-d2ab-e630c8ea82ce"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 1, 2],\n",
+ " [10, 11, 12],\n",
+ " [20, 21, 22],\n",
+ " [30, 31, 32]])"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.tile(np.arange(0, 40, 10), (3, 1)).T + np.array([0, 1, 2]) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "FMuaT5GsswvD",
+ "outputId": "d72e255a-d867-4298-8e60-ee6c763dd9f0"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[1.00000000e+00, 2.71828183e+00, 7.38905610e+00],\n",
+ " [2.00855369e+01, 5.45981500e+01, 1.48413159e+02],\n",
+ " [4.03428793e+02, 1.09663316e+03, 2.98095799e+03]])"
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.exp(A) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "39VPMDEjs1JY",
+ "outputId": "218b9857-15fb-44ee-d801-dea78c29f681"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0, 1, 2],\n",
+ " [3, 4, 5],\n",
+ " [6, 7, 8]])"
+ ]
+ },
+ "execution_count": 36,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "iqHhs5YKs99z",
+ "outputId": "513e8b93-e7d5-4171-f5d1-672ac41e0263"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0"
+ ]
+ },
+ "execution_count": 37,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A.min() "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "hke6fi9ts-1P",
+ "outputId": "c6faca38-4144-434d-f896-e9985fbfc619"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([6, 7, 8])"
+ ]
+ },
+ "execution_count": 38,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A.max(axis=0) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "4BzXoXuVtBKb",
+ "outputId": "65c7ca20-133d-47d3-fb00-81dcb15d4264"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 3, 12, 21])"
+ ]
+ },
+ "execution_count": 39,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A.sum(axis=1) "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "XZ568K7vtE2N"
+ },
+ "source": [
+ "## Индексация"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "id": "7WHogsQmtQtj"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
+ ]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a = np.arange(10)\n",
+ "a"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "HjdZ9EP4tUFD",
+ "outputId": "6d675ce8-c90f-4c14-e75e-30b59e32132c"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([2, 3, 4])"
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a[2:5]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "LWJdC6IFtVs8",
+ "outputId": "9e298476-933f-4735-b2e7-68dc77bc43f3"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([3, 5, 7])"
+ ]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a[3:8:2] # от, до, шаг"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "kK4ybpuotZ87",
+ "outputId": "c42de9da-58ea-4f8b-ee15-6afeb24e7f2a"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8],\n",
+ " [ 9, 10, 11, 12, 13, 14, 15, 16, 17],\n",
+ " [18, 19, 20, 21, 22, 23, 24, 25, 26],\n",
+ " [27, 28, 29, 30, 31, 32, 33, 34, 35],\n",
+ " [36, 37, 38, 39, 40, 41, 42, 43, 44],\n",
+ " [45, 46, 47, 48, 49, 50, 51, 52, 53],\n",
+ " [54, 55, 56, 57, 58, 59, 60, 61, 62],\n",
+ " [63, 64, 65, 66, 67, 68, 69, 70, 71],\n",
+ " [72, 73, 74, 75, 76, 77, 78, 79, 80]])"
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A = np.arange(81).reshape(9, -1)\n",
+ "A"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "In6KN9-mtkGj",
+ "outputId": "cbf4cf0b-aa89-4996-a2d5-5c7b46bb41a8"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[18, 19, 20, 21, 22, 23, 24, 25, 26],\n",
+ " [27, 28, 29, 30, 31, 32, 33, 34, 35]])"
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A[2:4]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "qJHbt99Rto17",
+ "outputId": "5a3576e2-2c97-4546-bbf0-fee91cacc92a"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 2, 3],\n",
+ " [11, 12],\n",
+ " [20, 21],\n",
+ " [29, 30],\n",
+ " [38, 39],\n",
+ " [47, 48],\n",
+ " [56, 57],\n",
+ " [65, 66],\n",
+ " [74, 75]])"
+ ]
+ },
+ "execution_count": 45,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a\n",
+ "A[:, 2:4]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "5xHijrtUt0N6",
+ "outputId": "967e3070-6ca4-4619-b93b-bf5918bffa0b"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[20, 21],\n",
+ " [29, 30]])"
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A[2:4, 2:4]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "xNlvFaFot-yy",
+ "outputId": "fc609746-2aab-4b6f-eff5-2a1c9da7f585"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([72, 73, 74, 75, 76, 77, 78, 79, 80])"
+ ]
+ },
+ "execution_count": 47,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A[-1]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "G9yl7pu7uVDR",
+ "outputId": "37172528-05a0-4e70-9bed-646d3889353f"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8],\n",
+ " [ 9, 10, 11, 12, 13, 14, 15, 16, 17],\n",
+ " [18, 19, 20, 21, 22, 23, 24, 25, 26],\n",
+ " [27, 28, 29, 30, 31, 32, 33, 34, 35],\n",
+ " [36, 37, 38, 39, 40, 41, 42, 43, 44],\n",
+ " [45, 46, 47, 48, 49, 50, 51, 52, 53],\n",
+ " [54, 55, 56, 57, 58, 59, 60, 61, 62],\n",
+ " [63, 64, 65, 66, 67, 68, 69, 70, 71],\n",
+ " [72, 73, 74, 75, 76, 77, 78, 79, 80]])"
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A = np.arange(81).reshape(9, -1) \n",
+ "A"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "GuaCmfQiuBTr",
+ "outputId": "5bf05c9d-fb4d-48db-b5b8-b3943a4ee547"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([18, 37, 48])"
+ ]
+ },
+ "execution_count": 49,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A[[2, 4, 5], [0, 1, 3]] "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "xZgEANeguSKy",
+ "outputId": "656173ba-9fb8-4bf5-e9a5-5dda2a206870"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])"
+ ]
+ },
+ "execution_count": 50,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A = np.arange(11)\n",
+ "A"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "x61032R5uq3L",
+ "outputId": "d8dd7f1b-56b2-4d67-a6f2-b6c3120b1009"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([3, 8])"
+ ]
+ },
+ "execution_count": 51,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A[A % 5 == 3] "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "yeGnxDXxutXy",
+ "outputId": "ff1f4662-8a7a-41f5-be8f-730e03a6257d"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 0, 1, 2, 4, 5, 6, 9, 10])"
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A[np.logical_and(A != 7, A % 5 != 3)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "aGETWdA6u6Aj",
+ "outputId": "c80a00bc-9645-4c8f-b0e9-aba3d6a30ae8"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 0, 1, 2, 4, 5, 6, 9, 10])"
+ ]
+ },
+ "execution_count": 53,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A[(A != 7) & (A % 5 != 3)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "id": "n59r2_uEu_OL"
+ },
+ "outputs": [],
+ "source": [
+ "import time\n",
+ "A_quick_arr = np.random.normal(size = (1000000))\n",
+ "B_quick_arr = np.random.normal(size = (1000000))\n",
+ "A_slow_list, B_slow_list = list(A_quick_arr), list(B_quick_arr)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "224 ms ± 3.76 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit -n 10 -c\n",
+ "ans = 0\n",
+ "for i in range(len(A_slow_list)):\n",
+ " ans += A_slow_list[i] * B_slow_list[i]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "241 ms ± 2.48 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit -n 10 -c\n",
+ "ans = sum([A_slow_list[i] * B_slow_list[i] for i in range(1000000)])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "3.68 ms ± 232 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit -n 10 -c\n",
+ "ans = np.sum(A_quick_arr * B_quick_arr)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Pandas"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0 5\n",
+ "1 6\n",
+ "2 7\n",
+ "3 8\n",
+ "4 9\n",
+ "5 10\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 58,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "my_series = pd.Series([5, 6, 7, 8, 9, 10]) \n",
+ "my_series"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "RangeIndex(start=0, stop=6, step=1)"
+ ]
+ },
+ "execution_count": 59,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series.index "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 5, 6, 7, 8, 9, 10], dtype=int64)"
+ ]
+ },
+ "execution_count": 60,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series.values "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "9"
+ ]
+ },
+ "execution_count": 61,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series[4]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10"
+ ]
+ },
+ "execution_count": 62,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series2 = pd.Series([5, 6, 7, 8, 9, 10], index=['a', 'b', 'c', 'd', 'e', 'f']) \n",
+ "my_series2['f']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "a 5\n",
+ "b 6\n",
+ "f 10\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 63,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series2[['a', 'b', 'f']] "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "a 0\n",
+ "b 0\n",
+ "c 7\n",
+ "d 8\n",
+ "e 9\n",
+ "f 0\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 64,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series2[['a', 'b', 'f']] = 0\n",
+ "my_series2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "c 7\n",
+ "d 8\n",
+ "e 9\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 65,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series2[my_series2 > 0] "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "c 14\n",
+ "d 16\n",
+ "e 18\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 66,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series2[my_series2 > 0]*2 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "a 5\n",
+ "b 6\n",
+ "c 7\n",
+ "d 8\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 67,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series3 = pd.Series({'a':5, 'b':6, 'c':7, 'd':8})\n",
+ "my_series3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "letters\n",
+ "a 5\n",
+ "b 6\n",
+ "c 7\n",
+ "d 8\n",
+ "Name: numbers, dtype: int64"
+ ]
+ },
+ "execution_count": 68,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series3.name = 'numbers' \n",
+ "my_series3.index.name = 'letters'\n",
+ "my_series3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 69,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "A 5\n",
+ "B 6\n",
+ "C 7\n",
+ "D 8\n",
+ "Name: numbers, dtype: int64"
+ ]
+ },
+ "execution_count": 69,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "my_series3.index = ['A', 'B', 'C', 'D'] \n",
+ "my_series3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# DataFrame"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country | \n",
+ " population | \n",
+ " square | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " Kazahstan | \n",
+ " 17.04 | \n",
+ " 2724902 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " Russia | \n",
+ " 143.50 | \n",
+ " 17125191 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " Belarus | \n",
+ " 9.50 | \n",
+ " 207600 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " Ukraine | \n",
+ " 45.50 | \n",
+ " 603628 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " country population square\n",
+ "0 Kazahstan 17.04 2724902\n",
+ "1 Russia 143.50 17125191\n",
+ "2 Belarus 9.50 207600\n",
+ "3 Ukraine 45.50 603628"
+ ]
+ },
+ "execution_count": 70,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df =pd. DataFrame({'country' : ['Kazahstan', 'Russia', 'Belarus', 'Ukraine'], 'population' : [17.04, 143.5, 9.5, 45.5], 'square' : [2724902, 17125191, 207600, 603628]})\n",
+ "df "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0 Kazahstan\n",
+ "1 Russia\n",
+ "2 Belarus\n",
+ "3 Ukraine\n",
+ "Name: country, dtype: object"
+ ]
+ },
+ "execution_count": 71,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df['country'] "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['country', 'population', 'square'], dtype='object')"
+ ]
+ },
+ "execution_count": 72,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.columns "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "RangeIndex(start=0, stop=4, step=1)"
+ ]
+ },
+ "execution_count": 73,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.index "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 74,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country | \n",
+ " population | \n",
+ " square | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | KZ | \n",
+ " Kazahstan | \n",
+ " 17.04 | \n",
+ " 2724902 | \n",
+ "
\n",
+ " \n",
+ " | RU | \n",
+ " Russia | \n",
+ " 143.50 | \n",
+ " 17125191 | \n",
+ "
\n",
+ " \n",
+ " | BY | \n",
+ " Belarus | \n",
+ " 9.50 | \n",
+ " 207600 | \n",
+ "
\n",
+ " \n",
+ " | UA | \n",
+ " Ukraine | \n",
+ " 45.50 | \n",
+ " 603628 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " country population square\n",
+ "KZ Kazahstan 17.04 2724902\n",
+ "RU Russia 143.50 17125191\n",
+ "BY Belarus 9.50 207600\n",
+ "UA Ukraine 45.50 603628"
+ ]
+ },
+ "execution_count": 74,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df = pd. DataFrame({'country' : ['Kazahstan', 'Russia', 'Belarus', 'Ukraine'], 'population' : [17.04, 143.5, 9.5, 45.5], 'square' : [2724902, 17125191, 207600, 603628]}, index=['KZ', 'RU', 'BY', 'UA'])\n",
+ "df "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country | \n",
+ " population | \n",
+ " square | \n",
+ "
\n",
+ " \n",
+ " | Country Code | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | KZ | \n",
+ " Kazahstan | \n",
+ " 17.04 | \n",
+ " 2724902 | \n",
+ "
\n",
+ " \n",
+ " | RU | \n",
+ " Russia | \n",
+ " 143.50 | \n",
+ " 17125191 | \n",
+ "
\n",
+ " \n",
+ " | BY | \n",
+ " Belarus | \n",
+ " 9.50 | \n",
+ " 207600 | \n",
+ "
\n",
+ " \n",
+ " | UA | \n",
+ " Ukraine | \n",
+ " 45.50 | \n",
+ " 603628 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " country population square\n",
+ "Country Code \n",
+ "KZ Kazahstan 17.04 2724902\n",
+ "RU Russia 143.50 17125191\n",
+ "BY Belarus 9.50 207600\n",
+ "UA Ukraine 45.50 603628"
+ ]
+ },
+ "execution_count": 75,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.index = ['KZ', 'RU', 'BY', 'UA']\n",
+ "df.index.name = 'Country Code'\n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Country Code\n",
+ "KZ Kazahstan\n",
+ "RU Russia\n",
+ "BY Belarus\n",
+ "UA Ukraine\n",
+ "Name: country, dtype: object"
+ ]
+ },
+ "execution_count": 76,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df['country']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "country Kazahstan\n",
+ "population 17.04\n",
+ "square 2724902\n",
+ "Name: KZ, dtype: object"
+ ]
+ },
+ "execution_count": 77,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.loc['KZ'] "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "country Kazahstan\n",
+ "population 17.04\n",
+ "square 2724902\n",
+ "Name: KZ, dtype: object"
+ ]
+ },
+ "execution_count": 78,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.iloc[0] "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 79,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Country Code\n",
+ "KZ 17.04\n",
+ "RU 143.50\n",
+ "Name: population, dtype: float64"
+ ]
+ },
+ "execution_count": 79,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.loc[['KZ', 'RU'], 'population']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country | \n",
+ " population | \n",
+ " square | \n",
+ "
\n",
+ " \n",
+ " | Country Code | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | KZ | \n",
+ " Kazahstan | \n",
+ " 17.04 | \n",
+ " 2724902 | \n",
+ "
\n",
+ " \n",
+ " | RU | \n",
+ " Russia | \n",
+ " 143.50 | \n",
+ " 17125191 | \n",
+ "
\n",
+ " \n",
+ " | BY | \n",
+ " Belarus | \n",
+ " 9.50 | \n",
+ " 207600 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " country population square\n",
+ "Country Code \n",
+ "KZ Kazahstan 17.04 2724902\n",
+ "RU Russia 143.50 17125191\n",
+ "BY Belarus 9.50 207600"
+ ]
+ },
+ "execution_count": 80,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.loc['KZ': 'BY', :]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country | \n",
+ " square | \n",
+ "
\n",
+ " \n",
+ " | Country Code | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | KZ | \n",
+ " Kazahstan | \n",
+ " 2724902 | \n",
+ "
\n",
+ " \n",
+ " | RU | \n",
+ " Russia | \n",
+ " 17125191 | \n",
+ "
\n",
+ " \n",
+ " | UA | \n",
+ " Ukraine | \n",
+ " 603628 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " country square\n",
+ "Country Code \n",
+ "KZ Kazahstan 2724902\n",
+ "RU Russia 17125191\n",
+ "UA Ukraine 603628"
+ ]
+ },
+ "execution_count": 81,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df[df.population>10][['country', 'square']] "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 82,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Code | \n",
+ " country | \n",
+ " population | \n",
+ " square | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " KZ | \n",
+ " Kazahstan | \n",
+ " 17.04 | \n",
+ " 2724902 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " RU | \n",
+ " Russia | \n",
+ " 143.50 | \n",
+ " 17125191 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " BY | \n",
+ " Belarus | \n",
+ " 9.50 | \n",
+ " 207600 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " UA | \n",
+ " Ukraine | \n",
+ " 45.50 | \n",
+ " 603628 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Code country population square\n",
+ "0 KZ Kazahstan 17.04 2724902\n",
+ "1 RU Russia 143.50 17125191\n",
+ "2 BY Belarus 9.50 207600\n",
+ "3 UA Ukraine 45.50 603628"
+ ]
+ },
+ "execution_count": 82,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.reset_index()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country | \n",
+ " population | \n",
+ " square | \n",
+ " density | \n",
+ "
\n",
+ " \n",
+ " | Country Code | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | KZ | \n",
+ " Kazahstan | \n",
+ " 17.04 | \n",
+ " 2724902 | \n",
+ " 6.253436 | \n",
+ "
\n",
+ " \n",
+ " | RU | \n",
+ " Russia | \n",
+ " 143.50 | \n",
+ " 17125191 | \n",
+ " 8.379469 | \n",
+ "
\n",
+ " \n",
+ " | BY | \n",
+ " Belarus | \n",
+ " 9.50 | \n",
+ " 207600 | \n",
+ " 45.761079 | \n",
+ "
\n",
+ " \n",
+ " | UA | \n",
+ " Ukraine | \n",
+ " 45.50 | \n",
+ " 603628 | \n",
+ " 75.377550 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " country population square density\n",
+ "Country Code \n",
+ "KZ Kazahstan 17.04 2724902 6.253436\n",
+ "RU Russia 143.50 17125191 8.379469\n",
+ "BY Belarus 9.50 207600 45.761079\n",
+ "UA Ukraine 45.50 603628 75.377550"
+ ]
+ },
+ "execution_count": 83,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df['density'] = df['population'] / df['square'] * 1000000 \n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country | \n",
+ " population | \n",
+ " square | \n",
+ "
\n",
+ " \n",
+ " | Country Code | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | KZ | \n",
+ " Kazahstan | \n",
+ " 17.04 | \n",
+ " 2724902 | \n",
+ "
\n",
+ " \n",
+ " | RU | \n",
+ " Russia | \n",
+ " 143.50 | \n",
+ " 17125191 | \n",
+ "
\n",
+ " \n",
+ " | BY | \n",
+ " Belarus | \n",
+ " 9.50 | \n",
+ " 207600 | \n",
+ "
\n",
+ " \n",
+ " | UA | \n",
+ " Ukraine | \n",
+ " 45.50 | \n",
+ " 603628 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " country population square\n",
+ "Country Code \n",
+ "KZ Kazahstan 17.04 2724902\n",
+ "RU Russia 143.50 17125191\n",
+ "BY Belarus 9.50 207600\n",
+ "UA Ukraine 45.50 603628"
+ ]
+ },
+ "execution_count": 84,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.drop(['density'], axis = 'columns') "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country | \n",
+ " population | \n",
+ " square | \n",
+ " density | \n",
+ "
\n",
+ " \n",
+ " | Country Code | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | KZ | \n",
+ " Kazahstan | \n",
+ " 17.04 | \n",
+ " 2724902 | \n",
+ " 6.253436 | \n",
+ "
\n",
+ " \n",
+ " | RU | \n",
+ " Russia | \n",
+ " 143.50 | \n",
+ " 17125191 | \n",
+ " 8.379469 | \n",
+ "
\n",
+ " \n",
+ " | BY | \n",
+ " Belarus | \n",
+ " 9.50 | \n",
+ " 207600 | \n",
+ " 45.761079 | \n",
+ "
\n",
+ " \n",
+ " | UA | \n",
+ " Ukraine | \n",
+ " 45.50 | \n",
+ " 603628 | \n",
+ " 75.377550 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " country population square density\n",
+ "Country Code \n",
+ "KZ Kazahstan 17.04 2724902 6.253436\n",
+ "RU Russia 143.50 17125191 8.379469\n",
+ "BY Belarus 9.50 207600 45.761079\n",
+ "UA Ukraine 45.50 603628 75.377550"
+ ]
+ },
+ "execution_count": 85,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df['density'] = df['population'] / df['square'] * 1000000 \n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country | \n",
+ " population | \n",
+ " square | \n",
+ "
\n",
+ " \n",
+ " | Country Code | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | KZ | \n",
+ " Kazahstan | \n",
+ " 17.04 | \n",
+ " 2724902 | \n",
+ "
\n",
+ " \n",
+ " | RU | \n",
+ " Russia | \n",
+ " 143.50 | \n",
+ " 17125191 | \n",
+ "
\n",
+ " \n",
+ " | BY | \n",
+ " Belarus | \n",
+ " 9.50 | \n",
+ " 207600 | \n",
+ "
\n",
+ " \n",
+ " | UA | \n",
+ " Ukraine | \n",
+ " 45.50 | \n",
+ " 603628 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " country population square\n",
+ "Country Code \n",
+ "KZ Kazahstan 17.04 2724902\n",
+ "RU Russia 143.50 17125191\n",
+ "BY Belarus 9.50 207600\n",
+ "UA Ukraine 45.50 603628"
+ ]
+ },
+ "execution_count": 86,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "del df['density'] \n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country | \n",
+ " population | \n",
+ " square | \n",
+ "
\n",
+ " \n",
+ " | Country Code | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | KZ | \n",
+ " Kazahstan | \n",
+ " 17.04 | \n",
+ " 2724902 | \n",
+ "
\n",
+ " \n",
+ " | RU | \n",
+ " Russia | \n",
+ " 143.50 | \n",
+ " 17125191 | \n",
+ "
\n",
+ " \n",
+ " | BY | \n",
+ " Belarus | \n",
+ " 9.50 | \n",
+ " 207600 | \n",
+ "
\n",
+ " \n",
+ " | UA | \n",
+ " Ukraine | \n",
+ " 45.50 | \n",
+ " 603628 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " country population square\n",
+ "Country Code \n",
+ "KZ Kazahstan 17.04 2724902\n",
+ "RU Russia 143.50 17125191\n",
+ "BY Belarus 9.50 207600\n",
+ "UA Ukraine 45.50 603628"
+ ]
+ },
+ "execution_count": 87,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df = df.rename(columns={'Country Code': 'country_code'}) \n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Группировка и агрегирование в pandas"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 88,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " PassengerId Survived Pclass \\\n",
+ "0 1 0 3 \n",
+ "1 2 1 1 \n",
+ "2 3 1 3 \n",
+ "3 4 1 1 \n",
+ "4 5 0 3 \n",
+ "\n",
+ " Name Sex Age SibSp \\\n",
+ "0 Braund, Mr. Owen Harris male 22.0 1 \n",
+ "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
+ "2 Heikkinen, Miss. Laina female 26.0 0 \n",
+ "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
+ "4 Allen, Mr. William Henry male 35.0 0 \n",
+ "\n",
+ " Parch Ticket Fare Cabin Embarked \n",
+ "0 0 A/5 21171 7.2500 NaN S \n",
+ "1 0 PC 17599 71.2833 C85 C \n",
+ "2 0 STON/O2. 3101282 7.9250 NaN S \n",
+ "3 0 113803 53.1000 C123 S \n",
+ "4 0 373450 8.0500 NaN S \n"
+ ]
+ }
+ ],
+ "source": [
+ "titanic_df = pd.read_csv('titanic.csv')\n",
+ "print(titanic_df.head())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 89,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Sex Survived\n",
+ "female 0 81\n",
+ " 1 233\n",
+ "male 0 468\n",
+ " 1 109\n",
+ "Name: PassengerId, dtype: int64\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(titanic_df.groupby(['Sex', 'Survived'])['PassengerId'].count()) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Pclass Survived\n",
+ "1 0 80\n",
+ " 1 136\n",
+ "2 0 97\n",
+ " 1 87\n",
+ "3 0 372\n",
+ " 1 119\n",
+ "Name: PassengerId, dtype: int64\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(titanic_df.groupby(['Pclass', 'Survived'])['PassengerId'].count())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 91,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 92,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Braund, Mr. Owen Harris | \n",
+ " male | \n",
+ " 22.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " A/5 21171 | \n",
+ " 7.2500 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
+ " female | \n",
+ " 38.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " PC 17599 | \n",
+ " 71.2833 | \n",
+ " C85 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " Heikkinen, Miss. Laina | \n",
+ " female | \n",
+ " 26.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " STON/O2. 3101282 | \n",
+ " 7.9250 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
+ " female | \n",
+ " 35.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 113803 | \n",
+ " 53.1000 | \n",
+ " C123 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Allen, Mr. William Henry | \n",
+ " male | \n",
+ " 35.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 373450 | \n",
+ " 8.0500 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 886 | \n",
+ " 887 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " Montvila, Rev. Juozas | \n",
+ " male | \n",
+ " 27.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 211536 | \n",
+ " 13.0000 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 887 | \n",
+ " 888 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Graham, Miss. Margaret Edith | \n",
+ " female | \n",
+ " 19.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 112053 | \n",
+ " 30.0000 | \n",
+ " B42 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 888 | \n",
+ " 889 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Johnston, Miss. Catherine Helen \"Carrie\" | \n",
+ " female | \n",
+ " NaN | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " W./C. 6607 | \n",
+ " 23.4500 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 889 | \n",
+ " 890 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Behr, Mr. Karl Howell | \n",
+ " male | \n",
+ " 26.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 111369 | \n",
+ " 30.0000 | \n",
+ " C148 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 890 | \n",
+ " 891 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Dooley, Mr. Patrick | \n",
+ " male | \n",
+ " 32.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 370376 | \n",
+ " 7.7500 | \n",
+ " NaN | \n",
+ " Q | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
891 rows × 12 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass \\\n",
+ "0 1 0 3 \n",
+ "1 2 1 1 \n",
+ "2 3 1 3 \n",
+ "3 4 1 1 \n",
+ "4 5 0 3 \n",
+ ".. ... ... ... \n",
+ "886 887 0 2 \n",
+ "887 888 1 1 \n",
+ "888 889 0 3 \n",
+ "889 890 1 1 \n",
+ "890 891 0 3 \n",
+ "\n",
+ " Name Sex Age SibSp \\\n",
+ "0 Braund, Mr. Owen Harris male 22.0 1 \n",
+ "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
+ "2 Heikkinen, Miss. Laina female 26.0 0 \n",
+ "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
+ "4 Allen, Mr. William Henry male 35.0 0 \n",
+ ".. ... ... ... ... \n",
+ "886 Montvila, Rev. Juozas male 27.0 0 \n",
+ "887 Graham, Miss. Margaret Edith female 19.0 0 \n",
+ "888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n",
+ "889 Behr, Mr. Karl Howell male 26.0 0 \n",
+ "890 Dooley, Mr. Patrick male 32.0 0 \n",
+ "\n",
+ " Parch Ticket Fare Cabin Embarked \n",
+ "0 0 A/5 21171 7.2500 NaN S \n",
+ "1 0 PC 17599 71.2833 C85 C \n",
+ "2 0 STON/O2. 3101282 7.9250 NaN S \n",
+ "3 0 113803 53.1000 C123 S \n",
+ "4 0 373450 8.0500 NaN S \n",
+ ".. ... ... ... ... ... \n",
+ "886 0 211536 13.0000 NaN S \n",
+ "887 0 112053 30.0000 B42 S \n",
+ "888 2 W./C. 6607 23.4500 NaN S \n",
+ "889 0 111369 30.0000 C148 C \n",
+ "890 0 370376 7.7500 NaN Q \n",
+ "\n",
+ "[891 rows x 12 columns]"
+ ]
+ },
+ "execution_count": 92,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data = pd.read_csv('titanic.csv') \n",
+ "pass_data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 93,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Braund, Mr. Owen Harris | \n",
+ " male | \n",
+ " 22.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " A/5 21171 | \n",
+ " 7.2500 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
+ " female | \n",
+ " 38.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " PC 17599 | \n",
+ " 71.2833 | \n",
+ " C85 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " Heikkinen, Miss. Laina | \n",
+ " female | \n",
+ " 26.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " STON/O2. 3101282 | \n",
+ " 7.9250 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass \\\n",
+ "0 1 0 3 \n",
+ "1 2 1 1 \n",
+ "2 3 1 3 \n",
+ "\n",
+ " Name Sex Age SibSp \\\n",
+ "0 Braund, Mr. Owen Harris male 22.0 1 \n",
+ "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
+ "2 Heikkinen, Miss. Laina female 26.0 0 \n",
+ "\n",
+ " Parch Ticket Fare Cabin Embarked \n",
+ "0 0 A/5 21171 7.2500 NaN S \n",
+ "1 0 PC 17599 71.2833 C85 C \n",
+ "2 0 STON/O2. 3101282 7.9250 NaN S "
+ ]
+ },
+ "execution_count": 93,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.head(3) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',\n",
+ " 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 94,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.columns "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 95,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " Heikkinen, Miss. Laina | \n",
+ " female | \n",
+ " 26.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " STON/O2. 3101282 | \n",
+ " 7.925 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
+ " female | \n",
+ " 35.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 113803 | \n",
+ " 53.100 | \n",
+ " C123 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Allen, Mr. William Henry | \n",
+ " male | \n",
+ " 35.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 373450 | \n",
+ " 8.050 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass \\\n",
+ "2 3 1 3 \n",
+ "3 4 1 1 \n",
+ "4 5 0 3 \n",
+ "\n",
+ " Name Sex Age SibSp Parch \\\n",
+ "2 Heikkinen, Miss. Laina female 26.0 0 0 \n",
+ "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 \n",
+ "4 Allen, Mr. William Henry male 35.0 0 0 \n",
+ "\n",
+ " Ticket Fare Cabin Embarked \n",
+ "2 STON/O2. 3101282 7.925 NaN S \n",
+ "3 113803 53.100 C123 S \n",
+ "4 373450 8.050 NaN S "
+ ]
+ },
+ "execution_count": 95,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data[2:5]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 96,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " Heikkinen, Miss. Laina | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Allen, Mr. William Henry | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Survived Pclass Name\n",
+ "1 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th...\n",
+ "2 1 3 Heikkinen, Miss. Laina\n",
+ "3 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel)\n",
+ "4 0 3 Allen, Mr. William Henry"
+ ]
+ },
+ "execution_count": 96,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.iloc[1:5, 1:4] "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 97,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0 Braund, Mr. Owen Harris\n",
+ "1 Cumings, Mrs. John Bradley (Florence Briggs Th...\n",
+ "2 Heikkinen, Miss. Laina\n",
+ "3 Futrelle, Mrs. Jacques Heath (Lily May Peel)\n",
+ "4 Allen, Mr. William Henry\n",
+ "Name: Name, dtype: object"
+ ]
+ },
+ "execution_count": 97,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data['Name'].head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 98,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Parch | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " Braund, Mr. Owen Harris | \n",
+ " male | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
+ " female | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " Heikkinen, Miss. Laina | \n",
+ " female | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
+ " female | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " Allen, Mr. William Henry | \n",
+ " male | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Name Sex Parch\n",
+ "0 Braund, Mr. Owen Harris male 0\n",
+ "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 0\n",
+ "2 Heikkinen, Miss. Laina female 0\n",
+ "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 0\n",
+ "4 Allen, Mr. William Henry male 0"
+ ]
+ },
+ "execution_count": 98,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data[['Name', 'Sex', 'Parch']].head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 99,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
+ " female | \n",
+ " 38.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " PC 17599 | \n",
+ " 71.2833 | \n",
+ " C85 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " Heikkinen, Miss. Laina | \n",
+ " female | \n",
+ " 26.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " STON/O2. 3101282 | \n",
+ " 7.9250 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
+ " female | \n",
+ " 35.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 113803 | \n",
+ " 53.1000 | \n",
+ " C123 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " 9 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) | \n",
+ " female | \n",
+ " 27.0 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 347742 | \n",
+ " 11.1333 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " 10 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " Nasser, Mrs. Nicholas (Adele Achem) | \n",
+ " female | \n",
+ " 14.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 237736 | \n",
+ " 30.0708 | \n",
+ " NaN | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass \\\n",
+ "1 2 1 1 \n",
+ "2 3 1 3 \n",
+ "3 4 1 1 \n",
+ "8 9 1 3 \n",
+ "9 10 1 2 \n",
+ "\n",
+ " Name Sex Age SibSp \\\n",
+ "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
+ "2 Heikkinen, Miss. Laina female 26.0 0 \n",
+ "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
+ "8 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female 27.0 0 \n",
+ "9 Nasser, Mrs. Nicholas (Adele Achem) female 14.0 1 \n",
+ "\n",
+ " Parch Ticket Fare Cabin Embarked \n",
+ "1 0 PC 17599 71.2833 C85 C \n",
+ "2 0 STON/O2. 3101282 7.9250 NaN S \n",
+ "3 0 113803 53.1000 C123 S \n",
+ "8 2 347742 11.1333 NaN S \n",
+ "9 0 237736 30.0708 NaN C "
+ ]
+ },
+ "execution_count": 99,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data[pass_data['Sex'] == 'female'].head() "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 100,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Braund, Mr. Owen Harris | \n",
+ " male | \n",
+ " 22.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " A/5 21171 | \n",
+ " 7.2500 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Allen, Mr. William Henry | \n",
+ " male | \n",
+ " 35.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 373450 | \n",
+ " 8.0500 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " 6 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Moran, Mr. James | \n",
+ " male | \n",
+ " NaN | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 330877 | \n",
+ " 8.4583 | \n",
+ " NaN | \n",
+ " Q | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " 7 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " McCarthy, Mr. Timothy J | \n",
+ " male | \n",
+ " 54.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 17463 | \n",
+ " 51.8625 | \n",
+ " E46 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " 8 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Palsson, Master. Gosta Leonard | \n",
+ " male | \n",
+ " 2.0 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 349909 | \n",
+ " 21.0750 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass Name Sex Age \\\n",
+ "0 1 0 3 Braund, Mr. Owen Harris male 22.0 \n",
+ "4 5 0 3 Allen, Mr. William Henry male 35.0 \n",
+ "5 6 0 3 Moran, Mr. James male NaN \n",
+ "6 7 0 1 McCarthy, Mr. Timothy J male 54.0 \n",
+ "7 8 0 3 Palsson, Master. Gosta Leonard male 2.0 \n",
+ "\n",
+ " SibSp Parch Ticket Fare Cabin Embarked \n",
+ "0 1 0 A/5 21171 7.2500 NaN S \n",
+ "4 0 0 373450 8.0500 NaN S \n",
+ "5 0 0 330877 8.4583 NaN Q \n",
+ "6 0 0 17463 51.8625 E46 S \n",
+ "7 3 1 349909 21.0750 NaN S "
+ ]
+ },
+ "execution_count": 100,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data[(pass_data['Sex'] == 'female') & (pass_data['Age'] >= 60) | (pass_data['Sex'] == 'male')].head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 101,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(25, 12)"
+ ]
+ },
+ "execution_count": 101,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data[(pass_data.Sex == 'female') & (pass_data.Age > 18) & (pass_data.Age < 25) & (pass_data.SibSp == 0) & (pass_data.Parch == 0)].shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 102,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 102,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "pass_data.Age.hist(bins = 30) "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Редактирование DataFrame"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 103,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Braund, Mr. Owen Harris | \n",
+ " male | \n",
+ " 22.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " A/5 21171 | \n",
+ " 7.2500 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
+ " female | \n",
+ " 38.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " PC 17599 | \n",
+ " 71.2833 | \n",
+ " C85 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " Heikkinen, Miss. Laina | \n",
+ " female | \n",
+ " 26.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " STON/O2. 3101282 | \n",
+ " 7.9250 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
+ " female | \n",
+ " 35.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 113803 | \n",
+ " 53.1000 | \n",
+ " C123 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Allen, Mr. William Henry | \n",
+ " male | \n",
+ " 35.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 373450 | \n",
+ " 8.0500 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass \\\n",
+ "0 1 0 3 \n",
+ "1 2 1 1 \n",
+ "2 3 1 3 \n",
+ "3 4 1 1 \n",
+ "4 5 0 3 \n",
+ "\n",
+ " Name Sex Age SibSp \\\n",
+ "0 Braund, Mr. Owen Harris male 22.0 1 \n",
+ "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
+ "2 Heikkinen, Miss. Laina female 26.0 0 \n",
+ "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
+ "4 Allen, Mr. William Henry male 35.0 0 \n",
+ "\n",
+ " Parch Ticket Fare Cabin Embarked \n",
+ "0 0 A/5 21171 7.2500 NaN S \n",
+ "1 0 PC 17599 71.2833 C85 C \n",
+ "2 0 STON/O2. 3101282 7.9250 NaN S \n",
+ "3 0 113803 53.1000 C123 S \n",
+ "4 0 373450 8.0500 NaN S "
+ ]
+ },
+ "execution_count": 103,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.rename(columns={'Sex': 'Sex'}, inplace = True) \n",
+ "pass_data.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 104,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0 Braund\n",
+ "1 Cumings\n",
+ "2 Heikkinen\n",
+ "3 Futrelle\n",
+ "4 Allen\n",
+ "Name: Name, dtype: object"
+ ]
+ },
+ "execution_count": 104,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "def get_last_name(name):\n",
+ " return name.split(',')[0].strip()\n",
+ "last_names = pass_data['Name'].apply(get_last_name)\n",
+ "last_names.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 105,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ " Last_name | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Braund, Mr. Owen Harris | \n",
+ " male | \n",
+ " 22.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " A/5 21171 | \n",
+ " 7.2500 | \n",
+ " NaN | \n",
+ " S | \n",
+ " Braund | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
+ " female | \n",
+ " 38.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " PC 17599 | \n",
+ " 71.2833 | \n",
+ " C85 | \n",
+ " C | \n",
+ " Cumings | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " Heikkinen, Miss. Laina | \n",
+ " female | \n",
+ " 26.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " STON/O2. 3101282 | \n",
+ " 7.9250 | \n",
+ " NaN | \n",
+ " S | \n",
+ " Heikkinen | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
+ " female | \n",
+ " 35.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 113803 | \n",
+ " 53.1000 | \n",
+ " C123 | \n",
+ " S | \n",
+ " Futrelle | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Allen, Mr. William Henry | \n",
+ " male | \n",
+ " 35.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 373450 | \n",
+ " 8.0500 | \n",
+ " NaN | \n",
+ " S | \n",
+ " Allen | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass \\\n",
+ "0 1 0 3 \n",
+ "1 2 1 1 \n",
+ "2 3 1 3 \n",
+ "3 4 1 1 \n",
+ "4 5 0 3 \n",
+ "\n",
+ " Name Sex Age SibSp \\\n",
+ "0 Braund, Mr. Owen Harris male 22.0 1 \n",
+ "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
+ "2 Heikkinen, Miss. Laina female 26.0 0 \n",
+ "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
+ "4 Allen, Mr. William Henry male 35.0 0 \n",
+ "\n",
+ " Parch Ticket Fare Cabin Embarked Last_name \n",
+ "0 0 A/5 21171 7.2500 NaN S Braund \n",
+ "1 0 PC 17599 71.2833 C85 C Cumings \n",
+ "2 0 STON/O2. 3101282 7.9250 NaN S Heikkinen \n",
+ "3 0 113803 53.1000 C123 S Futrelle \n",
+ "4 0 373450 8.0500 NaN S Allen "
+ ]
+ },
+ "execution_count": 105,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data['Last_name'] = last_names \n",
+ "pass_data.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 106,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Braund, Mr. Owen Harris | \n",
+ " male | \n",
+ " 22.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " A/5 21171 | \n",
+ " 7.2500 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
+ " female | \n",
+ " 38.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " PC 17599 | \n",
+ " 71.2833 | \n",
+ " C85 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " Heikkinen, Miss. Laina | \n",
+ " female | \n",
+ " 26.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " STON/O2. 3101282 | \n",
+ " 7.9250 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
+ " female | \n",
+ " 35.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 113803 | \n",
+ " 53.1000 | \n",
+ " C123 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " Allen, Mr. William Henry | \n",
+ " male | \n",
+ " 35.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 373450 | \n",
+ " 8.0500 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass \\\n",
+ "0 1 0 3 \n",
+ "1 2 1 1 \n",
+ "2 3 1 3 \n",
+ "3 4 1 1 \n",
+ "4 5 0 3 \n",
+ "\n",
+ " Name Sex Age SibSp \\\n",
+ "0 Braund, Mr. Owen Harris male 22.0 1 \n",
+ "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
+ "2 Heikkinen, Miss. Laina female 26.0 0 \n",
+ "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
+ "4 Allen, Mr. William Henry male 35.0 0 \n",
+ "\n",
+ " Parch Ticket Fare Cabin Embarked \n",
+ "0 0 A/5 21171 7.2500 NaN S \n",
+ "1 0 PC 17599 71.2833 C85 C \n",
+ "2 0 STON/O2. 3101282 7.9250 NaN S \n",
+ "3 0 113803 53.1000 C123 S \n",
+ "4 0 373450 8.0500 NaN S "
+ ]
+ },
+ "execution_count": 106,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.drop('Last_name', axis = 1, inplace=True) \n",
+ "pass_data.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 107,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0 True\n",
+ "1 False\n",
+ "2 True\n",
+ "3 False\n",
+ "4 True\n",
+ "Name: Cabin, dtype: bool"
+ ]
+ },
+ "execution_count": 107,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data['Cabin'].isnull().head() "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 108,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
+ " female | \n",
+ " 38.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " PC 17599 | \n",
+ " 71.2833 | \n",
+ " C85 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
+ " female | \n",
+ " 35.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 113803 | \n",
+ " 53.1000 | \n",
+ " C123 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " 7 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " McCarthy, Mr. Timothy J | \n",
+ " male | \n",
+ " 54.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 17463 | \n",
+ " 51.8625 | \n",
+ " E46 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " 11 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " Sandstrom, Miss. Marguerite Rut | \n",
+ " female | \n",
+ " 4.0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " PP 9549 | \n",
+ " 16.7000 | \n",
+ " G6 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " 12 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Bonnell, Miss. Elizabeth | \n",
+ " female | \n",
+ " 58.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 113783 | \n",
+ " 26.5500 | \n",
+ " C103 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass \\\n",
+ "1 2 1 1 \n",
+ "3 4 1 1 \n",
+ "6 7 0 1 \n",
+ "10 11 1 3 \n",
+ "11 12 1 1 \n",
+ "\n",
+ " Name Sex Age SibSp \\\n",
+ "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
+ "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
+ "6 McCarthy, Mr. Timothy J male 54.0 0 \n",
+ "10 Sandstrom, Miss. Marguerite Rut female 4.0 1 \n",
+ "11 Bonnell, Miss. Elizabeth female 58.0 0 \n",
+ "\n",
+ " Parch Ticket Fare Cabin Embarked \n",
+ "1 0 PC 17599 71.2833 C85 C \n",
+ "3 0 113803 53.1000 C123 S \n",
+ "6 0 17463 51.8625 E46 S \n",
+ "10 1 PP 9549 16.7000 G6 S \n",
+ "11 0 113783 26.5500 C103 S "
+ ]
+ },
+ "execution_count": 108,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data[pass_data['Cabin'].notnull()].head() "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 109,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 263 | \n",
+ " 264 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " Harrison, Mr. William | \n",
+ " male | \n",
+ " 40.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 112059 | \n",
+ " 0.0 | \n",
+ " B94 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 633 | \n",
+ " 634 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " Parr, Mr. William Henry Marsh | \n",
+ " male | \n",
+ " NaN | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 112052 | \n",
+ " 0.0 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 806 | \n",
+ " 807 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " Andrews, Mr. Thomas Jr | \n",
+ " male | \n",
+ " 39.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 112050 | \n",
+ " 0.0 | \n",
+ " A36 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 815 | \n",
+ " 816 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " Fry, Mr. Richard | \n",
+ " male | \n",
+ " NaN | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 112058 | \n",
+ " 0.0 | \n",
+ " B102 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 822 | \n",
+ " 823 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " Reuchlin, Jonkheer. John George | \n",
+ " male | \n",
+ " 38.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 19972 | \n",
+ " 0.0 | \n",
+ " NaN | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass Name Sex \\\n",
+ "263 264 0 1 Harrison, Mr. William male \n",
+ "633 634 0 1 Parr, Mr. William Henry Marsh male \n",
+ "806 807 0 1 Andrews, Mr. Thomas Jr male \n",
+ "815 816 0 1 Fry, Mr. Richard male \n",
+ "822 823 0 1 Reuchlin, Jonkheer. John George male \n",
+ "\n",
+ " Age SibSp Parch Ticket Fare Cabin Embarked \n",
+ "263 40.0 0 0 112059 0.0 B94 S \n",
+ "633 NaN 0 0 112052 0.0 NaN S \n",
+ "806 39.0 0 0 112050 0.0 A36 S \n",
+ "815 NaN 0 0 112058 0.0 B102 S \n",
+ "822 38.0 0 0 19972 0.0 NaN S "
+ ]
+ },
+ "execution_count": 109,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.sort_values(by=['Pclass', 'Fare'], ascending = True).head() "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 110,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PassengerId | \n",
+ " Survived | \n",
+ " Pclass | \n",
+ " Name | \n",
+ " Sex | \n",
+ " Age | \n",
+ " SibSp | \n",
+ " Parch | \n",
+ " Ticket | \n",
+ " Fare | \n",
+ " Cabin | \n",
+ " Embarked | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 258 | \n",
+ " 259 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Ward, Miss. Anna | \n",
+ " female | \n",
+ " 35.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " PC 17755 | \n",
+ " 512.3292 | \n",
+ " NaN | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 679 | \n",
+ " 680 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Cardeza, Mr. Thomas Drake Martinez | \n",
+ " male | \n",
+ " 36.0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " PC 17755 | \n",
+ " 512.3292 | \n",
+ " B51 B53 B55 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 737 | \n",
+ " 738 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Lesurer, Mr. Gustave J | \n",
+ " male | \n",
+ " 35.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " PC 17755 | \n",
+ " 512.3292 | \n",
+ " B101 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " 28 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " Fortune, Mr. Charles Alexander | \n",
+ " male | \n",
+ " 19.0 | \n",
+ " 3 | \n",
+ " 2 | \n",
+ " 19950 | \n",
+ " 263.0000 | \n",
+ " C23 C25 C27 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ " | 88 | \n",
+ " 89 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " Fortune, Miss. Mabel Helen | \n",
+ " female | \n",
+ " 23.0 | \n",
+ " 3 | \n",
+ " 2 | \n",
+ " 19950 | \n",
+ " 263.0000 | \n",
+ " C23 C25 C27 | \n",
+ " S | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PassengerId Survived Pclass Name \\\n",
+ "258 259 1 1 Ward, Miss. Anna \n",
+ "679 680 1 1 Cardeza, Mr. Thomas Drake Martinez \n",
+ "737 738 1 1 Lesurer, Mr. Gustave J \n",
+ "27 28 0 1 Fortune, Mr. Charles Alexander \n",
+ "88 89 1 1 Fortune, Miss. Mabel Helen \n",
+ "\n",
+ " Sex Age SibSp Parch Ticket Fare Cabin Embarked \n",
+ "258 female 35.0 0 0 PC 17755 512.3292 NaN C \n",
+ "679 male 36.0 0 1 PC 17755 512.3292 B51 B53 B55 C \n",
+ "737 male 35.0 0 0 PC 17755 512.3292 B101 C \n",
+ "27 male 19.0 3 2 19950 263.0000 C23 C25 C27 S \n",
+ "88 female 23.0 3 2 19950 263.0000 C23 C25 C27 S "
+ ]
+ },
+ "execution_count": 110,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.sort_values(by=['Pclass', 'Fare'], ascending = [True, False]).head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Группировка данных"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 111,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 111,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.groupby('Sex') "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 112,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Sex Pclass\n",
+ "female 3 144\n",
+ " 1 94\n",
+ " 2 76\n",
+ "male 3 347\n",
+ " 1 122\n",
+ " 2 108\n",
+ "Name: Pclass, dtype: int64"
+ ]
+ },
+ "execution_count": 112,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.groupby('Sex')['Pclass'].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 113,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " count | \n",
+ " mean | \n",
+ " std | \n",
+ " min | \n",
+ " 25% | \n",
+ " 50% | \n",
+ " 75% | \n",
+ " max | \n",
+ "
\n",
+ " \n",
+ " | Pclass | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 216.0 | \n",
+ " 84.154687 | \n",
+ " 78.380373 | \n",
+ " 0.0 | \n",
+ " 30.92395 | \n",
+ " 60.2875 | \n",
+ " 93.5 | \n",
+ " 512.3292 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 184.0 | \n",
+ " 20.662183 | \n",
+ " 13.417399 | \n",
+ " 0.0 | \n",
+ " 13.00000 | \n",
+ " 14.2500 | \n",
+ " 26.0 | \n",
+ " 73.5000 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 491.0 | \n",
+ " 13.675550 | \n",
+ " 11.778142 | \n",
+ " 0.0 | \n",
+ " 7.75000 | \n",
+ " 8.0500 | \n",
+ " 15.5 | \n",
+ " 69.5500 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " count mean std min 25% 50% 75% max\n",
+ "Pclass \n",
+ "1 216.0 84.154687 78.380373 0.0 30.92395 60.2875 93.5 512.3292\n",
+ "2 184.0 20.662183 13.417399 0.0 13.00000 14.2500 26.0 73.5000\n",
+ "3 491.0 13.675550 11.778142 0.0 7.75000 8.0500 15.5 69.5500"
+ ]
+ },
+ "execution_count": 113,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.groupby('Pclass')['Fare'].describe()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 114,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Sex\n",
+ "female 27.915709\n",
+ "male 30.726645\n",
+ "Name: Age, dtype: float64"
+ ]
+ },
+ "execution_count": 114,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.groupby('Sex')['Age'].mean() "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 115,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Sex\n",
+ "female 0.742038\n",
+ "male 0.188908\n",
+ "Name: Survived, dtype: float64"
+ ]
+ },
+ "execution_count": 115,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.groupby('Sex')['Survived'].mean()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 116,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Pclass\n",
+ "1 0.629630\n",
+ "2 0.472826\n",
+ "3 0.242363\n",
+ "Name: Survived, dtype: float64"
+ ]
+ },
+ "execution_count": 116,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.groupby('Pclass')['Survived'].mean()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 117,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Sex | \n",
+ " Survived | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " female | \n",
+ " 0.742038 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " male | \n",
+ " 0.188908 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Sex Survived\n",
+ "0 female 0.742038\n",
+ "1 male 0.188908"
+ ]
+ },
+ "execution_count": 117,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pass_data.groupby('Sex', as_index = False)['Survived'].mean() "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "collapsed_sections": [],
+ "name": "Машинное обучение л.р. 1.ipynb",
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "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.9.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
From 05b02e2d94a44bf1e9c1c25abd07ccc2bdb1013a Mon Sep 17 00:00:00 2001
From: andvagapov <86461996+andvagapov@users.noreply.github.com>
Date: Fri, 25 Jun 2021 09:44:23 +0300
Subject: [PATCH 2/4] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?=
=?UTF-8?q?=D0=BD=D0=B0=202=20=D0=BB=D0=B0=D0=B1=D0=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Lab2 (6).ipynb" | 3412 +++++++++++++++++
1 file changed, 3412 insertions(+)
create mode 100644 "ml/lb2/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/Lab2 (6).ipynb"
diff --git "a/ml/lb2/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/Lab2 (6).ipynb" "b/ml/lb2/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/Lab2 (6).ipynb"
new file mode 100644
index 0000000..415b9b1
--- /dev/null
+++ "b/ml/lb2/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/Lab2 (6).ipynb"
@@ -0,0 +1,3412 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "mobile-biology",
+ "metadata": {},
+ "source": [
+ "# Лабораторная работа №2\n",
+ "\n",
+ "## Вариант №3\n",
+ "\n",
+ "### Выполнил студент группы 19-ИВТ-3 Вагапов Андрей\n",
+ "\n",
+ "Задание: Вторичный рынок машин\n",
+ "\n",
+ "1. Удалите столбцы, ценность которых для оценки стоимости машины низка.\n",
+ "2. Удалите повторяющиеся строки, строки содержащие пропуски в данных. Выведите размер набора данных до и после удаления.\n",
+ "3. Удалите данные в строках, выходящие за некоторые пределы (год регистрации, цена, мощность двигателя). Выведите размер набора данных до и после удаления. Для оценки диапазонов значений признаков используйте BoxPlot.\n",
+ "4. Заполнить пропущенные данные в строковых полях.\n",
+ "5. Постройте гистограмму по маркам автомобилей, типам кузова и используемому топливу.\n",
+ "6. Добавьте в данные новый признак, который представляет собой длину названия автомобиля.\n",
+ "7. Постройте карту корреляций между признаками. Выведите также числовые значения признаков.\n",
+ "8. Определите коэффициент корреляции Пирсона и Спирмена между стоимостью автомобиля и типом кузова. Оцените значение p-value. Постройте плотность распределения признаков.\n",
+ "9. Добавьте в набор данных признак, являющийся суммой двух других признаков.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "wrong-edition",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "from scipy import stats\n",
+ "%matplotlib inline\n",
+ "cars_df = pd.read_csv('autos.csv', encoding='iso-8859-1')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "divine-suggestion",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " dateCrawled | \n",
+ " name | \n",
+ " seller | \n",
+ " offerType | \n",
+ " price | \n",
+ " abtest | \n",
+ " vehicleType | \n",
+ " yearOfRegistration | \n",
+ " gearbox | \n",
+ " powerPS | \n",
+ " model | \n",
+ " kilometer | \n",
+ " monthOfRegistration | \n",
+ " fuelType | \n",
+ " brand | \n",
+ " notRepairedDamage | \n",
+ " dateCreated | \n",
+ " nrOfPictures | \n",
+ " postalCode | \n",
+ " lastSeen | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 2016-03-24 11:52:17 | \n",
+ " Golf_3_1.6 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 480 | \n",
+ " test | \n",
+ " NaN | \n",
+ " 1993 | \n",
+ " manuell | \n",
+ " 0 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 0 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " NaN | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 70435 | \n",
+ " 2016-04-07 03:16:57 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2016-03-24 10:58:45 | \n",
+ " A5_Sportback_2.7_Tdi | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 18300 | \n",
+ " test | \n",
+ " coupe | \n",
+ " 2011 | \n",
+ " manuell | \n",
+ " 190 | \n",
+ " NaN | \n",
+ " 125000 | \n",
+ " 5 | \n",
+ " diesel | \n",
+ " audi | \n",
+ " ja | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 66954 | \n",
+ " 2016-04-07 01:46:50 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2016-03-14 12:52:21 | \n",
+ " Jeep_Grand_Cherokee_\"Overland\" | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 9800 | \n",
+ " test | \n",
+ " suv | \n",
+ " 2004 | \n",
+ " automatik | \n",
+ " 163 | \n",
+ " grand | \n",
+ " 125000 | \n",
+ " 8 | \n",
+ " diesel | \n",
+ " jeep | \n",
+ " NaN | \n",
+ " 2016-03-14 00:00:00 | \n",
+ " 0 | \n",
+ " 90480 | \n",
+ " 2016-04-05 12:47:46 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2016-03-17 16:54:04 | \n",
+ " GOLF_4_1_4__3TÜRER | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1500 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2001 | \n",
+ " manuell | \n",
+ " 75 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 6 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-17 00:00:00 | \n",
+ " 0 | \n",
+ " 91074 | \n",
+ " 2016-03-17 17:40:17 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2016-03-31 17:25:20 | \n",
+ " Skoda_Fabia_1.4_TDI_PD_Classic | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3600 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2008 | \n",
+ " manuell | \n",
+ " 69 | \n",
+ " fabia | \n",
+ " 90000 | \n",
+ " 7 | \n",
+ " diesel | \n",
+ " skoda | \n",
+ " nein | \n",
+ " 2016-03-31 00:00:00 | \n",
+ " 0 | \n",
+ " 60437 | \n",
+ " 2016-04-06 10:17:21 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " dateCrawled name seller offerType \\\n",
+ "0 2016-03-24 11:52:17 Golf_3_1.6 privat Angebot \n",
+ "1 2016-03-24 10:58:45 A5_Sportback_2.7_Tdi privat Angebot \n",
+ "2 2016-03-14 12:52:21 Jeep_Grand_Cherokee_\"Overland\" privat Angebot \n",
+ "3 2016-03-17 16:54:04 GOLF_4_1_4__3TÜRER privat Angebot \n",
+ "4 2016-03-31 17:25:20 Skoda_Fabia_1.4_TDI_PD_Classic privat Angebot \n",
+ "\n",
+ " price abtest vehicleType yearOfRegistration gearbox powerPS model \\\n",
+ "0 480 test NaN 1993 manuell 0 golf \n",
+ "1 18300 test coupe 2011 manuell 190 NaN \n",
+ "2 9800 test suv 2004 automatik 163 grand \n",
+ "3 1500 test kleinwagen 2001 manuell 75 golf \n",
+ "4 3600 test kleinwagen 2008 manuell 69 fabia \n",
+ "\n",
+ " kilometer monthOfRegistration fuelType brand notRepairedDamage \\\n",
+ "0 150000 0 benzin volkswagen NaN \n",
+ "1 125000 5 diesel audi ja \n",
+ "2 125000 8 diesel jeep NaN \n",
+ "3 150000 6 benzin volkswagen nein \n",
+ "4 90000 7 diesel skoda nein \n",
+ "\n",
+ " dateCreated nrOfPictures postalCode lastSeen \n",
+ "0 2016-03-24 00:00:00 0 70435 2016-04-07 03:16:57 \n",
+ "1 2016-03-24 00:00:00 0 66954 2016-04-07 01:46:50 \n",
+ "2 2016-03-14 00:00:00 0 90480 2016-04-05 12:47:46 \n",
+ "3 2016-03-17 00:00:00 0 91074 2016-03-17 17:40:17 \n",
+ "4 2016-03-31 00:00:00 0 60437 2016-04-06 10:17:21 "
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "cars_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "guilty-functionality",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " dateCrawled | \n",
+ " name | \n",
+ " seller | \n",
+ " offerType | \n",
+ " price | \n",
+ " abtest | \n",
+ " vehicleType | \n",
+ " yearOfRegistration | \n",
+ " gearbox | \n",
+ " powerPS | \n",
+ " model | \n",
+ " kilometer | \n",
+ " monthOfRegistration | \n",
+ " fuelType | \n",
+ " brand | \n",
+ " notRepairedDamage | \n",
+ " dateCreated | \n",
+ " nrOfPictures | \n",
+ " postalCode | \n",
+ " lastSeen | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 371523 | \n",
+ " 2016-03-14 17:48:27 | \n",
+ " Suche_t4___vito_ab_6_sitze | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 2200 | \n",
+ " test | \n",
+ " NaN | \n",
+ " 2005 | \n",
+ " NaN | \n",
+ " 0 | \n",
+ " NaN | \n",
+ " 20000 | \n",
+ " 1 | \n",
+ " NaN | \n",
+ " sonstige_autos | \n",
+ " NaN | \n",
+ " 2016-03-14 00:00:00 | \n",
+ " 0 | \n",
+ " 39576 | \n",
+ " 2016-04-06 00:46:52 | \n",
+ "
\n",
+ " \n",
+ " | 371524 | \n",
+ " 2016-03-05 19:56:21 | \n",
+ " Smart_smart_leistungssteigerung_100ps | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1199 | \n",
+ " test | \n",
+ " cabrio | \n",
+ " 2000 | \n",
+ " automatik | \n",
+ " 101 | \n",
+ " fortwo | \n",
+ " 125000 | \n",
+ " 3 | \n",
+ " benzin | \n",
+ " smart | \n",
+ " nein | \n",
+ " 2016-03-05 00:00:00 | \n",
+ " 0 | \n",
+ " 26135 | \n",
+ " 2016-03-11 18:17:12 | \n",
+ "
\n",
+ " \n",
+ " | 371525 | \n",
+ " 2016-03-19 18:57:12 | \n",
+ " Volkswagen_Multivan_T4_TDI_7DC_UY2 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 9200 | \n",
+ " test | \n",
+ " bus | \n",
+ " 1996 | \n",
+ " manuell | \n",
+ " 102 | \n",
+ " transporter | \n",
+ " 150000 | \n",
+ " 3 | \n",
+ " diesel | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-19 00:00:00 | \n",
+ " 0 | \n",
+ " 87439 | \n",
+ " 2016-04-07 07:15:26 | \n",
+ "
\n",
+ " \n",
+ " | 371526 | \n",
+ " 2016-03-20 19:41:08 | \n",
+ " VW_Golf_Kombi_1_9l_TDI | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3400 | \n",
+ " test | \n",
+ " kombi | \n",
+ " 2002 | \n",
+ " manuell | \n",
+ " 100 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 6 | \n",
+ " diesel | \n",
+ " volkswagen | \n",
+ " NaN | \n",
+ " 2016-03-20 00:00:00 | \n",
+ " 0 | \n",
+ " 40764 | \n",
+ " 2016-03-24 12:45:21 | \n",
+ "
\n",
+ " \n",
+ " | 371527 | \n",
+ " 2016-03-07 19:39:19 | \n",
+ " BMW_M135i_vollausgestattet_NP_52.720____Euro | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 28990 | \n",
+ " control | \n",
+ " limousine | \n",
+ " 2013 | \n",
+ " manuell | \n",
+ " 320 | \n",
+ " m_reihe | \n",
+ " 50000 | \n",
+ " 8 | \n",
+ " benzin | \n",
+ " bmw | \n",
+ " nein | \n",
+ " 2016-03-07 00:00:00 | \n",
+ " 0 | \n",
+ " 73326 | \n",
+ " 2016-03-22 03:17:10 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " dateCrawled name \\\n",
+ "371523 2016-03-14 17:48:27 Suche_t4___vito_ab_6_sitze \n",
+ "371524 2016-03-05 19:56:21 Smart_smart_leistungssteigerung_100ps \n",
+ "371525 2016-03-19 18:57:12 Volkswagen_Multivan_T4_TDI_7DC_UY2 \n",
+ "371526 2016-03-20 19:41:08 VW_Golf_Kombi_1_9l_TDI \n",
+ "371527 2016-03-07 19:39:19 BMW_M135i_vollausgestattet_NP_52.720____Euro \n",
+ "\n",
+ " seller offerType price abtest vehicleType yearOfRegistration \\\n",
+ "371523 privat Angebot 2200 test NaN 2005 \n",
+ "371524 privat Angebot 1199 test cabrio 2000 \n",
+ "371525 privat Angebot 9200 test bus 1996 \n",
+ "371526 privat Angebot 3400 test kombi 2002 \n",
+ "371527 privat Angebot 28990 control limousine 2013 \n",
+ "\n",
+ " gearbox powerPS model kilometer monthOfRegistration \\\n",
+ "371523 NaN 0 NaN 20000 1 \n",
+ "371524 automatik 101 fortwo 125000 3 \n",
+ "371525 manuell 102 transporter 150000 3 \n",
+ "371526 manuell 100 golf 150000 6 \n",
+ "371527 manuell 320 m_reihe 50000 8 \n",
+ "\n",
+ " fuelType brand notRepairedDamage dateCreated \\\n",
+ "371523 NaN sonstige_autos NaN 2016-03-14 00:00:00 \n",
+ "371524 benzin smart nein 2016-03-05 00:00:00 \n",
+ "371525 diesel volkswagen nein 2016-03-19 00:00:00 \n",
+ "371526 diesel volkswagen NaN 2016-03-20 00:00:00 \n",
+ "371527 benzin bmw nein 2016-03-07 00:00:00 \n",
+ "\n",
+ " nrOfPictures postalCode lastSeen \n",
+ "371523 0 39576 2016-04-06 00:46:52 \n",
+ "371524 0 26135 2016-03-11 18:17:12 \n",
+ "371525 0 87439 2016-04-07 07:15:26 \n",
+ "371526 0 40764 2016-03-24 12:45:21 \n",
+ "371527 0 73326 2016-03-22 03:17:10 "
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "cars_df.tail()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "detected-space",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "RangeIndex: 371528 entries, 0 to 371527\n",
+ "Data columns (total 20 columns):\n",
+ " # Column Non-Null Count Dtype \n",
+ "--- ------ -------------- ----- \n",
+ " 0 dateCrawled 371528 non-null object\n",
+ " 1 name 371528 non-null object\n",
+ " 2 seller 371528 non-null object\n",
+ " 3 offerType 371528 non-null object\n",
+ " 4 price 371528 non-null int64 \n",
+ " 5 abtest 371528 non-null object\n",
+ " 6 vehicleType 333659 non-null object\n",
+ " 7 yearOfRegistration 371528 non-null int64 \n",
+ " 8 gearbox 351319 non-null object\n",
+ " 9 powerPS 371528 non-null int64 \n",
+ " 10 model 351044 non-null object\n",
+ " 11 kilometer 371528 non-null int64 \n",
+ " 12 monthOfRegistration 371528 non-null int64 \n",
+ " 13 fuelType 338142 non-null object\n",
+ " 14 brand 371528 non-null object\n",
+ " 15 notRepairedDamage 299468 non-null object\n",
+ " 16 dateCreated 371528 non-null object\n",
+ " 17 nrOfPictures 371528 non-null int64 \n",
+ " 18 postalCode 371528 non-null int64 \n",
+ " 19 lastSeen 371528 non-null object\n",
+ "dtypes: int64(7), object(13)\n",
+ "memory usage: 56.7+ MB\n"
+ ]
+ }
+ ],
+ "source": [
+ "cars_df.info()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "divided-corruption",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " price | \n",
+ " yearOfRegistration | \n",
+ " powerPS | \n",
+ " kilometer | \n",
+ " monthOfRegistration | \n",
+ " nrOfPictures | \n",
+ " postalCode | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | count | \n",
+ " 3.715280e+05 | \n",
+ " 371528.000000 | \n",
+ " 371528.000000 | \n",
+ " 371528.000000 | \n",
+ " 371528.000000 | \n",
+ " 371528.0 | \n",
+ " 371528.00000 | \n",
+ "
\n",
+ " \n",
+ " | mean | \n",
+ " 1.729514e+04 | \n",
+ " 2004.577997 | \n",
+ " 115.549477 | \n",
+ " 125618.688228 | \n",
+ " 5.734445 | \n",
+ " 0.0 | \n",
+ " 50820.66764 | \n",
+ "
\n",
+ " \n",
+ " | std | \n",
+ " 3.587954e+06 | \n",
+ " 92.866598 | \n",
+ " 192.139578 | \n",
+ " 40112.337051 | \n",
+ " 3.712412 | \n",
+ " 0.0 | \n",
+ " 25799.08247 | \n",
+ "
\n",
+ " \n",
+ " | min | \n",
+ " 0.000000e+00 | \n",
+ " 1000.000000 | \n",
+ " 0.000000 | \n",
+ " 5000.000000 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 1067.00000 | \n",
+ "
\n",
+ " \n",
+ " | 25% | \n",
+ " 1.150000e+03 | \n",
+ " 1999.000000 | \n",
+ " 70.000000 | \n",
+ " 125000.000000 | \n",
+ " 3.000000 | \n",
+ " 0.0 | \n",
+ " 30459.00000 | \n",
+ "
\n",
+ " \n",
+ " | 50% | \n",
+ " 2.950000e+03 | \n",
+ " 2003.000000 | \n",
+ " 105.000000 | \n",
+ " 150000.000000 | \n",
+ " 6.000000 | \n",
+ " 0.0 | \n",
+ " 49610.00000 | \n",
+ "
\n",
+ " \n",
+ " | 75% | \n",
+ " 7.200000e+03 | \n",
+ " 2008.000000 | \n",
+ " 150.000000 | \n",
+ " 150000.000000 | \n",
+ " 9.000000 | \n",
+ " 0.0 | \n",
+ " 71546.00000 | \n",
+ "
\n",
+ " \n",
+ " | max | \n",
+ " 2.147484e+09 | \n",
+ " 9999.000000 | \n",
+ " 20000.000000 | \n",
+ " 150000.000000 | \n",
+ " 12.000000 | \n",
+ " 0.0 | \n",
+ " 99998.00000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " price yearOfRegistration powerPS kilometer \\\n",
+ "count 3.715280e+05 371528.000000 371528.000000 371528.000000 \n",
+ "mean 1.729514e+04 2004.577997 115.549477 125618.688228 \n",
+ "std 3.587954e+06 92.866598 192.139578 40112.337051 \n",
+ "min 0.000000e+00 1000.000000 0.000000 5000.000000 \n",
+ "25% 1.150000e+03 1999.000000 70.000000 125000.000000 \n",
+ "50% 2.950000e+03 2003.000000 105.000000 150000.000000 \n",
+ "75% 7.200000e+03 2008.000000 150.000000 150000.000000 \n",
+ "max 2.147484e+09 9999.000000 20000.000000 150000.000000 \n",
+ "\n",
+ " monthOfRegistration nrOfPictures postalCode \n",
+ "count 371528.000000 371528.0 371528.00000 \n",
+ "mean 5.734445 0.0 50820.66764 \n",
+ "std 3.712412 0.0 25799.08247 \n",
+ "min 0.000000 0.0 1067.00000 \n",
+ "25% 3.000000 0.0 30459.00000 \n",
+ "50% 6.000000 0.0 49610.00000 \n",
+ "75% 9.000000 0.0 71546.00000 \n",
+ "max 12.000000 0.0 99998.00000 "
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "cars_df.describe()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "sharp-thumbnail",
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " dateCrawled | \n",
+ " name | \n",
+ " seller | \n",
+ " offerType | \n",
+ " price | \n",
+ " abtest | \n",
+ " vehicleType | \n",
+ " yearOfRegistration | \n",
+ " gearbox | \n",
+ " powerPS | \n",
+ " model | \n",
+ " kilometer | \n",
+ " monthOfRegistration | \n",
+ " fuelType | \n",
+ " brand | \n",
+ " notRepairedDamage | \n",
+ " dateCreated | \n",
+ " nrOfPictures | \n",
+ " postalCode | \n",
+ " lastSeen | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 3 | \n",
+ " 2016-03-17 16:54:04 | \n",
+ " GOLF_4_1_4__3TÜRER | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1500 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2001 | \n",
+ " manuell | \n",
+ " 75 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 6 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-17 00:00:00 | \n",
+ " 0 | \n",
+ " 91074 | \n",
+ " 2016-03-17 17:40:17 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2016-03-31 17:25:20 | \n",
+ " Skoda_Fabia_1.4_TDI_PD_Classic | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3600 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2008 | \n",
+ " manuell | \n",
+ " 69 | \n",
+ " fabia | \n",
+ " 90000 | \n",
+ " 7 | \n",
+ " diesel | \n",
+ " skoda | \n",
+ " nein | \n",
+ " 2016-03-31 00:00:00 | \n",
+ " 0 | \n",
+ " 60437 | \n",
+ " 2016-04-06 10:17:21 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " 2016-04-04 17:36:23 | \n",
+ " BMW_316i___e36_Limousine___Bastlerfahrzeug__Ex... | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 650 | \n",
+ " test | \n",
+ " limousine | \n",
+ " 1995 | \n",
+ " manuell | \n",
+ " 102 | \n",
+ " 3er | \n",
+ " 150000 | \n",
+ " 10 | \n",
+ " benzin | \n",
+ " bmw | \n",
+ " ja | \n",
+ " 2016-04-04 00:00:00 | \n",
+ " 0 | \n",
+ " 33775 | \n",
+ " 2016-04-06 19:17:07 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " 2016-04-01 20:48:51 | \n",
+ " Peugeot_206_CC_110_Platinum | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 2200 | \n",
+ " test | \n",
+ " cabrio | \n",
+ " 2004 | \n",
+ " manuell | \n",
+ " 109 | \n",
+ " 2_reihe | \n",
+ " 150000 | \n",
+ " 8 | \n",
+ " benzin | \n",
+ " peugeot | \n",
+ " nein | \n",
+ " 2016-04-01 00:00:00 | \n",
+ " 0 | \n",
+ " 67112 | \n",
+ " 2016-04-05 18:18:39 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " 2016-03-21 18:54:38 | \n",
+ " VW_Derby_Bj_80__Scheunenfund | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 0 | \n",
+ " test | \n",
+ " limousine | \n",
+ " 1980 | \n",
+ " manuell | \n",
+ " 50 | \n",
+ " andere | \n",
+ " 40000 | \n",
+ " 7 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-21 00:00:00 | \n",
+ " 0 | \n",
+ " 19348 | \n",
+ " 2016-03-25 16:47:58 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 371520 | \n",
+ " 2016-03-19 19:53:49 | \n",
+ " turbo_defekt | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3200 | \n",
+ " control | \n",
+ " limousine | \n",
+ " 2004 | \n",
+ " manuell | \n",
+ " 225 | \n",
+ " leon | \n",
+ " 150000 | \n",
+ " 5 | \n",
+ " benzin | \n",
+ " seat | \n",
+ " ja | \n",
+ " 2016-03-19 00:00:00 | \n",
+ " 0 | \n",
+ " 96465 | \n",
+ " 2016-03-19 20:44:43 | \n",
+ "
\n",
+ " \n",
+ " | 371521 | \n",
+ " 2016-03-27 20:36:20 | \n",
+ " Opel_Zafira_1.6_Elegance_TÜV_12/16 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1150 | \n",
+ " control | \n",
+ " bus | \n",
+ " 2000 | \n",
+ " manuell | \n",
+ " 0 | \n",
+ " zafira | \n",
+ " 150000 | \n",
+ " 3 | \n",
+ " benzin | \n",
+ " opel | \n",
+ " nein | \n",
+ " 2016-03-27 00:00:00 | \n",
+ " 0 | \n",
+ " 26624 | \n",
+ " 2016-03-29 10:17:23 | \n",
+ "
\n",
+ " \n",
+ " | 371524 | \n",
+ " 2016-03-05 19:56:21 | \n",
+ " Smart_smart_leistungssteigerung_100ps | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1199 | \n",
+ " test | \n",
+ " cabrio | \n",
+ " 2000 | \n",
+ " automatik | \n",
+ " 101 | \n",
+ " fortwo | \n",
+ " 125000 | \n",
+ " 3 | \n",
+ " benzin | \n",
+ " smart | \n",
+ " nein | \n",
+ " 2016-03-05 00:00:00 | \n",
+ " 0 | \n",
+ " 26135 | \n",
+ " 2016-03-11 18:17:12 | \n",
+ "
\n",
+ " \n",
+ " | 371525 | \n",
+ " 2016-03-19 18:57:12 | \n",
+ " Volkswagen_Multivan_T4_TDI_7DC_UY2 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 9200 | \n",
+ " test | \n",
+ " bus | \n",
+ " 1996 | \n",
+ " manuell | \n",
+ " 102 | \n",
+ " transporter | \n",
+ " 150000 | \n",
+ " 3 | \n",
+ " diesel | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-19 00:00:00 | \n",
+ " 0 | \n",
+ " 87439 | \n",
+ " 2016-04-07 07:15:26 | \n",
+ "
\n",
+ " \n",
+ " | 371527 | \n",
+ " 2016-03-07 19:39:19 | \n",
+ " BMW_M135i_vollausgestattet_NP_52.720____Euro | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 28990 | \n",
+ " control | \n",
+ " limousine | \n",
+ " 2013 | \n",
+ " manuell | \n",
+ " 320 | \n",
+ " m_reihe | \n",
+ " 50000 | \n",
+ " 8 | \n",
+ " benzin | \n",
+ " bmw | \n",
+ " nein | \n",
+ " 2016-03-07 00:00:00 | \n",
+ " 0 | \n",
+ " 73326 | \n",
+ " 2016-03-22 03:17:10 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
260956 rows × 20 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " dateCrawled \\\n",
+ "3 2016-03-17 16:54:04 \n",
+ "4 2016-03-31 17:25:20 \n",
+ "5 2016-04-04 17:36:23 \n",
+ "6 2016-04-01 20:48:51 \n",
+ "7 2016-03-21 18:54:38 \n",
+ "... ... \n",
+ "371520 2016-03-19 19:53:49 \n",
+ "371521 2016-03-27 20:36:20 \n",
+ "371524 2016-03-05 19:56:21 \n",
+ "371525 2016-03-19 18:57:12 \n",
+ "371527 2016-03-07 19:39:19 \n",
+ "\n",
+ " name seller offerType \\\n",
+ "3 GOLF_4_1_4__3TÜRER privat Angebot \n",
+ "4 Skoda_Fabia_1.4_TDI_PD_Classic privat Angebot \n",
+ "5 BMW_316i___e36_Limousine___Bastlerfahrzeug__Ex... privat Angebot \n",
+ "6 Peugeot_206_CC_110_Platinum privat Angebot \n",
+ "7 VW_Derby_Bj_80__Scheunenfund privat Angebot \n",
+ "... ... ... ... \n",
+ "371520 turbo_defekt privat Angebot \n",
+ "371521 Opel_Zafira_1.6_Elegance_TÜV_12/16 privat Angebot \n",
+ "371524 Smart_smart_leistungssteigerung_100ps privat Angebot \n",
+ "371525 Volkswagen_Multivan_T4_TDI_7DC_UY2 privat Angebot \n",
+ "371527 BMW_M135i_vollausgestattet_NP_52.720____Euro privat Angebot \n",
+ "\n",
+ " price abtest vehicleType yearOfRegistration gearbox powerPS \\\n",
+ "3 1500 test kleinwagen 2001 manuell 75 \n",
+ "4 3600 test kleinwagen 2008 manuell 69 \n",
+ "5 650 test limousine 1995 manuell 102 \n",
+ "6 2200 test cabrio 2004 manuell 109 \n",
+ "7 0 test limousine 1980 manuell 50 \n",
+ "... ... ... ... ... ... ... \n",
+ "371520 3200 control limousine 2004 manuell 225 \n",
+ "371521 1150 control bus 2000 manuell 0 \n",
+ "371524 1199 test cabrio 2000 automatik 101 \n",
+ "371525 9200 test bus 1996 manuell 102 \n",
+ "371527 28990 control limousine 2013 manuell 320 \n",
+ "\n",
+ " model kilometer monthOfRegistration fuelType brand \\\n",
+ "3 golf 150000 6 benzin volkswagen \n",
+ "4 fabia 90000 7 diesel skoda \n",
+ "5 3er 150000 10 benzin bmw \n",
+ "6 2_reihe 150000 8 benzin peugeot \n",
+ "7 andere 40000 7 benzin volkswagen \n",
+ "... ... ... ... ... ... \n",
+ "371520 leon 150000 5 benzin seat \n",
+ "371521 zafira 150000 3 benzin opel \n",
+ "371524 fortwo 125000 3 benzin smart \n",
+ "371525 transporter 150000 3 diesel volkswagen \n",
+ "371527 m_reihe 50000 8 benzin bmw \n",
+ "\n",
+ " notRepairedDamage dateCreated nrOfPictures postalCode \\\n",
+ "3 nein 2016-03-17 00:00:00 0 91074 \n",
+ "4 nein 2016-03-31 00:00:00 0 60437 \n",
+ "5 ja 2016-04-04 00:00:00 0 33775 \n",
+ "6 nein 2016-04-01 00:00:00 0 67112 \n",
+ "7 nein 2016-03-21 00:00:00 0 19348 \n",
+ "... ... ... ... ... \n",
+ "371520 ja 2016-03-19 00:00:00 0 96465 \n",
+ "371521 nein 2016-03-27 00:00:00 0 26624 \n",
+ "371524 nein 2016-03-05 00:00:00 0 26135 \n",
+ "371525 nein 2016-03-19 00:00:00 0 87439 \n",
+ "371527 nein 2016-03-07 00:00:00 0 73326 \n",
+ "\n",
+ " lastSeen \n",
+ "3 2016-03-17 17:40:17 \n",
+ "4 2016-04-06 10:17:21 \n",
+ "5 2016-04-06 19:17:07 \n",
+ "6 2016-04-05 18:18:39 \n",
+ "7 2016-03-25 16:47:58 \n",
+ "... ... \n",
+ "371520 2016-03-19 20:44:43 \n",
+ "371521 2016-03-29 10:17:23 \n",
+ "371524 2016-03-11 18:17:12 \n",
+ "371525 2016-04-07 07:15:26 \n",
+ "371527 2016-03-22 03:17:10 \n",
+ "\n",
+ "[260956 rows x 20 columns]"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "cars_df.dropna()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "difficult-sunset",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(371528, 20)"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "cars_df.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "warming-constraint",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " dateCrawled | \n",
+ " name | \n",
+ " seller | \n",
+ " offerType | \n",
+ " price | \n",
+ " abtest | \n",
+ " vehicleType | \n",
+ " yearOfRegistration | \n",
+ " gearbox | \n",
+ " powerPS | \n",
+ " model | \n",
+ " kilometer | \n",
+ " monthOfRegistration | \n",
+ " fuelType | \n",
+ " brand | \n",
+ " notRepairedDamage | \n",
+ " dateCreated | \n",
+ " nrOfPictures | \n",
+ " postalCode | \n",
+ " lastSeen | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 2016-03-24 11:52:17 | \n",
+ " Golf_3_1.6 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 480 | \n",
+ " test | \n",
+ " NaN | \n",
+ " 1993 | \n",
+ " manuell | \n",
+ " 0 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 0 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " NaN | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 70435 | \n",
+ " 2016-04-07 03:16:57 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2016-03-24 10:58:45 | \n",
+ " A5_Sportback_2.7_Tdi | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 18300 | \n",
+ " test | \n",
+ " coupe | \n",
+ " 2011 | \n",
+ " manuell | \n",
+ " 190 | \n",
+ " NaN | \n",
+ " 125000 | \n",
+ " 5 | \n",
+ " diesel | \n",
+ " audi | \n",
+ " ja | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 66954 | \n",
+ " 2016-04-07 01:46:50 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2016-03-14 12:52:21 | \n",
+ " Jeep_Grand_Cherokee_\"Overland\" | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 9800 | \n",
+ " test | \n",
+ " suv | \n",
+ " 2004 | \n",
+ " automatik | \n",
+ " 163 | \n",
+ " grand | \n",
+ " 125000 | \n",
+ " 8 | \n",
+ " diesel | \n",
+ " jeep | \n",
+ " NaN | \n",
+ " 2016-03-14 00:00:00 | \n",
+ " 0 | \n",
+ " 90480 | \n",
+ " 2016-04-05 12:47:46 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2016-03-17 16:54:04 | \n",
+ " GOLF_4_1_4__3TÜRER | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1500 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2001 | \n",
+ " manuell | \n",
+ " 75 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 6 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-17 00:00:00 | \n",
+ " 0 | \n",
+ " 91074 | \n",
+ " 2016-03-17 17:40:17 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2016-03-31 17:25:20 | \n",
+ " Skoda_Fabia_1.4_TDI_PD_Classic | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3600 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2008 | \n",
+ " manuell | \n",
+ " 69 | \n",
+ " fabia | \n",
+ " 90000 | \n",
+ " 7 | \n",
+ " diesel | \n",
+ " skoda | \n",
+ " nein | \n",
+ " 2016-03-31 00:00:00 | \n",
+ " 0 | \n",
+ " 60437 | \n",
+ " 2016-04-06 10:17:21 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 371523 | \n",
+ " 2016-03-14 17:48:27 | \n",
+ " Suche_t4___vito_ab_6_sitze | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 2200 | \n",
+ " test | \n",
+ " NaN | \n",
+ " 2005 | \n",
+ " NaN | \n",
+ " 0 | \n",
+ " NaN | \n",
+ " 20000 | \n",
+ " 1 | \n",
+ " NaN | \n",
+ " sonstige_autos | \n",
+ " NaN | \n",
+ " 2016-03-14 00:00:00 | \n",
+ " 0 | \n",
+ " 39576 | \n",
+ " 2016-04-06 00:46:52 | \n",
+ "
\n",
+ " \n",
+ " | 371524 | \n",
+ " 2016-03-05 19:56:21 | \n",
+ " Smart_smart_leistungssteigerung_100ps | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1199 | \n",
+ " test | \n",
+ " cabrio | \n",
+ " 2000 | \n",
+ " automatik | \n",
+ " 101 | \n",
+ " fortwo | \n",
+ " 125000 | \n",
+ " 3 | \n",
+ " benzin | \n",
+ " smart | \n",
+ " nein | \n",
+ " 2016-03-05 00:00:00 | \n",
+ " 0 | \n",
+ " 26135 | \n",
+ " 2016-03-11 18:17:12 | \n",
+ "
\n",
+ " \n",
+ " | 371525 | \n",
+ " 2016-03-19 18:57:12 | \n",
+ " Volkswagen_Multivan_T4_TDI_7DC_UY2 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 9200 | \n",
+ " test | \n",
+ " bus | \n",
+ " 1996 | \n",
+ " manuell | \n",
+ " 102 | \n",
+ " transporter | \n",
+ " 150000 | \n",
+ " 3 | \n",
+ " diesel | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-19 00:00:00 | \n",
+ " 0 | \n",
+ " 87439 | \n",
+ " 2016-04-07 07:15:26 | \n",
+ "
\n",
+ " \n",
+ " | 371526 | \n",
+ " 2016-03-20 19:41:08 | \n",
+ " VW_Golf_Kombi_1_9l_TDI | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3400 | \n",
+ " test | \n",
+ " kombi | \n",
+ " 2002 | \n",
+ " manuell | \n",
+ " 100 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 6 | \n",
+ " diesel | \n",
+ " volkswagen | \n",
+ " NaN | \n",
+ " 2016-03-20 00:00:00 | \n",
+ " 0 | \n",
+ " 40764 | \n",
+ " 2016-03-24 12:45:21 | \n",
+ "
\n",
+ " \n",
+ " | 371527 | \n",
+ " 2016-03-07 19:39:19 | \n",
+ " BMW_M135i_vollausgestattet_NP_52.720____Euro | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 28990 | \n",
+ " control | \n",
+ " limousine | \n",
+ " 2013 | \n",
+ " manuell | \n",
+ " 320 | \n",
+ " m_reihe | \n",
+ " 50000 | \n",
+ " 8 | \n",
+ " benzin | \n",
+ " bmw | \n",
+ " nein | \n",
+ " 2016-03-07 00:00:00 | \n",
+ " 0 | \n",
+ " 73326 | \n",
+ " 2016-03-22 03:17:10 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
371524 rows × 20 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " dateCrawled name \\\n",
+ "0 2016-03-24 11:52:17 Golf_3_1.6 \n",
+ "1 2016-03-24 10:58:45 A5_Sportback_2.7_Tdi \n",
+ "2 2016-03-14 12:52:21 Jeep_Grand_Cherokee_\"Overland\" \n",
+ "3 2016-03-17 16:54:04 GOLF_4_1_4__3TÜRER \n",
+ "4 2016-03-31 17:25:20 Skoda_Fabia_1.4_TDI_PD_Classic \n",
+ "... ... ... \n",
+ "371523 2016-03-14 17:48:27 Suche_t4___vito_ab_6_sitze \n",
+ "371524 2016-03-05 19:56:21 Smart_smart_leistungssteigerung_100ps \n",
+ "371525 2016-03-19 18:57:12 Volkswagen_Multivan_T4_TDI_7DC_UY2 \n",
+ "371526 2016-03-20 19:41:08 VW_Golf_Kombi_1_9l_TDI \n",
+ "371527 2016-03-07 19:39:19 BMW_M135i_vollausgestattet_NP_52.720____Euro \n",
+ "\n",
+ " seller offerType price abtest vehicleType yearOfRegistration \\\n",
+ "0 privat Angebot 480 test NaN 1993 \n",
+ "1 privat Angebot 18300 test coupe 2011 \n",
+ "2 privat Angebot 9800 test suv 2004 \n",
+ "3 privat Angebot 1500 test kleinwagen 2001 \n",
+ "4 privat Angebot 3600 test kleinwagen 2008 \n",
+ "... ... ... ... ... ... ... \n",
+ "371523 privat Angebot 2200 test NaN 2005 \n",
+ "371524 privat Angebot 1199 test cabrio 2000 \n",
+ "371525 privat Angebot 9200 test bus 1996 \n",
+ "371526 privat Angebot 3400 test kombi 2002 \n",
+ "371527 privat Angebot 28990 control limousine 2013 \n",
+ "\n",
+ " gearbox powerPS model kilometer monthOfRegistration \\\n",
+ "0 manuell 0 golf 150000 0 \n",
+ "1 manuell 190 NaN 125000 5 \n",
+ "2 automatik 163 grand 125000 8 \n",
+ "3 manuell 75 golf 150000 6 \n",
+ "4 manuell 69 fabia 90000 7 \n",
+ "... ... ... ... ... ... \n",
+ "371523 NaN 0 NaN 20000 1 \n",
+ "371524 automatik 101 fortwo 125000 3 \n",
+ "371525 manuell 102 transporter 150000 3 \n",
+ "371526 manuell 100 golf 150000 6 \n",
+ "371527 manuell 320 m_reihe 50000 8 \n",
+ "\n",
+ " fuelType brand notRepairedDamage dateCreated \\\n",
+ "0 benzin volkswagen NaN 2016-03-24 00:00:00 \n",
+ "1 diesel audi ja 2016-03-24 00:00:00 \n",
+ "2 diesel jeep NaN 2016-03-14 00:00:00 \n",
+ "3 benzin volkswagen nein 2016-03-17 00:00:00 \n",
+ "4 diesel skoda nein 2016-03-31 00:00:00 \n",
+ "... ... ... ... ... \n",
+ "371523 NaN sonstige_autos NaN 2016-03-14 00:00:00 \n",
+ "371524 benzin smart nein 2016-03-05 00:00:00 \n",
+ "371525 diesel volkswagen nein 2016-03-19 00:00:00 \n",
+ "371526 diesel volkswagen NaN 2016-03-20 00:00:00 \n",
+ "371527 benzin bmw nein 2016-03-07 00:00:00 \n",
+ "\n",
+ " nrOfPictures postalCode lastSeen \n",
+ "0 0 70435 2016-04-07 03:16:57 \n",
+ "1 0 66954 2016-04-07 01:46:50 \n",
+ "2 0 90480 2016-04-05 12:47:46 \n",
+ "3 0 91074 2016-03-17 17:40:17 \n",
+ "4 0 60437 2016-04-06 10:17:21 \n",
+ "... ... ... ... \n",
+ "371523 0 39576 2016-04-06 00:46:52 \n",
+ "371524 0 26135 2016-03-11 18:17:12 \n",
+ "371525 0 87439 2016-04-07 07:15:26 \n",
+ "371526 0 40764 2016-03-24 12:45:21 \n",
+ "371527 0 73326 2016-03-22 03:17:10 \n",
+ "\n",
+ "[371524 rows x 20 columns]"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "cars_df.drop_duplicates()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "engaging-recycling",
+ "metadata": {},
+ "source": [
+ "### 1. Удалите столбцы, ценность которых для оценки стоимости машины низка."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "phantom-captain",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "evaluation_df = cars_df.drop(['dateCrawled','seller','offerType','abtest','dateCreated','nrOfPictures','postalCode','lastSeen'], axis='columns')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "departmental-colony",
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " name | \n",
+ " price | \n",
+ " vehicleType | \n",
+ " yearOfRegistration | \n",
+ " gearbox | \n",
+ " powerPS | \n",
+ " model | \n",
+ " kilometer | \n",
+ " monthOfRegistration | \n",
+ " fuelType | \n",
+ " brand | \n",
+ " notRepairedDamage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " Golf_3_1.6 | \n",
+ " 480 | \n",
+ " NaN | \n",
+ " 1993 | \n",
+ " manuell | \n",
+ " 0 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 0 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " A5_Sportback_2.7_Tdi | \n",
+ " 18300 | \n",
+ " coupe | \n",
+ " 2011 | \n",
+ " manuell | \n",
+ " 190 | \n",
+ " NaN | \n",
+ " 125000 | \n",
+ " 5 | \n",
+ " diesel | \n",
+ " audi | \n",
+ " ja | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " Jeep_Grand_Cherokee_\"Overland\" | \n",
+ " 9800 | \n",
+ " suv | \n",
+ " 2004 | \n",
+ " automatik | \n",
+ " 163 | \n",
+ " grand | \n",
+ " 125000 | \n",
+ " 8 | \n",
+ " diesel | \n",
+ " jeep | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " GOLF_4_1_4__3TÜRER | \n",
+ " 1500 | \n",
+ " kleinwagen | \n",
+ " 2001 | \n",
+ " manuell | \n",
+ " 75 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 6 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " Skoda_Fabia_1.4_TDI_PD_Classic | \n",
+ " 3600 | \n",
+ " kleinwagen | \n",
+ " 2008 | \n",
+ " manuell | \n",
+ " 69 | \n",
+ " fabia | \n",
+ " 90000 | \n",
+ " 7 | \n",
+ " diesel | \n",
+ " skoda | \n",
+ " nein | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name price vehicleType yearOfRegistration \\\n",
+ "0 Golf_3_1.6 480 NaN 1993 \n",
+ "1 A5_Sportback_2.7_Tdi 18300 coupe 2011 \n",
+ "2 Jeep_Grand_Cherokee_\"Overland\" 9800 suv 2004 \n",
+ "3 GOLF_4_1_4__3TÜRER 1500 kleinwagen 2001 \n",
+ "4 Skoda_Fabia_1.4_TDI_PD_Classic 3600 kleinwagen 2008 \n",
+ "\n",
+ " gearbox powerPS model kilometer monthOfRegistration fuelType \\\n",
+ "0 manuell 0 golf 150000 0 benzin \n",
+ "1 manuell 190 NaN 125000 5 diesel \n",
+ "2 automatik 163 grand 125000 8 diesel \n",
+ "3 manuell 75 golf 150000 6 benzin \n",
+ "4 manuell 69 fabia 90000 7 diesel \n",
+ "\n",
+ " brand notRepairedDamage \n",
+ "0 volkswagen NaN \n",
+ "1 audi ja \n",
+ "2 jeep NaN \n",
+ "3 volkswagen nein \n",
+ "4 skoda nein "
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluation_df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "english-leisure",
+ "metadata": {},
+ "source": [
+ "### 2. Удалите повторяющиеся строки, строки содержащие пропуски в данных. Выведите размер набора данных до и после удаления."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "temporal-container",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Размер набора данных до удаления повторяющихся строк 371528\n",
+ "Размер данных после удаления повторяющихся строк 362770\n",
+ "Размер набора данных после удаления дубликатов и пустых строк 254921\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"Размер набора данных до удаления повторяющихся строк\",evaluation_df.shape[0])\n",
+ "deldupl_df = cars_df.drop_duplicates(['name','price','vehicleType','yearOfRegistration'\n",
+ " ,'gearbox','powerPS','model','kilometer','monthOfRegistration','fuelType'\n",
+ " ,'notRepairedDamage'])\n",
+ "print(\"Размер данных после удаления повторяющихся строк\",deldupl_df.shape[0])\n",
+ "deldupl_null = deldupl_df.dropna()\n",
+ "print(\"Размер набора данных после удаления дубликатов и пустых строк\",deldupl_null.shape[0])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "suspected-maine",
+ "metadata": {},
+ "source": [
+ "### 3. Удалите данные в строках, выходящие за некоторые пределы (год регистрации, цена, мощность двигателя). Выведите размер набора данных до и после удаления. Для оценки диапазонов значений признаков используйте BoxPlot."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "blond-crest",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "boxplot1 = deldupl_null.boxplot(column=['yearOfRegistration'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "detected-drilling",
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "boxplot2 = deldupl_null.boxplot(column=['price'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "opponent-wildlife",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "boxplot3 = deldupl_null.boxplot(column=['powerPS'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "saved-poison",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Размер набора данных до применения фильтра 254921\n",
+ "Размер набора данных после применения фильтра 3124\n"
+ ]
+ }
+ ],
+ "source": [
+ "autocars_df = deldupl_null[\n",
+ " (deldupl_null.yearOfRegistration <= 2015)&\n",
+ " (deldupl_null.yearOfRegistration >= 1980)&\n",
+ " (deldupl_null.price >= 0)&\n",
+ " (deldupl_null.price <= 0.5)&\n",
+ " (deldupl_null.powerPS >= 0)&\n",
+ " (deldupl_null.powerPS <= 10000)\n",
+ "]\n",
+ "print(\"Размер набора данных до применения фильтра\", deldupl_null.shape[0]) \n",
+ "print(\"Размер набора данных после применения фильтра\", autocars_df.shape[0])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "needed-seating",
+ "metadata": {},
+ "source": [
+ "### 4. Заполнить пропущенные данные в строковых полях."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "aggressive-election",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "dateCrawled 0\n",
+ "name 0\n",
+ "seller 0\n",
+ "offerType 0\n",
+ "price 0\n",
+ "abtest 0\n",
+ "vehicleType 37380\n",
+ "yearOfRegistration 0\n",
+ "gearbox 19102\n",
+ "powerPS 0\n",
+ "model 20260\n",
+ "kilometer 0\n",
+ "monthOfRegistration 0\n",
+ "fuelType 33047\n",
+ "brand 0\n",
+ "notRepairedDamage 70197\n",
+ "dateCreated 0\n",
+ "nrOfPictures 0\n",
+ "postalCode 0\n",
+ "lastSeen 0\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "deldupl_df.isnull().sum()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "reverse-dollar",
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " dateCrawled | \n",
+ " name | \n",
+ " seller | \n",
+ " offerType | \n",
+ " price | \n",
+ " abtest | \n",
+ " vehicleType | \n",
+ " yearOfRegistration | \n",
+ " gearbox | \n",
+ " powerPS | \n",
+ " model | \n",
+ " kilometer | \n",
+ " monthOfRegistration | \n",
+ " fuelType | \n",
+ " brand | \n",
+ " notRepairedDamage | \n",
+ " dateCreated | \n",
+ " nrOfPictures | \n",
+ " postalCode | \n",
+ " lastSeen | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 2016-03-24 11:52:17 | \n",
+ " Golf_3_1.6 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 480 | \n",
+ " test | \n",
+ " NaN | \n",
+ " 1993 | \n",
+ " manuell | \n",
+ " 0 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 0 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " NaN | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 70435 | \n",
+ " 2016-04-07 03:16:57 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2016-03-24 10:58:45 | \n",
+ " A5_Sportback_2.7_Tdi | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 18300 | \n",
+ " test | \n",
+ " coupe | \n",
+ " 2011 | \n",
+ " manuell | \n",
+ " 190 | \n",
+ " NaN | \n",
+ " 125000 | \n",
+ " 5 | \n",
+ " diesel | \n",
+ " audi | \n",
+ " ja | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 66954 | \n",
+ " 2016-04-07 01:46:50 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2016-03-14 12:52:21 | \n",
+ " Jeep_Grand_Cherokee_\"Overland\" | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 9800 | \n",
+ " test | \n",
+ " suv | \n",
+ " 2004 | \n",
+ " automatik | \n",
+ " 163 | \n",
+ " grand | \n",
+ " 125000 | \n",
+ " 8 | \n",
+ " diesel | \n",
+ " jeep | \n",
+ " NaN | \n",
+ " 2016-03-14 00:00:00 | \n",
+ " 0 | \n",
+ " 90480 | \n",
+ " 2016-04-05 12:47:46 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2016-03-17 16:54:04 | \n",
+ " GOLF_4_1_4__3TÜRER | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1500 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2001 | \n",
+ " manuell | \n",
+ " 75 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 6 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-17 00:00:00 | \n",
+ " 0 | \n",
+ " 91074 | \n",
+ " 2016-03-17 17:40:17 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2016-03-31 17:25:20 | \n",
+ " Skoda_Fabia_1.4_TDI_PD_Classic | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3600 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2008 | \n",
+ " manuell | \n",
+ " 69 | \n",
+ " fabia | \n",
+ " 90000 | \n",
+ " 7 | \n",
+ " diesel | \n",
+ " skoda | \n",
+ " nein | \n",
+ " 2016-03-31 00:00:00 | \n",
+ " 0 | \n",
+ " 60437 | \n",
+ " 2016-04-06 10:17:21 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " dateCrawled name seller offerType \\\n",
+ "0 2016-03-24 11:52:17 Golf_3_1.6 privat Angebot \n",
+ "1 2016-03-24 10:58:45 A5_Sportback_2.7_Tdi privat Angebot \n",
+ "2 2016-03-14 12:52:21 Jeep_Grand_Cherokee_\"Overland\" privat Angebot \n",
+ "3 2016-03-17 16:54:04 GOLF_4_1_4__3TÜRER privat Angebot \n",
+ "4 2016-03-31 17:25:20 Skoda_Fabia_1.4_TDI_PD_Classic privat Angebot \n",
+ "\n",
+ " price abtest vehicleType yearOfRegistration gearbox powerPS model \\\n",
+ "0 480 test NaN 1993 manuell 0 golf \n",
+ "1 18300 test coupe 2011 manuell 190 NaN \n",
+ "2 9800 test suv 2004 automatik 163 grand \n",
+ "3 1500 test kleinwagen 2001 manuell 75 golf \n",
+ "4 3600 test kleinwagen 2008 manuell 69 fabia \n",
+ "\n",
+ " kilometer monthOfRegistration fuelType brand notRepairedDamage \\\n",
+ "0 150000 0 benzin volkswagen NaN \n",
+ "1 125000 5 diesel audi ja \n",
+ "2 125000 8 diesel jeep NaN \n",
+ "3 150000 6 benzin volkswagen nein \n",
+ "4 90000 7 diesel skoda nein \n",
+ "\n",
+ " dateCreated nrOfPictures postalCode lastSeen \n",
+ "0 2016-03-24 00:00:00 0 70435 2016-04-07 03:16:57 \n",
+ "1 2016-03-24 00:00:00 0 66954 2016-04-07 01:46:50 \n",
+ "2 2016-03-14 00:00:00 0 90480 2016-04-05 12:47:46 \n",
+ "3 2016-03-17 00:00:00 0 91074 2016-03-17 17:40:17 \n",
+ "4 2016-03-31 00:00:00 0 60437 2016-04-06 10:17:21 "
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "deldupl_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "rational-harris",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\pandas\\core\\series.py:4463: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " return super().fillna(\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " dateCrawled | \n",
+ " name | \n",
+ " seller | \n",
+ " offerType | \n",
+ " price | \n",
+ " abtest | \n",
+ " vehicleType | \n",
+ " yearOfRegistration | \n",
+ " gearbox | \n",
+ " powerPS | \n",
+ " model | \n",
+ " kilometer | \n",
+ " monthOfRegistration | \n",
+ " fuelType | \n",
+ " brand | \n",
+ " notRepairedDamage | \n",
+ " dateCreated | \n",
+ " nrOfPictures | \n",
+ " postalCode | \n",
+ " lastSeen | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 2016-03-24 11:52:17 | \n",
+ " Golf_3_1.6 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 480 | \n",
+ " test | \n",
+ " not_empty | \n",
+ " 1993 | \n",
+ " manuell | \n",
+ " 0 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 0 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " not_empty | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 70435 | \n",
+ " 2016-04-07 03:16:57 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2016-03-24 10:58:45 | \n",
+ " A5_Sportback_2.7_Tdi | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 18300 | \n",
+ " test | \n",
+ " coupe | \n",
+ " 2011 | \n",
+ " manuell | \n",
+ " 190 | \n",
+ " not_empty | \n",
+ " 125000 | \n",
+ " 5 | \n",
+ " diesel | \n",
+ " audi | \n",
+ " ja | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 66954 | \n",
+ " 2016-04-07 01:46:50 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2016-03-14 12:52:21 | \n",
+ " Jeep_Grand_Cherokee_\"Overland\" | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 9800 | \n",
+ " test | \n",
+ " suv | \n",
+ " 2004 | \n",
+ " automatik | \n",
+ " 163 | \n",
+ " grand | \n",
+ " 125000 | \n",
+ " 8 | \n",
+ " diesel | \n",
+ " jeep | \n",
+ " not_empty | \n",
+ " 2016-03-14 00:00:00 | \n",
+ " 0 | \n",
+ " 90480 | \n",
+ " 2016-04-05 12:47:46 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2016-03-17 16:54:04 | \n",
+ " GOLF_4_1_4__3TÜRER | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1500 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2001 | \n",
+ " manuell | \n",
+ " 75 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 6 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-17 00:00:00 | \n",
+ " 0 | \n",
+ " 91074 | \n",
+ " 2016-03-17 17:40:17 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2016-03-31 17:25:20 | \n",
+ " Skoda_Fabia_1.4_TDI_PD_Classic | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3600 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2008 | \n",
+ " manuell | \n",
+ " 69 | \n",
+ " fabia | \n",
+ " 90000 | \n",
+ " 7 | \n",
+ " diesel | \n",
+ " skoda | \n",
+ " nein | \n",
+ " 2016-03-31 00:00:00 | \n",
+ " 0 | \n",
+ " 60437 | \n",
+ " 2016-04-06 10:17:21 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 371523 | \n",
+ " 2016-03-14 17:48:27 | \n",
+ " Suche_t4___vito_ab_6_sitze | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 2200 | \n",
+ " test | \n",
+ " not_empty | \n",
+ " 2005 | \n",
+ " not_empty | \n",
+ " 0 | \n",
+ " not_empty | \n",
+ " 20000 | \n",
+ " 1 | \n",
+ " not_empty | \n",
+ " sonstige_autos | \n",
+ " not_empty | \n",
+ " 2016-03-14 00:00:00 | \n",
+ " 0 | \n",
+ " 39576 | \n",
+ " 2016-04-06 00:46:52 | \n",
+ "
\n",
+ " \n",
+ " | 371524 | \n",
+ " 2016-03-05 19:56:21 | \n",
+ " Smart_smart_leistungssteigerung_100ps | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1199 | \n",
+ " test | \n",
+ " cabrio | \n",
+ " 2000 | \n",
+ " automatik | \n",
+ " 101 | \n",
+ " fortwo | \n",
+ " 125000 | \n",
+ " 3 | \n",
+ " benzin | \n",
+ " smart | \n",
+ " nein | \n",
+ " 2016-03-05 00:00:00 | \n",
+ " 0 | \n",
+ " 26135 | \n",
+ " 2016-03-11 18:17:12 | \n",
+ "
\n",
+ " \n",
+ " | 371525 | \n",
+ " 2016-03-19 18:57:12 | \n",
+ " Volkswagen_Multivan_T4_TDI_7DC_UY2 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 9200 | \n",
+ " test | \n",
+ " bus | \n",
+ " 1996 | \n",
+ " manuell | \n",
+ " 102 | \n",
+ " transporter | \n",
+ " 150000 | \n",
+ " 3 | \n",
+ " diesel | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-19 00:00:00 | \n",
+ " 0 | \n",
+ " 87439 | \n",
+ " 2016-04-07 07:15:26 | \n",
+ "
\n",
+ " \n",
+ " | 371526 | \n",
+ " 2016-03-20 19:41:08 | \n",
+ " VW_Golf_Kombi_1_9l_TDI | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3400 | \n",
+ " test | \n",
+ " kombi | \n",
+ " 2002 | \n",
+ " manuell | \n",
+ " 100 | \n",
+ " golf | \n",
+ " 150000 | \n",
+ " 6 | \n",
+ " diesel | \n",
+ " volkswagen | \n",
+ " not_empty | \n",
+ " 2016-03-20 00:00:00 | \n",
+ " 0 | \n",
+ " 40764 | \n",
+ " 2016-03-24 12:45:21 | \n",
+ "
\n",
+ " \n",
+ " | 371527 | \n",
+ " 2016-03-07 19:39:19 | \n",
+ " BMW_M135i_vollausgestattet_NP_52.720____Euro | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 28990 | \n",
+ " control | \n",
+ " limousine | \n",
+ " 2013 | \n",
+ " manuell | \n",
+ " 320 | \n",
+ " m_reihe | \n",
+ " 50000 | \n",
+ " 8 | \n",
+ " benzin | \n",
+ " bmw | \n",
+ " nein | \n",
+ " 2016-03-07 00:00:00 | \n",
+ " 0 | \n",
+ " 73326 | \n",
+ " 2016-03-22 03:17:10 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
362770 rows × 20 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " dateCrawled name \\\n",
+ "0 2016-03-24 11:52:17 Golf_3_1.6 \n",
+ "1 2016-03-24 10:58:45 A5_Sportback_2.7_Tdi \n",
+ "2 2016-03-14 12:52:21 Jeep_Grand_Cherokee_\"Overland\" \n",
+ "3 2016-03-17 16:54:04 GOLF_4_1_4__3TÜRER \n",
+ "4 2016-03-31 17:25:20 Skoda_Fabia_1.4_TDI_PD_Classic \n",
+ "... ... ... \n",
+ "371523 2016-03-14 17:48:27 Suche_t4___vito_ab_6_sitze \n",
+ "371524 2016-03-05 19:56:21 Smart_smart_leistungssteigerung_100ps \n",
+ "371525 2016-03-19 18:57:12 Volkswagen_Multivan_T4_TDI_7DC_UY2 \n",
+ "371526 2016-03-20 19:41:08 VW_Golf_Kombi_1_9l_TDI \n",
+ "371527 2016-03-07 19:39:19 BMW_M135i_vollausgestattet_NP_52.720____Euro \n",
+ "\n",
+ " seller offerType price abtest vehicleType yearOfRegistration \\\n",
+ "0 privat Angebot 480 test not_empty 1993 \n",
+ "1 privat Angebot 18300 test coupe 2011 \n",
+ "2 privat Angebot 9800 test suv 2004 \n",
+ "3 privat Angebot 1500 test kleinwagen 2001 \n",
+ "4 privat Angebot 3600 test kleinwagen 2008 \n",
+ "... ... ... ... ... ... ... \n",
+ "371523 privat Angebot 2200 test not_empty 2005 \n",
+ "371524 privat Angebot 1199 test cabrio 2000 \n",
+ "371525 privat Angebot 9200 test bus 1996 \n",
+ "371526 privat Angebot 3400 test kombi 2002 \n",
+ "371527 privat Angebot 28990 control limousine 2013 \n",
+ "\n",
+ " gearbox powerPS model kilometer monthOfRegistration \\\n",
+ "0 manuell 0 golf 150000 0 \n",
+ "1 manuell 190 not_empty 125000 5 \n",
+ "2 automatik 163 grand 125000 8 \n",
+ "3 manuell 75 golf 150000 6 \n",
+ "4 manuell 69 fabia 90000 7 \n",
+ "... ... ... ... ... ... \n",
+ "371523 not_empty 0 not_empty 20000 1 \n",
+ "371524 automatik 101 fortwo 125000 3 \n",
+ "371525 manuell 102 transporter 150000 3 \n",
+ "371526 manuell 100 golf 150000 6 \n",
+ "371527 manuell 320 m_reihe 50000 8 \n",
+ "\n",
+ " fuelType brand notRepairedDamage dateCreated \\\n",
+ "0 benzin volkswagen not_empty 2016-03-24 00:00:00 \n",
+ "1 diesel audi ja 2016-03-24 00:00:00 \n",
+ "2 diesel jeep not_empty 2016-03-14 00:00:00 \n",
+ "3 benzin volkswagen nein 2016-03-17 00:00:00 \n",
+ "4 diesel skoda nein 2016-03-31 00:00:00 \n",
+ "... ... ... ... ... \n",
+ "371523 not_empty sonstige_autos not_empty 2016-03-14 00:00:00 \n",
+ "371524 benzin smart nein 2016-03-05 00:00:00 \n",
+ "371525 diesel volkswagen nein 2016-03-19 00:00:00 \n",
+ "371526 diesel volkswagen not_empty 2016-03-20 00:00:00 \n",
+ "371527 benzin bmw nein 2016-03-07 00:00:00 \n",
+ "\n",
+ " nrOfPictures postalCode lastSeen \n",
+ "0 0 70435 2016-04-07 03:16:57 \n",
+ "1 0 66954 2016-04-07 01:46:50 \n",
+ "2 0 90480 2016-04-05 12:47:46 \n",
+ "3 0 91074 2016-03-17 17:40:17 \n",
+ "4 0 60437 2016-04-06 10:17:21 \n",
+ "... ... ... ... \n",
+ "371523 0 39576 2016-04-06 00:46:52 \n",
+ "371524 0 26135 2016-03-11 18:17:12 \n",
+ "371525 0 87439 2016-04-07 07:15:26 \n",
+ "371526 0 40764 2016-03-24 12:45:21 \n",
+ "371527 0 73326 2016-03-22 03:17:10 \n",
+ "\n",
+ "[362770 rows x 20 columns]"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "not_empty_df = deldupl_df\n",
+ "not_empty_df['name'].fillna(value='not_empty', inplace=True)\n",
+ "not_empty_df['seller'].fillna(value='not_empty', inplace=True)\n",
+ "not_empty_df['offerType'].fillna(value='not_empty', inplace=True)\n",
+ "not_empty_df['abtest'].fillna(value='not_empty', inplace=True)\n",
+ "not_empty_df['vehicleType'].fillna(value='not_empty', inplace=True)\n",
+ "not_empty_df['gearbox'].fillna(value='not_empty', inplace=True)\n",
+ "not_empty_df['model'].fillna(value='not_empty', inplace=True)\n",
+ "not_empty_df['fuelType'].fillna(value='not_empty', inplace=True)\n",
+ "not_empty_df['brand'].fillna(value='not_emptye', inplace=True)\n",
+ "not_empty_df['notRepairedDamage'].fillna(value='not_empty', inplace=True)\n",
+ "\n",
+ "not_empty_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "frequent-combination",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "dateCrawled 0\n",
+ "name 0\n",
+ "seller 0\n",
+ "offerType 0\n",
+ "price 0\n",
+ "abtest 0\n",
+ "vehicleType 0\n",
+ "yearOfRegistration 0\n",
+ "gearbox 0\n",
+ "powerPS 0\n",
+ "model 0\n",
+ "kilometer 0\n",
+ "monthOfRegistration 0\n",
+ "fuelType 0\n",
+ "brand 0\n",
+ "notRepairedDamage 0\n",
+ "dateCreated 0\n",
+ "nrOfPictures 0\n",
+ "postalCode 0\n",
+ "lastSeen 0\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "not_empty_df.isnull().sum()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "accessible-champion",
+ "metadata": {},
+ "source": [
+ "### 5. Постройте гистограмму по маркам автомобилей, типам кузова и используемому топливу."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "assigned-township",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "deldupl_df.brand.hist(xrot=80,bins=15,xlabelsize=5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "authorized-variety",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "deldupl_df.vehicleType.hist(xrot=50,bins=15,xlabelsize=10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "opening-walker",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "deldupl_df.fuelType.hist(xrot=35,bins=15,xlabelsize=12)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "committed-margin",
+ "metadata": {},
+ "source": [
+ "### 6. Добавьте в данные новый признак, который представляет собой длину названия автомобиля."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "southeast-medicine",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " dateCrawled | \n",
+ " name | \n",
+ " seller | \n",
+ " offerType | \n",
+ " price | \n",
+ " abtest | \n",
+ " vehicleType | \n",
+ " yearOfRegistration | \n",
+ " gearbox | \n",
+ " powerPS | \n",
+ " ... | \n",
+ " kilometer | \n",
+ " monthOfRegistration | \n",
+ " fuelType | \n",
+ " brand | \n",
+ " notRepairedDamage | \n",
+ " dateCreated | \n",
+ " nrOfPictures | \n",
+ " postalCode | \n",
+ " lastSeen | \n",
+ " len_of_name | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 2016-03-24 11:52:17 | \n",
+ " Golf_3_1.6 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 480 | \n",
+ " test | \n",
+ " NaN | \n",
+ " 1993 | \n",
+ " manuell | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 150000 | \n",
+ " 0 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " NaN | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 70435 | \n",
+ " 2016-04-07 03:16:57 | \n",
+ " 10 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2016-03-24 10:58:45 | \n",
+ " A5_Sportback_2.7_Tdi | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 18300 | \n",
+ " test | \n",
+ " coupe | \n",
+ " 2011 | \n",
+ " manuell | \n",
+ " 190 | \n",
+ " ... | \n",
+ " 125000 | \n",
+ " 5 | \n",
+ " diesel | \n",
+ " audi | \n",
+ " ja | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 66954 | \n",
+ " 2016-04-07 01:46:50 | \n",
+ " 20 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2016-03-14 12:52:21 | \n",
+ " Jeep_Grand_Cherokee_\"Overland\" | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 9800 | \n",
+ " test | \n",
+ " suv | \n",
+ " 2004 | \n",
+ " automatik | \n",
+ " 163 | \n",
+ " ... | \n",
+ " 125000 | \n",
+ " 8 | \n",
+ " diesel | \n",
+ " jeep | \n",
+ " NaN | \n",
+ " 2016-03-14 00:00:00 | \n",
+ " 0 | \n",
+ " 90480 | \n",
+ " 2016-04-05 12:47:46 | \n",
+ " 30 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2016-03-17 16:54:04 | \n",
+ " GOLF_4_1_4__3TÜRER | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1500 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2001 | \n",
+ " manuell | \n",
+ " 75 | \n",
+ " ... | \n",
+ " 150000 | \n",
+ " 6 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-17 00:00:00 | \n",
+ " 0 | \n",
+ " 91074 | \n",
+ " 2016-03-17 17:40:17 | \n",
+ " 18 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2016-03-31 17:25:20 | \n",
+ " Skoda_Fabia_1.4_TDI_PD_Classic | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3600 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2008 | \n",
+ " manuell | \n",
+ " 69 | \n",
+ " ... | \n",
+ " 90000 | \n",
+ " 7 | \n",
+ " diesel | \n",
+ " skoda | \n",
+ " nein | \n",
+ " 2016-03-31 00:00:00 | \n",
+ " 0 | \n",
+ " 60437 | \n",
+ " 2016-04-06 10:17:21 | \n",
+ " 30 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 21 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " dateCrawled name seller offerType \\\n",
+ "0 2016-03-24 11:52:17 Golf_3_1.6 privat Angebot \n",
+ "1 2016-03-24 10:58:45 A5_Sportback_2.7_Tdi privat Angebot \n",
+ "2 2016-03-14 12:52:21 Jeep_Grand_Cherokee_\"Overland\" privat Angebot \n",
+ "3 2016-03-17 16:54:04 GOLF_4_1_4__3TÜRER privat Angebot \n",
+ "4 2016-03-31 17:25:20 Skoda_Fabia_1.4_TDI_PD_Classic privat Angebot \n",
+ "\n",
+ " price abtest vehicleType yearOfRegistration gearbox powerPS ... \\\n",
+ "0 480 test NaN 1993 manuell 0 ... \n",
+ "1 18300 test coupe 2011 manuell 190 ... \n",
+ "2 9800 test suv 2004 automatik 163 ... \n",
+ "3 1500 test kleinwagen 2001 manuell 75 ... \n",
+ "4 3600 test kleinwagen 2008 manuell 69 ... \n",
+ "\n",
+ " kilometer monthOfRegistration fuelType brand notRepairedDamage \\\n",
+ "0 150000 0 benzin volkswagen NaN \n",
+ "1 125000 5 diesel audi ja \n",
+ "2 125000 8 diesel jeep NaN \n",
+ "3 150000 6 benzin volkswagen nein \n",
+ "4 90000 7 diesel skoda nein \n",
+ "\n",
+ " dateCreated nrOfPictures postalCode lastSeen \\\n",
+ "0 2016-03-24 00:00:00 0 70435 2016-04-07 03:16:57 \n",
+ "1 2016-03-24 00:00:00 0 66954 2016-04-07 01:46:50 \n",
+ "2 2016-03-14 00:00:00 0 90480 2016-04-05 12:47:46 \n",
+ "3 2016-03-17 00:00:00 0 91074 2016-03-17 17:40:17 \n",
+ "4 2016-03-31 00:00:00 0 60437 2016-04-06 10:17:21 \n",
+ "\n",
+ " len_of_name \n",
+ "0 10 \n",
+ "1 20 \n",
+ "2 30 \n",
+ "3 18 \n",
+ "4 30 \n",
+ "\n",
+ "[5 rows x 21 columns]"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "def get_len_name(name):\n",
+ " return str(len(name.split('\\n')[0].strip()))\n",
+ " \n",
+ "list_len = cars_df['name'].apply(get_len_name)\n",
+ "\n",
+ "cars_df['len_of_name'] = list_len\n",
+ "cars_df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "weighted-highland",
+ "metadata": {},
+ "source": [
+ "### 7. Постройте карту корреляций между признаками. Выведите также числовые значения признаков."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "senior-sailing",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " price | \n",
+ " yearOfRegistration | \n",
+ " powerPS | \n",
+ " kilometer | \n",
+ " monthOfRegistration | \n",
+ " nrOfPictures | \n",
+ " postalCode | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | price | \n",
+ " 1.000000 | \n",
+ " -0.000184 | \n",
+ " 0.006852 | \n",
+ " -0.000622 | \n",
+ " -0.002853 | \n",
+ " NaN | \n",
+ " -0.003223 | \n",
+ "
\n",
+ " \n",
+ " | yearOfRegistration | \n",
+ " -0.000184 | \n",
+ " 1.000000 | \n",
+ " 0.000454 | \n",
+ " -0.055157 | \n",
+ " -0.011581 | \n",
+ " NaN | \n",
+ " -0.001386 | \n",
+ "
\n",
+ " \n",
+ " | powerPS | \n",
+ " 0.006852 | \n",
+ " 0.000454 | \n",
+ " 1.000000 | \n",
+ " -0.008877 | \n",
+ " 0.044365 | \n",
+ " NaN | \n",
+ " 0.027794 | \n",
+ "
\n",
+ " \n",
+ " | kilometer | \n",
+ " -0.000622 | \n",
+ " -0.055157 | \n",
+ " -0.008877 | \n",
+ " 1.000000 | \n",
+ " 0.002872 | \n",
+ " NaN | \n",
+ " -0.029992 | \n",
+ "
\n",
+ " \n",
+ " | monthOfRegistration | \n",
+ " -0.002853 | \n",
+ " -0.011581 | \n",
+ " 0.044365 | \n",
+ " 0.002872 | \n",
+ " 1.000000 | \n",
+ " NaN | \n",
+ " 0.016596 | \n",
+ "
\n",
+ " \n",
+ " | nrOfPictures | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | postalCode | \n",
+ " -0.003223 | \n",
+ " -0.001386 | \n",
+ " 0.027794 | \n",
+ " -0.029992 | \n",
+ " 0.016596 | \n",
+ " NaN | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " price yearOfRegistration powerPS kilometer \\\n",
+ "price 1.000000 -0.000184 0.006852 -0.000622 \n",
+ "yearOfRegistration -0.000184 1.000000 0.000454 -0.055157 \n",
+ "powerPS 0.006852 0.000454 1.000000 -0.008877 \n",
+ "kilometer -0.000622 -0.055157 -0.008877 1.000000 \n",
+ "monthOfRegistration -0.002853 -0.011581 0.044365 0.002872 \n",
+ "nrOfPictures NaN NaN NaN NaN \n",
+ "postalCode -0.003223 -0.001386 0.027794 -0.029992 \n",
+ "\n",
+ " monthOfRegistration nrOfPictures postalCode \n",
+ "price -0.002853 NaN -0.003223 \n",
+ "yearOfRegistration -0.011581 NaN -0.001386 \n",
+ "powerPS 0.044365 NaN 0.027794 \n",
+ "kilometer 0.002872 NaN -0.029992 \n",
+ "monthOfRegistration 1.000000 NaN 0.016596 \n",
+ "nrOfPictures NaN NaN NaN \n",
+ "postalCode 0.016596 NaN 1.000000 "
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.heatmap(deldupl_df.corr(), annot=True,fmt=\".3f\")\n",
+ "deldupl_df.corr()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "objective-cooking",
+ "metadata": {},
+ "source": [
+ "### 8. Определите коэффициент корреляции Пирсона и Спирмена между стоимостью автомобиля и типом кузова. Оцените значение p-value. Постройте плотность распределения признаков."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "pointed-victor",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from scipy.stats import pearsonr\n",
+ "from scipy.stats import spearmanr\n",
+ "from sklearn.preprocessing import LabelEncoder"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "posted-arctic",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "label_encoder = LabelEncoder()\n",
+ "vehicleCoder = pd.Series(label_encoder.fit_transform(deldupl_df['vehicleType']))\n",
+ "coefficientpearson = pearsonr(deldupl_df['price'],vehicleCoder)\n",
+ "coefficientspearman = spearmanr(deldupl_df['price'],vehicleCoder)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "rotary-reservation",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Коэффициент корреляции Пирсона: (-0.004096348099478991, 0.013615589695521369)\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"Коэффициент корреляции Пирсона: \",coefficientpearson)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "suburban-repeat",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Коэффициент корреляции Спирмена: SpearmanrResult(correlation=-0.0579966487892841, pvalue=8.838847580174968e-268)\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"Коэффициент корреляции Спирмена: \",coefficientspearman)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "id": "technological-reading",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sPrice = pd.Series(deldupl_df['price'])\n",
+ "sPrice.plot.kde()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "id": "modular-standard",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "p-value удовлетворительное\n"
+ ]
+ }
+ ],
+ "source": [
+ "\n",
+ "if (coefficientspearman[1]<0.05):\n",
+ " print(\"p-value удовлетворительное\")\n",
+ "else:\n",
+ " print(\"p-value неудовлетворительное\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "id": "relative-western",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "deldupl_df['vehicleType'].value_counts().plot.barh()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "available-citation",
+ "metadata": {},
+ "source": [
+ "### 9. Добавьте в набор данных признак, являющийся суммой двух других признаков."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "id": "developed-examination",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " dateCrawled | \n",
+ " name | \n",
+ " seller | \n",
+ " offerType | \n",
+ " price | \n",
+ " abtest | \n",
+ " vehicleType | \n",
+ " yearOfRegistration | \n",
+ " gearbox | \n",
+ " powerPS | \n",
+ " ... | \n",
+ " monthOfRegistration | \n",
+ " fuelType | \n",
+ " brand | \n",
+ " notRepairedDamage | \n",
+ " dateCreated | \n",
+ " nrOfPictures | \n",
+ " postalCode | \n",
+ " lastSeen | \n",
+ " len_of_name | \n",
+ " sum | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 2016-03-24 11:52:17 | \n",
+ " Golf_3_1.6 | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 480 | \n",
+ " test | \n",
+ " NaN | \n",
+ " 1993 | \n",
+ " manuell | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 0 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " NaN | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 70435 | \n",
+ " 2016-04-07 03:16:57 | \n",
+ " 10 | \n",
+ " 480 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2016-03-24 10:58:45 | \n",
+ " A5_Sportback_2.7_Tdi | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 18300 | \n",
+ " test | \n",
+ " coupe | \n",
+ " 2011 | \n",
+ " manuell | \n",
+ " 190 | \n",
+ " ... | \n",
+ " 5 | \n",
+ " diesel | \n",
+ " audi | \n",
+ " ja | \n",
+ " 2016-03-24 00:00:00 | \n",
+ " 0 | \n",
+ " 66954 | \n",
+ " 2016-04-07 01:46:50 | \n",
+ " 20 | \n",
+ " 18490 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2016-03-14 12:52:21 | \n",
+ " Jeep_Grand_Cherokee_\"Overland\" | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 9800 | \n",
+ " test | \n",
+ " suv | \n",
+ " 2004 | \n",
+ " automatik | \n",
+ " 163 | \n",
+ " ... | \n",
+ " 8 | \n",
+ " diesel | \n",
+ " jeep | \n",
+ " NaN | \n",
+ " 2016-03-14 00:00:00 | \n",
+ " 0 | \n",
+ " 90480 | \n",
+ " 2016-04-05 12:47:46 | \n",
+ " 30 | \n",
+ " 9963 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2016-03-17 16:54:04 | \n",
+ " GOLF_4_1_4__3TÜRER | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 1500 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2001 | \n",
+ " manuell | \n",
+ " 75 | \n",
+ " ... | \n",
+ " 6 | \n",
+ " benzin | \n",
+ " volkswagen | \n",
+ " nein | \n",
+ " 2016-03-17 00:00:00 | \n",
+ " 0 | \n",
+ " 91074 | \n",
+ " 2016-03-17 17:40:17 | \n",
+ " 18 | \n",
+ " 1575 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2016-03-31 17:25:20 | \n",
+ " Skoda_Fabia_1.4_TDI_PD_Classic | \n",
+ " privat | \n",
+ " Angebot | \n",
+ " 3600 | \n",
+ " test | \n",
+ " kleinwagen | \n",
+ " 2008 | \n",
+ " manuell | \n",
+ " 69 | \n",
+ " ... | \n",
+ " 7 | \n",
+ " diesel | \n",
+ " skoda | \n",
+ " nein | \n",
+ " 2016-03-31 00:00:00 | \n",
+ " 0 | \n",
+ " 60437 | \n",
+ " 2016-04-06 10:17:21 | \n",
+ " 30 | \n",
+ " 3669 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 22 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " dateCrawled name seller offerType \\\n",
+ "0 2016-03-24 11:52:17 Golf_3_1.6 privat Angebot \n",
+ "1 2016-03-24 10:58:45 A5_Sportback_2.7_Tdi privat Angebot \n",
+ "2 2016-03-14 12:52:21 Jeep_Grand_Cherokee_\"Overland\" privat Angebot \n",
+ "3 2016-03-17 16:54:04 GOLF_4_1_4__3TÜRER privat Angebot \n",
+ "4 2016-03-31 17:25:20 Skoda_Fabia_1.4_TDI_PD_Classic privat Angebot \n",
+ "\n",
+ " price abtest vehicleType yearOfRegistration gearbox powerPS ... \\\n",
+ "0 480 test NaN 1993 manuell 0 ... \n",
+ "1 18300 test coupe 2011 manuell 190 ... \n",
+ "2 9800 test suv 2004 automatik 163 ... \n",
+ "3 1500 test kleinwagen 2001 manuell 75 ... \n",
+ "4 3600 test kleinwagen 2008 manuell 69 ... \n",
+ "\n",
+ " monthOfRegistration fuelType brand notRepairedDamage \\\n",
+ "0 0 benzin volkswagen NaN \n",
+ "1 5 diesel audi ja \n",
+ "2 8 diesel jeep NaN \n",
+ "3 6 benzin volkswagen nein \n",
+ "4 7 diesel skoda nein \n",
+ "\n",
+ " dateCreated nrOfPictures postalCode lastSeen \\\n",
+ "0 2016-03-24 00:00:00 0 70435 2016-04-07 03:16:57 \n",
+ "1 2016-03-24 00:00:00 0 66954 2016-04-07 01:46:50 \n",
+ "2 2016-03-14 00:00:00 0 90480 2016-04-05 12:47:46 \n",
+ "3 2016-03-17 00:00:00 0 91074 2016-03-17 17:40:17 \n",
+ "4 2016-03-31 00:00:00 0 60437 2016-04-06 10:17:21 \n",
+ "\n",
+ " len_of_name sum \n",
+ "0 10 480 \n",
+ "1 20 18490 \n",
+ "2 30 9963 \n",
+ "3 18 1575 \n",
+ "4 30 3669 \n",
+ "\n",
+ "[5 rows x 22 columns]"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "cars_df['sum'] = cars_df['price'] + cars_df['powerPS']\n",
+ "cars_df.head()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "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.9.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
From ff9f58405ad3479ee02cabbc2620f9daf000c9c7 Mon Sep 17 00:00:00 2001
From: andvagapov <86461996+andvagapov@users.noreply.github.com>
Date: Fri, 25 Jun 2021 09:45:08 +0300
Subject: [PATCH 3/4] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?=
=?UTF-8?q?=D0=BD=D0=B0=203=20=D0=BB=D0=B0=D0=B1=D0=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Lab3 (1).ipynb" | 1227 +++++++++++++++++
1 file changed, 1227 insertions(+)
create mode 100644 "ml/lb3/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/Lab3 (1).ipynb"
diff --git "a/ml/lb3/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/Lab3 (1).ipynb" "b/ml/lb3/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/Lab3 (1).ipynb"
new file mode 100644
index 0000000..bdfb371
--- /dev/null
+++ "b/ml/lb3/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/Lab3 (1).ipynb"
@@ -0,0 +1,1227 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# ФИО студента: Вагапов Андрей Андреевич\n",
+ "\n",
+ "# Номер группы: 19-ИВТ-3\n",
+ "\n",
+ "# Вариант: 6\n",
+ "\n",
+ "# Задание: Occupancy\n",
+ "\n",
+ "1.\tИзучить набор данных. Создать описание набора данных на русском языке. Описать признаки, используемые в наборе данных (включить полученные описания в отчёт).\n",
+ "2.\tУдалите дубликаты строк в наборе данных; приведите размер набора данных до и после данной операции;\n",
+ "3.\tОцените сбалансированность данных по классам (постройте гистограмму). Используйте полученную информацию при выборе метрики оценки качества классификации (PR или ROC кривая)\n",
+ "4.\tВыполните масштабирование количественных признаков; Постройте диаграммы BoxPlot для признаков до и после масштабирования. Выберите способ масштабирования (например, нормализацию или стандартизацию);\n",
+ "5.\tВыполните замену категориальных признаков; выберите и обоснуйте способ замены;\n",
+ "6.\tОцените корреляцию между признаков и удалите те признаки, которые коррелируют с наибольшим числом других (удалять признаки нужно только для линейных методов классификации);\n",
+ "7.\tЗаполните пропущенные значения в данных;\n",
+ "8.\tРешите поставленную задачу классификации в соответствии с заданием. При подборе параметров классификатора используйте метод GridSearchCV и перекрёстную проверку (изучите возможные для изменения параметры классификации). Определите схему построения многоклассового классификатора, используемую по умолчанию (опишите используемую схему кодирования, обоснуйте свой выбор). Постройте, если это возможно, многоклассовую классификацию на основе схем «один-против-всех» и «все-против-всех». Оцените точность классификации для каждой их схем. Постройте кривые PR и ROC (для каждого из классов должны быть построены отдельные кривые, а также кривые для микро и макроусреднения метрик качества). Для линейного классификатора используйте регуляризацию. \n",
+ "9.\tСравните кривые для классификаторов, указанных в задании, сделайте выводы.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 1 пункт\n",
+ "Изучить набор данных. Создать описание набора данных на русском языке. Описать признаки, используемые в наборе данных\n",
+ "\n",
+ "1. date time - Дата-время (год - месяц - день - час : минута : секунда) \n",
+ "2. Temperature - Температура (по Цельсию)\n",
+ "3. Relative Humidity - Относительная влажность (%)\n",
+ "4. Light - Свет (в люксах)\n",
+ "5. CO2 - Углекислый газ (в ppm)\n",
+ "6. Humidity Ratio - Удельная влажность\n",
+ "7. Occupancy - Занятость (0 - незанятый статус, 1 - занятый статус)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 155,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " Temperature | \n",
+ " Humidity | \n",
+ " Light | \n",
+ " CO2 | \n",
+ " HumidityRatio | \n",
+ " Occupancy | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 2015-02-04 17:51:00 | \n",
+ " 23.18 | \n",
+ " 27.2720 | \n",
+ " 426.0 | \n",
+ " 721.25 | \n",
+ " 0.004793 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2015-02-04 17:51:59 | \n",
+ " 23.15 | \n",
+ " 27.2675 | \n",
+ " 429.5 | \n",
+ " 714.00 | \n",
+ " 0.004783 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2015-02-04 17:53:00 | \n",
+ " 23.15 | \n",
+ " 27.2450 | \n",
+ " 426.0 | \n",
+ " 713.50 | \n",
+ " 0.004779 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2015-02-04 17:54:00 | \n",
+ " 23.15 | \n",
+ " 27.2000 | \n",
+ " 426.0 | \n",
+ " 708.25 | \n",
+ " 0.004772 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " 2015-02-04 17:55:00 | \n",
+ " 23.10 | \n",
+ " 27.2000 | \n",
+ " 426.0 | \n",
+ " 704.50 | \n",
+ " 0.004757 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date Temperature Humidity Light CO2 HumidityRatio \\\n",
+ "1 2015-02-04 17:51:00 23.18 27.2720 426.0 721.25 0.004793 \n",
+ "2 2015-02-04 17:51:59 23.15 27.2675 429.5 714.00 0.004783 \n",
+ "3 2015-02-04 17:53:00 23.15 27.2450 426.0 713.50 0.004779 \n",
+ "4 2015-02-04 17:54:00 23.15 27.2000 426.0 708.25 0.004772 \n",
+ "5 2015-02-04 17:55:00 23.10 27.2000 426.0 704.50 0.004757 \n",
+ "\n",
+ " Occupancy \n",
+ "1 1 \n",
+ "2 1 \n",
+ "3 1 \n",
+ "4 1 \n",
+ "5 1 "
+ ]
+ },
+ "execution_count": 155,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "import seaborn as sns\n",
+ "import sklearn as skl\n",
+ "from sklearn import preprocessing\n",
+ "from sklearn.preprocessing import label_binarize\n",
+ "from sklearn.metrics import accuracy_score, precision_recall_curve, average_precision_score, roc_curve, auc\n",
+ "from sklearn.neighbors import KNeighborsClassifier\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.model_selection import GridSearchCV\n",
+ "from sklearn.calibration import CalibratedClassifierCV\n",
+ "\n",
+ "DATA_TIME = 'date'\n",
+ "TEMPERATURE = 'Temperature'\n",
+ "RELATIVE_HUMIDITY = 'Humidity'\n",
+ "LIGHT = 'Light'\n",
+ "CO2 = 'CO2'\n",
+ "HUMIDITY_RATIO = 'HumidityRatio'\n",
+ "OCCUPANCY = 'Occupancy'\n",
+ "df = pd.read_csv('datatraining.txt')\n",
+ "df_pandas = pd.DataFrame(df)\n",
+ "df_pandas.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 156,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['date', 'Temperature', 'Humidity', 'Light', 'CO2', 'HumidityRatio',\n",
+ " 'Occupancy'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 156,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.columns"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 157,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(8143, 7)"
+ ]
+ },
+ "execution_count": 157,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_pandas.shape\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 2 пункт\n",
+ "Удалите дубликаты строк в наборе данных; приведите размер набора данных до и после данной операции"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 158,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "До удаления дубликатов: (8143, 7)\n",
+ "После удаления дубликатов: (8143, 7)\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"До удаления дубликатов:\", df_pandas.shape)\n",
+ "df_pandas = df_pandas.drop_duplicates()\n",
+ "print(\"После удаления дубликатов:\", df_pandas.shape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Дубликаты не найдены "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 3 пункт\n",
+ "Оцените сбалансированность данных по классам (постройте гистограмму). Используйте полученную информацию при выборе метрики оценки качества классификации (PR или ROC кривая)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 159,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 159,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.countplot(data=df_pandas, x=OCCUPANCY)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Объем данных по каждому классу отличается. Классы несбалансированы. ROC-кривую, поскольку она дает адекватную оценку качества работы алгоритма, где классы несбалансированы. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 4 пункт\n",
+ "\n",
+ "Выполните масштабирование количественных признаков; Постройте диаграммы BoxPlot для признаков до и после масштабирования. Выберите способ масштабирования "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 160,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 160,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "quan_atrib = [TEMPERATURE, RELATIVE_HUMIDITY, LIGHT, CO2, HUMIDITY_RATIO]\n",
+ "sns.boxplot(data = df_pandas[quan_atrib])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Способ масшатбирования - нормализация"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 161,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 161,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "df_pandas[quan_atrib] = preprocessing.MinMaxScaler().fit_transform(df_pandas[quan_atrib].values.astype(float))\n",
+ "sns.boxplot(data = df_pandas[quan_atrib])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 5 пункт\n",
+ "Выполните замену категориальных признаков; выберите и обоснуйте способ замены"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Замена не требуется, так как категориальные признаки отсутсвуют"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 6 пункт \n",
+ "Оцените корреляцию между признаков и удалите те признаки, которые коррелируют с наибольшим числом других (удалять признаки нужно только для линейных методов классификации)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 162,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 162,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "df_corr = df_pandas.corr()\n",
+ "df_corr = df.drop('Occupancy', axis=1).corr()\n",
+ "sns.heatmap(df_corr, annot = True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 7 пункт\n",
+ " Заполните пропущенные значения в данных "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 163,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "date 8143\n",
+ "Temperature 8143\n",
+ "Humidity 8143\n",
+ "Light 8143\n",
+ "CO2 8143\n",
+ "HumidityRatio 8143\n",
+ "Occupancy 8143\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 163,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_pandas.count()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Пропусков нет"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 8 пункт\n",
+ "Решите поставленную задачу классификации в соответствии с заданием. При подборе параметров классификатора используйте метод GridSearchCV и перекрёстную проверку (изучите возможные для изменения параметры классификации). Определите схему построения многоклассового классификатора, используемую по умолчанию (опишите используемую схему кодирования, обоснуйте свой выбор). Постройте, если это возможно, многоклассовую классификацию на основе схем «один-против-всех» и «все-против-всех». Оцените точность классификации для каждой их схем. Постройте кривые PR и ROC (для каждого из классов должны быть построены отдельные кривые, а также кривые для микро и макроусреднения метрик качества). Для линейного классификатора используйте регуляризацию."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 164,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " Temperature | \n",
+ " Humidity | \n",
+ " Light | \n",
+ " CO2 | \n",
+ " HumidityRatio | \n",
+ " Occupancy | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 2015-02-11 14:48:00 | \n",
+ " 21.7600 | \n",
+ " 31.133333 | \n",
+ " 437.333333 | \n",
+ " 1029.666667 | \n",
+ " 0.005021 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2015-02-11 14:49:00 | \n",
+ " 21.7900 | \n",
+ " 31.000000 | \n",
+ " 437.333333 | \n",
+ " 1000.000000 | \n",
+ " 0.005009 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2015-02-11 14:50:00 | \n",
+ " 21.7675 | \n",
+ " 31.122500 | \n",
+ " 434.000000 | \n",
+ " 1003.750000 | \n",
+ " 0.005022 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2015-02-11 14:51:00 | \n",
+ " 21.7675 | \n",
+ " 31.122500 | \n",
+ " 439.000000 | \n",
+ " 1009.500000 | \n",
+ " 0.005022 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " 2015-02-11 14:51:59 | \n",
+ " 21.7900 | \n",
+ " 31.133333 | \n",
+ " 437.333333 | \n",
+ " 1005.666667 | \n",
+ " 0.005030 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date Temperature Humidity Light CO2 \\\n",
+ "1 2015-02-11 14:48:00 21.7600 31.133333 437.333333 1029.666667 \n",
+ "2 2015-02-11 14:49:00 21.7900 31.000000 437.333333 1000.000000 \n",
+ "3 2015-02-11 14:50:00 21.7675 31.122500 434.000000 1003.750000 \n",
+ "4 2015-02-11 14:51:00 21.7675 31.122500 439.000000 1009.500000 \n",
+ "5 2015-02-11 14:51:59 21.7900 31.133333 437.333333 1005.666667 \n",
+ "\n",
+ " HumidityRatio Occupancy \n",
+ "1 0.005021 1 \n",
+ "2 0.005009 1 \n",
+ "3 0.005022 1 \n",
+ "4 0.005022 1 \n",
+ "5 0.005030 1 "
+ ]
+ },
+ "execution_count": 164,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_test = pd.read_csv('datatest2.txt')\n",
+ "df_test.head()\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Нормализуем"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 165,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(data = df_test[quan_atrib])\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 166,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " Temperature | \n",
+ " Humidity | \n",
+ " Light | \n",
+ " CO2 | \n",
+ " HumidityRatio | \n",
+ " Occupancy | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 2015-02-11 14:48:00 | \n",
+ " 0.462168 | \n",
+ " 0.525565 | \n",
+ " 0.276618 | \n",
+ " 0.342373 | \n",
+ " 0.700223 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2015-02-11 14:49:00 | \n",
+ " 0.468303 | \n",
+ " 0.518004 | \n",
+ " 0.276618 | \n",
+ " 0.323736 | \n",
+ " 0.695239 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2015-02-11 14:50:00 | \n",
+ " 0.463701 | \n",
+ " 0.524950 | \n",
+ " 0.274510 | \n",
+ " 0.326092 | \n",
+ " 0.700447 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2015-02-11 14:51:00 | \n",
+ " 0.463701 | \n",
+ " 0.524950 | \n",
+ " 0.277672 | \n",
+ " 0.329704 | \n",
+ " 0.700447 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " 2015-02-11 14:51:59 | \n",
+ " 0.468303 | \n",
+ " 0.525565 | \n",
+ " 0.276618 | \n",
+ " 0.327296 | \n",
+ " 0.703947 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date Temperature Humidity Light CO2 \\\n",
+ "1 2015-02-11 14:48:00 0.462168 0.525565 0.276618 0.342373 \n",
+ "2 2015-02-11 14:49:00 0.468303 0.518004 0.276618 0.323736 \n",
+ "3 2015-02-11 14:50:00 0.463701 0.524950 0.274510 0.326092 \n",
+ "4 2015-02-11 14:51:00 0.463701 0.524950 0.277672 0.329704 \n",
+ "5 2015-02-11 14:51:59 0.468303 0.525565 0.276618 0.327296 \n",
+ "\n",
+ " HumidityRatio Occupancy \n",
+ "1 0.700223 1 \n",
+ "2 0.695239 1 \n",
+ "3 0.700447 1 \n",
+ "4 0.700447 1 \n",
+ "5 0.703947 1 "
+ ]
+ },
+ "execution_count": 166,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "numerical_columns = [i for i in df_test.columns[1:6] if df_test[i].dtype.name != 'object']\n",
+ "categorial_columns = [i for i in df_test.columns[1:6] if df_test[i].dtype.name == 'object']\n",
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "scaler = MinMaxScaler()\n",
+ "df_test[numerical_columns] = scaler.fit_transform(df_test[numerical_columns])\n",
+ "df_test.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 167,
+ "metadata": {
+ "tags": [
+ "outputPrepend"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(data = df_test[quan_atrib])\n",
+ "plt.show()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 168,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(9752, 7)"
+ ]
+ },
+ "execution_count": 168,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 169,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "date 9752\n",
+ "Temperature 9752\n",
+ "Humidity 9752\n",
+ "Light 9752\n",
+ "CO2 9752\n",
+ "HumidityRatio 9752\n",
+ "Occupancy 9752\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 169,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_test.count()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "tags": [
+ "outputPrepend"
+ ]
+ },
+ "source": [
+ "### Реализуем классификацию методом k ближайших соседй"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 170,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "x_train, y_train = df_pandas[numerical_columns + ['Occupancy']].drop('Occupancy', axis=1), df_pandas['Occupancy']\n",
+ "x_test, y_test = df_test[numerical_columns + ['Occupancy']].drop('Occupancy', axis=1), df_test['Occupancy']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 171,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "best train score: 0.9328218726008781 | at neighbors number: 44\n",
+ "test score: 0.9487284659557014\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "from sklearn.model_selection import GridSearchCV\n",
+ "from sklearn.neighbors import KNeighborsClassifier\n",
+ "knn = KNeighborsClassifier()\n",
+ "\n",
+ "#найдем оптимальные параметры для классификатора\n",
+ "#n_neighbors - количество соседей\n",
+ "knn_grid = GridSearchCV(knn, dict(n_neighbors = [x for x in range(1,50)]))\n",
+ "knn_grid.fit(x_train, y_train)\n",
+ "selected_n_neighbors = knn_grid.best_estimator_.n_neighbors\n",
+ "best_score = knn_grid.best_score_\n",
+ "print('best train score: ', best_score,'| at neighbors number: ', selected_n_neighbors)\n",
+ "\n",
+ "#создаем модель knn по нашим оптимальным данным\n",
+ "knn = KNeighborsClassifier(n_neighbors=selected_n_neighbors)\n",
+ "#тренируем ее\n",
+ "knn.fit(x_train, y_train)\n",
+ "#смотрим в каком проценте случаев классификатор дает верный результат\n",
+ "best_score = np.mean(y_test == knn.predict(x_test))\n",
+ "print('test score: ', best_score)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Линейный классификатор (персептрон)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 172,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "best score: 0.9766651131292015 | alpha: 0.05263157894736842 | max_iter: 3\n",
+ "test score: 0.9638022969647252\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n",
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sklearn.linear_model import Perceptron\n",
+ "slf = Perceptron()\n",
+ "#найдем оптимальные параметры для классификатора\n",
+ "#alfa - Константа, которая умножает член регуляризации\n",
+ "#max_iter - Максимальное количество проходов над данными обучения (иначе говоря, эпохи)\n",
+ "paramsearch = GridSearchCV(estimator=slf, param_grid=dict(alpha=np.linspace(0,1,20)[1:],max_iter=[x for x in range(1,50)]), n_jobs=-1)\n",
+ "paramsearch.fit(x_train, y_train)\n",
+ "best_score = paramsearch.best_score_\n",
+ "selected_alpha = paramsearch.best_estimator_.alpha\n",
+ "selected_max_iter = paramsearch.best_estimator_.max_iter\n",
+ "print('best score:',best_score,'| alpha:',selected_alpha, '| max_iter:', selected_max_iter)\n",
+ "\n",
+ "#создаем модель персептрона по нашим оптимальным данным\n",
+ "perceptron = skl.linear_model.Perceptron(alpha=selected_alpha,max_iter=selected_max_iter)\n",
+ "#тренируем ее\n",
+ "perceptron.fit(x_train, y_train)\n",
+ "#смотрим в каком проценте случаев классификатор дает верный результат\n",
+ "test_score = np.mean(y_test == perceptron.predict(x_test))\n",
+ "print('test score: ', test_score)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Для построения ROC и PR кривых необходимо получить вероятности принадлежности примера к одному из классов, а затем варьировать границу выбора класса. Вероятности можно получить с помощью метода predict_proba"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 173,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n",
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n",
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n",
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n",
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n",
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n",
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n",
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n",
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n",
+ "D:\\мо\\WPy64-3920\\python-3.9.2.amd64\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:574: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
+ " warnings.warn(\"Maximum number of iteration reached before \"\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from sklearn.calibration import CalibratedClassifierCV\n",
+ "plt.figure(figsize=(10,8))\n",
+ "y_test_invers = []\n",
+ "for i, y in enumerate(y_test.reset_index(drop=True)):\n",
+ " y_test_invers.append(1-y)\n",
+ " \n",
+ "probas_knn = knn.fit(x_train, y_train).predict_proba(x_test)\n",
+ "\n",
+ "#Откалибруем линейный классификатор\n",
+ "#cv - кратность перекрестной проверки\n",
+ "#method - метод калибровки, так как у нас записей больше 1000 то рекомендуется использовать isotonic\n",
+ "# если же данных << 1000 то sigmoid\n",
+ "clf_isotonic = CalibratedClassifierCV(perceptron, cv=10, method='isotonic')\n",
+ "clf_isotonic.fit(x_train, y_train)\n",
+ "probas_slf = clf_isotonic.predict_proba(x_test)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### PR кривые"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 174,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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UlIqOgxjjDmuiMjykv4QD+Y5ihPK0aNHSUtL49ChQxUdijHmBBYZGUlUVBRVqlQps3laoigjaWlp1K5dmxYtWuAeRjPGmHKlqqSnp5OWlkZ0dHSZzddqPZWRQ4cO0bBhQ0sSxpgKIyI0bNiwzI9sWKIoQ5YkjDEVLRj7IUsUxhhj/LJEUYnUqlXL8/mTTz6hVatWbN++nfvvv58aNWrwxx9/+By3MIMGDWLPnj1+xznrrLPwdRXatGnTGDt2bODBF8OkSZNo27YtMTExxMfH88Ybb/iNpSRSUlK46aabADh8+DD9+vUjISGBGTNmcO2117Ju3boSz/v++++nadOmJCQkEBMTw5w5cwr0b9++Pe+8806h83j66ac9621KRlW56aabOP3004mLi2PFihU+x5s3bx6JiYnExMQwYsQIsrKyANi9ezdDhw4lLi6OLl268P3333umGTlyJCeddBIxMTE+5zlp0iREhJ07dwLOxTAjRowgNjaWdu3a8a9//QuAAwcOcN5559G2bVs6dOjA+PG5Rbiff/55pk6dWibbokiqely9OnXqpKFo3bp1FR2C1qxZU1VVv/zyS23ZsqVu2rRJVVXvu+8+PfXUU/X2228vMG5p9e7dW5ctW1ag/9SpU3XMmDElmmd2drYeO3bM57CXXnpJBwwYoHv37lVV1T179ui0adP8xlJa3377rfbq1avE02dlZeXpvu+++3TixImq6vzdNGzYUI8dO5an/8aNG7V27dp65MiRAvM7evSoxsbG6tGjR0sck1H9+OOPdeDAgZqdna3ffvutdunSpcA4x44d06ioKN2wYYOqqt5zzz06ZcoUVVW97bbb9P7771dV1fXr1+vZZ5/tmW7hwoW6fPly7dChQ4F5bt++XQcMGKDNmjXTP//8U1VV3377bb300ktVVXX//v3avHlz3bp1q+7fv1/nzZunqqqHDx/WHj166CeffOIZLyEhwee6+dofASlawv2utSiC4IEP13Lpv78t09cDH64NaNmLFi3iuuuu4+OPP+a0007z9B85ciQzZsxg165dBaZ566236NKlCwkJCfz973/n2LFjALRo0cLzi2fChAm0bduW/v37M3z4cCZNmuSZfubMmXTp0oXWrVuzaNEiT/8dO3YwcOBA2rRpwwMPPODp/+STTxITE0NMTAxPP/00ANu2baNdu3bccMMNJCYmsmPHDpKTk4mJiSE2NpannnoKgEceeYQXX3yROnXqAFC3bl1GjBhRYJ2uv/56kpKS6NChA/fdd5+n//jx42nfvj1xcXHcdtttnvhzWie9evUCYMGCBZx//vn88ccfXHnllaSmppKQkMDmzZvztFy++OILunXrRmJiIhdffDGZmZmebffggw/So0cPZs6cWej31a5dOyIiIjzbOUerVq2oUaMGu3fvLjBNzi/ciAjnosVNmzbRr18/4uPjSUxMZPPmzSxYsIBevXoxdOhQ2rdvz+jRo8nOzi40js2bN5OQkEBCQgLh4eGez7/88kuev4P7778/z3fvy7Rp02jcuLFnHo0bN2batGme7XLHHXfQpUsXunTpwqZNmwD46aef6Nu3L3FxcfTt25ft27cDkJycTHR0tGde33zzjd9lF8d///tfrr76akSEM844gz179vDrr7/mGSc9PZ1q1arRunVrAPr378/7778PwLp16+jbty8Abdu2Zdu2bfz+++8A9OrViwYNGvhc7i233MLjjz+e51yCiLB//36ysrI4ePAgVatWpU6dOtSoUYM+ffoAULVqVRITE0lLSwOgRo0atGjRgqVLl5bZNimMJYpK5PDhw1xwwQXMnj2btm3b5hlWq1YtRo4cyTPPPJOn//r165kxYwZff/01qamphIeH8/bbb+cZJyUlhffff5+VK1fywQcfFDi8k5WVxdKlS3n66afzJISlS5fy9ttvk5qaysyZM0lJSWH58uVMnTqV7777jiVLlvDKK6+wcuVKADZs2MDVV1/NypUr2blzJz///DPff/89a9as4ZprriEjI4OMjIw8CbAwDz/8MCkpKaxevZqFCxeyevVqdu3axaxZs1i7di2rV6/m7rvvBuDBBx/k888/Z9WqVZ7DQDlOOukkpkyZQs+ePUlNTc2z7J07d/LQQw/x5ZdfsmLFCpKSknjyySc9wyMjI1m8eDGXXXZZoXF+9913hIWFkb/Y5YoVK2jVqhUnnXRSgWm+/vprOnXq5Om+4oorGDNmDKtWreKbb77hlFNO8Wz/J554gjVr1rB582Y++OCDQuM47bTTSE1NJTU1lerVq3s+N2nShLCwMLSYN+ZeeumlnnlceumleYbVqVOHpUuXMnbsWP7v//4PgLFjx3L11VezevVqrrjiCs9hP4CJEyd65tW9e/cil5uTVLxfvg7T/fzzz5x6am45uqioKH7++ec84zRq1IijR496/ubfe+89duxwimLHx8d7tunSpUv56aefPDvxwsyZM4emTZsSH5/3GW0XXXQRNWvW5JRTTqFZs2bcdtttBRLNnj17+PDDDz3JCSApKSnPj7NgsfsoguC+wR0qZLlVqlShe/fuvPrqqwUSAsBNN91EQkIC//jHPzz95s6dy/Lly+ncuTMABw8eLLBzWrx4MRdccAHVq1cHYPDgwXmGDxs2DIBOnTqxbds2T//+/fvTsGFDzziLFy9GRBg6dCg1a9b09F+0aBFDhgyhefPmnHHGGQC0bNmSLVu2cOONN3LeeecxYMAAMjMzA76i49133+Xll18mKyuLX3/9lXXr1tG+fXsiIyO59tprOe+88zj//PMBOPPMM0lOTuaSSy7xrEsglixZwrp16zjzzDMBOHLkCN26dfMMz7+D9PbUU0/x1ltvUbt2bWbMmOFZr6eeeopXXnmFLVu28Nlnn/mc9tdff6Vdu3YAZGRk8PPPPzN06FDASU45unTpQsuWLQEYPnw4ixcv5qKLLgp4/XJERUWxcuVKBgwYUOxpfRk+fLjn/ZZbbgHg22+/9ex0r7rqKm6//fYSzXvGjBkBj+sr+eX/+xIRpk+fzi233MLhw4cZMGCApyU3fvx4br75ZhISEoiNjaVjx46eYb4cOHCAhx9+mC+++KLAsKVLlxIeHs4vv/zC7t276dmzJ/369fN8f1lZWQwfPpybbrrJ0w+cHzI//PBDwOtcUpYoKpGwsDDeffdd+vXrxyOPPMKdd96ZZ3i9evW4/PLLefHFFz39VJURI0Z4Tp75UtSvyWrVqgEQHh7uOdEHvv/p/M0rJ3kA1K9fn1WrVvH555/zwgsv8O677/Laa69Rs2ZNtmzZkuefJb+tW7cyadIkli1bRv369UlOTubQoUNERESwdOlS5s6dy/Tp03n++eeZN28ekydP5rvvvuPjjz8mISGB1NRUv+ubQ1Xp379/oSedvdcnv1tuucVz6MtX/w8++ICrr76azZs359n5A1SvXt1znby/7elr+5fEI488wtixY7n99tv57bfffMZdHPkPuRQ1TnFceumlbNiwoUD/W2+9lauvvjpPv6ioKE/rAJybZps0aVJg2m7dunl+tX/xxRds3OjUL61Tp47nZLKqEh0d7fcmt82bN7N161ZPayItLY3ExESWLl3Kf/7zHwYOHEiVKlU46aSTOPPMM0lJSfH8nY8aNYpWrVp5WmA5Dh065PkBF0x26KmSqVGjBh999BFvv/02r776aoHht956K//+9789O/S+ffvy3nvvea6I2rVrFz/99FOeaXr06MGHH37IoUOHyMzM5OOPPw4olv/973/s2rWLgwcPMnv2bM4880x69erF7NmzOXDgAPv372fWrFn07NmzwLQ7d+4kOzubCy+8kAkTJniuSPnnP//JmDFj2LdvHwD79u3j5ZfzPkF337591KxZk7p16/L777/z6afO87AyMzPZu3cvgwYN4umnn/YkhM2bN9O1a1cefPBBGjVqlGfn4c8ZZ5zB119/7TnOfuDAAc9OpLSGDRtGUlISr7/+eoFh7dq18yyzTp06REVFMXv2bMA5/HjgwAHA+ZW6detWsrOzmTFjBj169ChRLD169PAc+hk9enTJVshLzq/+GTNmeFpg3bt3Z/r06QC8/fbbJY51xowZnli9X/mTBMCQIUN44403UFWWLFlC3bp1PYftvOX8bxw+fJjHHnvMsw327NnDkSNHAJgyZQq9evXynDvzJTY2lj/++INt27axbds2oqKiWLFiBSeffDLNmjVj3rx5qCr79+9nyZIlnsPHd999N3v37vWcz/O2cePGQq+sKkuWKCqhBg0a8Nlnn/HQQw/x3//+N8+wRo0aMXToUA4fPgxA+/bteeihhxgwYABxcXH079+/wAm9zp07M2TIEOLj4z07sLp16xYZR48ePbjqqqtISEjgwgsvJCkpicTERJKTk+nSpQtdu3bl2muvpWPHjgWm/fnnnznrrLNISEggOTnZ0+K5/vrr6dOnD507dyYmJobevXtTo0aNPNPGx8fTsWNHOnTowMiRIz2HhjIyMjj//POJi4ujd+/enhPk48aNIzY2lpiYGHr16lXg+HFhck7SDh8+nLi4OM4444wyPQxw77338uSTTxY4CX3uuefy1VdfebrffPNNnn32WeLi4ujevTu//fYb4PwSHj9+PDExMURHR3sOT1177bVlchnx5MmTmTx5crGnO3z4MF27duWZZ57xfAfPPvssU6dOJS4ujjfffNPnodMcv/zyC4MGDSpx3DkGDRpEy5YtOf3007nuuuvytLQHDRrEL784j8+ZOHEi7dq1Iy4ujsGDB3P22WcDzvm9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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# K соседей\n",
+ "precision, recall, thresholds = precision_recall_curve(y_test_invers, probas_knn[:,0])\n",
+ "aps_knn0 = average_precision_score(y_test_invers,probas_knn[:,0])\n",
+ "plt.plot(recall, precision, label='KNeighborsClassifier PR (ср. тч. прог. = %f)' % (aps_knn0)) \n",
+ "\n",
+ "# Персептрон\n",
+ "precision, recall, thresholds = precision_recall_curve(y_test_invers, probas_slf[:,0])\n",
+ "aps_ptron0 = average_precision_score(y_test_invers,probas_slf[:,0])\n",
+ "plt.plot(recall, precision, label='PerceptronClassifier PR (ср. тч. прог. = %f)' % (aps_ptron0)) \n",
+ "\n",
+ "# вывод графика\n",
+ "plt.xlabel('Recall (полнота)')\n",
+ "plt.ylabel('Precision (точность)')\n",
+ "plt.xlim([0.0, 1.0])\n",
+ "plt.ylim([0.0, 1.0])\n",
+ "plt.legend(loc=4, fontsize='medium')\n",
+ "plt.title('Occupancy = 0')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 175,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmkAAAHwCAYAAAD98PjEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABYVklEQVR4nO3dd5iTVdrH8e89yWQavVlAmvQ6IEWkKGKvi8CyWLH3sq6s7r5rd11du2th7XUVe8UGKIIKCIIg2GjSbHSmMuW8fzyZMCUDGSaZZIbf53KuJE85z51khJv7POccc84hIiIiIoklKd4BiIiIiEhFStJEREREEpCSNBEREZEEpCRNREREJAEpSRMRERFJQErSRERERBKQkjQRERGRBKQkTURiwszGm9kiM8sxs1/M7GEzaxTvuGojM/ujmX0e/Cw/iXc8IlIzlKSJSNSZ2V+A24EJQEPgQKAN8JGZBeIZWy21EbgXuC3OcYhIDVKSJiJRZWYNgBuBS51z7zvnCpxzK4E/4iVqpwaP85nZ381smZltM7N5ZrZfcF93M/vIzDaa2a9m9vfg9qfM7JZS1zrEzNaUer3SzP5mZkvMbJOZPWlmqcF9jc3sHTP7PbjvHTNrVercT8zsZjP7LBjPh2bWrNT+IcFq1mYzWx2sFPYPxucvddwoM1sQzc/UOTfFOfcSsC6a7YpIYlOSJiLRdhCQCrxWeqNzLgt4Dzg8uOlKYBxwDNAAOAvIMbP6wBTgfWBfoAMwtQrXPwU4Etgf6AT8I7g9CXgSL1FsDeQCD5Q792TgTKAFEACuAjCz1sHY/wM0BzKBBc65L4ENpd4TeEnos+ECM7Nrgkle2J8qvEcR2QMoSRORaGsGrHfOFYbZ93NwP8A5wD+cc987z9fOuQ3AccAvzrm7nHN5zrltzrnZVbj+A8651c65jcA/8RJBnHMbnHOvOudynHPbgvsOLnfuk865H5xzucBLeMkYeInfFOfcC8HK4Abn3ILgvqfZUR1sgpcg/i9cYM6525xzjSr7qcJ7FJE9gH/Xh4iIVMl6oJmZ+cMkavsE9wPsBywLc35l2yO1utTzn/CqcZhZOnAPcBTQOLi/vpn5nHNFwde/lDo3B6gXQUzPAd+aWT28Lt0ZzrmfqxG/iAigSpqIRN8XQD5wUumNZpYBHM2OrsvVeF2S5VW2HSAbSC/1eu8wx+xX6nlrdtzH9RegMzDQOdcAGFYSWiXXiigm59xavPc8EjiNSro6AYL34GVV9hNBHCKyB1GSJiJR5Zzbgjdw4D9mdpSZJZtZW+BlYA07kpjHgJvNrKN5eplZU+AdYG8zu8LMUsysvpkNDJ6zADjGzJqY2d7AFWFCuNjMWgW7Hv8OTApur493H9rm4L7rq/C2ngcOC06F4TezpmaWWWr/M8BfgZ7A6zv5bG51ztWr7Key84KDLFLxej+SzCzVzJKrEL+I1EJK0kQk6pxz/8ZLkO4EtgKz8apRI5xz+cHD7sa77+vD4DGPA2nB+8UOB47H6378ERgePOdZ4GtgZfC8kgSstP8F9y0P/pSMBr0XSMPrbp2FNzAh0vezCm+Aw1/wpsNYAPQudcjreAMSXnfOZUfabhWchpdgPgwMDT5/NAbXEZEEYs65eMcgIhIVZrYSOMc5NyUO114GnB+Pa4tI3aRKmohINZnZKMAB0+Idi4jUHTFL0szsCTP7zcy+qWS/mdn9ZrbUzBaaWd9YxSIiEivBZZoeBi52zhXHORwRqUNi1t1pZsOALOAZ51yPMPuPAS7Fu89jIHCfc25g+eNERERE9kQxq6Q55z7Fu8G2MifiJXDOOTcLaGRm+8QqHhEREZHaJJ73pLWk7KSTa4LbRERERPZ48VxxINwEkmH7Xs3sPOA8gIZpyQfs0ySNkl5aB5R02Val49a8dkNBmIFhBP8Lvi69zWEYZm7H+cEnZd5Ime5jV8n28vvKR+8q2b6zfa7MQ9jzKt0nNaZ+SbE43O9GZb8TDiwJ6u0NST7KHBTu96D8ueW/93C/o6W3+VO864mISLXNmzdvvXOu+e6cG88kbQ1lZwZvxY6Zwctwzj0CPALQr18/N3fu3LAN5hcWkZNfRFZ+IdnbC8nOLyI7v5Cc7YVk5RcFHwtDx+QEj8kqd0x2vrc9t6Ao7HXCSUv2kZHiJyPFR0Yg+JjiD/O84jHpAT/1UvykB3zUS/GOCfhj/Jekc+CKdzyyi9fO7fqYMq8jbBdH1WIpHUck7Zbfv7NzKPvagqm4JQWfU2pb+ceknewzmHYLbP4J2Bb8AoLbLansD6W3BZ/nltw1sNzbXxNJdudjYeD50KAlNGkPSUraRER2h5n9tLvnxjNJewu4xMxexBs4sKW6692l+H2k+H00zghEJcCiYhdK5LKDyVtJklc6CSzZl729KJTgZecXsjF7O6s35pQ5vzjCv1+TfVYmyQuXyKWn+KgX8JOe4qdeuWMyUnYkhPVS/KQl+zArVfMzA/NVHoBEV88xUFxUKvmKZCWioKJC+OI/kL/N+87KJHbBRC6p/PbS+yvZl+SrmCjOmgi/LoLv3/V+SnQf6cVfXASuCIoLg68LvYS29Ou9e8KJD0T/MxQR2cPELEkzsxeAQ/AWWl6DtwRLMoBzbiIwGW9k51K8hYzPjFUsu8uXZNRPTaZ+anRWX3HOkV9YXKaal12qclfyPGd7sLqXX7YCmJ1fyPqs/GDlzztme2FkI/7NICOwI8lLD1XzvJ+SJM9LDMtXBctv9577faquRMwMfLv5v5vPD0P+HN14KtP1eO/xxymQuwmmXA++ZPjlG0jye4ldks9L/EKv/eBP9R6XTYWfF3jn9hgF+x8KaY1qJnYRkTqm1q04sLPuzj1RQVFxqcrejmpemS7c/HKVvlDFr2y3cMm+SKX4kyokc6UrfeWTOq/iVypRDFb+Srp9U/xJZat9Uvus/QoeHV5227F3gT8Neo3d/URVRKSWMrN5zrl+u3WukjQprbjYkVtQFCZ5K929W7abd8c9fkWhil/p54UR9vH6kqxUArcjkQtV+sIkeWWrfb7gscEu34CfpCQlfTUudxNs/RkeHlRx3/mfwj69K24XEamjqpOk6Z+1UkZSkoWqX9SPTpulB3SEunJD9/hVPqCjJAlctzm3TLdwTQ/oKJ0IxnxAR12Q1tj7uXYDZP3i3ac2/Q5Y8BxMvRka7QeF+cGfPCja7j0WBh/zNkOHw6BZZyjK33FsUb53TNP9oc1B3rYkv3cPnCqwIlIHqZImtU64AR1lB3HsfEDHjnv84jOgo+SewLADOuqqnI3w8GDYng3+APhSvKk+Sn58Kd72okJY9Xn4NnwpXqJWXoOWcOWS2MYvIrKb1N0pUg3hBnSEqnthunDLD+jI2V42QazpAR3lj6n1AzpyNkJBjjcYwRcIJnEB78PasAzWzPW2uSJ45awd553xNqQ08KpxBbk7HlseAI3bQFGBd5wvOgOBREQioSRNJMFUNqCjJJmLZEBHaARwDQ/oKN8dnNADOrb9Cs/+AX7bRSXNfF5SB8HRqGmQnArJad7z4gIoyIPCXMjb6h3bvCu06OpNn+KKYf/hkJyurlURqRIlaSJ1XGUDOkrf45eVv/MBHeW7iAuK6siAjqIC+PZtL5Hyp3rJV0kStmo2bFm9IxnDla2yFeR6iVlS8o7zigth3pOVX++YO2HAudGLX0TqNCVpIlJlOxvQUZLM7WxAx47nXnIYlQEdpSt98R7QUZgPP3/tVd6WvAFZv8HXL+zY3+koOPwmaN45+tfeFee8ARcFOTuSTTNvdYiqKi4qm7iGeyzM21FpjOix1Lnbs2HrOthvAPQ7c8eAkZLjCvO98wrzIWcDDL0K6rXYsd2fCg32Lfved1XNdG7HdQpLXyf4WFwE+/bxEvuiUoNYSgavhAa1lNtXkA2t+gPmbU+pB806lR3YUuYxPzgwJr/UAJny2yo7N0wbpY8tzPNGUh9yDeyTuWNy6hbdvcpwyXlJyZDRtOq/FxI1StJEJO4iGdBRemLmygZ0lL4PsLoDOsp0+UZjQMeyj+HjW2HNnLLbfQHo9UfYnuMldfsf6v2FXpDrbSvIDj7mlnoe/CnZn7cVtmd5kwCXTr5Cz8ttc5Xc9+hP85Kcln1LVQvzK0+kiguq9kWXed8pZSuX4R6zf6/4eYVrJ9ygkNJK7jcs2u69btW/XKJXLrmqjUoG1JS+F7PMY8qOgTc/vFf19of/w/t8UupBmyGwX//ovwepQEmaiNQ5kQzoyAkme5EM6MjOLyS/mgM6vOd+GiUX0i9rOt23zqDdps9wST4KkhuSlvdr+PfiS8EC6d49bcnpEEiH5IzgY/BnyZteYpPSILgtrdRjWtltgXL7Ma/aV28vr9pXfx8I1Nt1AlWlx+BPctqO55Gu6VpcBL9/590b6E8JtpESHBySsqOdr56FnPU72i/MgxUzvKTTn+qd8+1bUG/vUjGllHusbHvKju7w5Z94n08ohkCYY8vvC3iDVixpR2xr5nrTzYRGLAd2kmillD2u5L2XbPMlV+1+R+dgyxpY95X32heA5dMhvcmOa7pi7/OrLKEzn5fsdhjhJf6tB5Wr2AUriPlboVlHSGno3aeZ1tj7HZSIKEkTEYnArgZ0VJiweScDOnK2e+2U/iM0jTza2G/kkEKuC5BLCrmkUIQv7ICOst27dWhAhySe7dle8pa7GX6aCS+Pr157KQ0hf4v3j4r6e0PbIV5yl78Nup0IGc281806QZN20XgHtZaSNBGROCguduQVFu2Yd6+SAR05+YVk1cCAjh337O16QEfp7l2t0LEH257jjWb+7dtgpTNQsYK4eZWX5K2aBdt+8SpryWnwwwewda1XCUyp71VBK9PhMK97estqb1qcvqdB64O8ymYdpyRNRKSO2F5YXGr93fADOipM2ByjAR2hrt4IBnSUTPWSZIaX6xlmYECSlTwPPhqYWbl9gAVfU3Y/JedU1la4a6nKWPOKi2HdfK/C5k/1Er+pN3nd1Sn1Yd2CHVPhlOgx2uuaLX3vZO5mOPDCHfcZZjSHLsfW2jkOlaSJiEhYJQM6Sg/IqGxAR7hjqjOgI95KErcKCV9wX0lCGPAncVCHZhzXcx8O6dyCtIAvvoHXZc7Bsmkw+SrYuBxSG3pdpiX3AP76TeXnJqfD4CtKjTjOhbwt3kjd0oNjirZDiy6lBpYEf7asgYEXeKNhC3O9CmAN3FunJE1ERGpEyYCOkkSu9ICO3O1FFDtwOO8x+PeLc1DsHM6Bw3tO8Dhv347nLngNFzzfOz5MW6WeU+qcStsqdy1KYil2bMktYNp3v7EheztpyT6O7L4X4wa0ZkC7JqrI1bSiAlj/w46Rw7mb4cvHys5dWDIh9fZtZc8tPWl12R1433YYaY1hyJWQ1gg6H+PdSxdlStJERESqobComDkrNvLOop95++t1bMsrpEOLepw8oDWj+raiYXrt7GqrU7bnePfK+fze6+Jib269khHDvmSvorbt57Kjk0tGzn77Nqye7SVmW9bA3CcqXuPCL2CvblENW0maiIhIlORuL+Kdhet4fvYqFqzeTIo/ieN67cvJA1vTt3UjVdfqCue8efyyfoXJE2DVF972IX+GEddHbQk4JWkiIiIxsGTdVv435yfemL+OrPxCuuxdn1MGtubEPi1pkKrqWp3hHLx4Cnz/7o5tl34FTfevdtNK0kRERGIoO7+Qt75ex/Ozf+KbtVtJS/ZxYqZXXevVqlG8w5Noyd4Ad5RaXs2fChfNqtZcb0rSREREasjCNZv53+xVvLlgHbkFRfRo2YBTBrbhhN77kpHij3d4Eg3vXQOzH97xukV37x634f8HjdtWqcKmJE1ERKSGbc0r4M35a3l+9iq++2Ub9VL8oepa930bxjs8iYaPrveWbNu0ouz28e96qyxEQEmaiIhInDjn+GqVV117Z+E68guLydyvEScPbM3xvfbVvGt1QVEhLP8YfvoMZt7jbWveFcb9D5q03+mpStJEREQSwJacAl79ag3/m7OKpb9lUT/Vz6i+rTh5YGs67VU/3uFJNMy8B6bcsOP1DVt2eriSNBERkQTinGPOio38b84q3lv0C9uLiunftjEnD2zN0T32ITVZ1bVa74Zgl/a+feHQf0CHEWEPU5ImIiKSoDZmb+eVeat5Yc5qVqzPplF6MqP7tmLcwNbs37xevMOT3fXLIphY6r60f/zmTaxbjpI0ERGRBFdc7Ji1fAPPz17FB4t/obDYcWD7JpwysA1Hdt+bgD8p3iFKVRVuh//90btf7aLZ3pqh5ShJExERqUV+25bHy3PX8MKcVazZlEunverxzqVDlajVRotegVfP9p5PWFZh/c/qJGn6bRAREalhLeqncvHwDnw6YTj/HtWLH37N4vX5a+IdluyOLsfueP786Kg2rSRNREQkTpKSjDH9WtGrVUMe+mQZhUXF8Q5Jqio5Da7bBEnJsG5+VJtWkiYiIhJHZsbFwzvw04Yc3ln4c7zDkd2RlAT79Paeb1gWvWaj1pKIiIjslsO77kXnverzwMdLKS6uXfeKS9CAc73HabdErUklaSIiInGWlGRcfGgHlv6WxQeLf4l3OLI7ev7Re1z8etSaVJImIiKSAI7tuQ/tmmVw+/vfMWv5hniHI1WVlATNu0DDVtFrMmotiYiIyG7zJRm3/KEH2duL+NMjszj50Vl8uXJjvMOSqtinN2xZDcVFUWnOH5VWREREpNoGd2jGjL8O5/nZq3j4k2WMmfgFezdIJeBPItlnJPuSSEn20Tg9mSYZAZqkB9i7YSqHdmlBe61eEH9F273HzT/tcuH1SChJExERSSCpyT7OHtKOkwe05oU5q1jy81YKi4opKHIUFBWTW1DEhqzt/PhrFhuy88krKOaWd7+l+74NOL73vow+oBXN6lVcnkhqQKejvHvSCvKi0pySNBERkQSUFvBx1pB2uzzu5y25TF70C29/vY7b3vuON+av5d3LhuJLshqIUsrwJXuPK2fAXt2q3ZzuSRMREanF9mmYxtlD2vHGxYO570+ZfPfLNl77SqsXxEWb4ILrSb6oNKckTUREpI44ofe+9G7VkLs/+oG8gujcvC5VYNGtXipJExERqSPMjGuO7srPW/K47IX5StRqOSVpIiIidcig/Ztyw/Hd+OjbXzn98TlsySmId0iym5SkiYiI1DHjB7fjP+P6sGD1Zv743y/YmqdErTZSkiYiIlIHHddrXx4f34+lv2dx/ZuL4x2O7AYlaSIiInXU0I7NuWR4B16fv5Y5K7R6QW2jJE1ERKQOu+Dg/WmQ6ufRGcs1kKCWUZImIiJSh6UFfJx6YBs+WvIrvW/8kL+9tkiDCWLNuag0oyRNRESkjvvLEZ15Ynw/TurbipfmrmbE3dP5eUtuvMOqe5KCCzktnBSd5qLSioiIiCQsX5JxaJe9+NdJPXnxvANZn5XP1G9/i3dYdU96E++x3l5RaU5JmoiIyB6kX5vGNKsXYP6qzfEOpW7aq0fUmlKSJiIisgcxMwa2b8o7C9fxweJf4h2O7IQ/3gGIiIhIzbrphO6s2ZTL+c/O46D9m3JC732pl+rHZ0ZSkpFkhi+J4KPhM8PMCPiNRukBmmYEaJCaTFJSdNeqrBOKiyBnQ1SaUpImIiKyh2laL4UXzh3IEzNX8MKc1Vzz2qIqt+FLMlrUT+H43vty6sA2tG6aHoNIa6H8rfD7t1FpSkmaiIjIHig94OeSQzty4SEdWLUxh8KiYoqco6jYUVzMjuelHrcXFrM5p4AN2dvZmJ3Pj79m8fjMFTw6YzkjurTgtEFtGdqh2Z5dYdsnE7aui0pTStJERET2YL4ko12zjN0+/+ctufxv9ipemLOKKd/OYa8GKaQH/BQVu9BPYalkD6Bdswx6tGxA930b0n3fBnTaqz6pyb5ovaX4atIOkqNTVVSSJiIiIrttn4Zp/OWIzlxyaAfeW/QL0777DQf4DHxJSfiSdjz6k5IoLC7mx1+zeHP+Op6btQoAf5IxsH0TLhnekUH7N43vG0ogStJERESk2lL8Pv7QpyV/6NMyouOLix2rN+WweN1WFq3dwivz1jDu0VkMbNeEyw/ryKD2TTHbg7tNUZImIiIicZCUZLRpmkGbphkc03MfLh/Rkf/NXsXE6cs4+dHZDGrflIdP7Uuj9EC8Q40bzZMmIiIicZea7OOsIe349K/Duf74bsz7aRPnPzuP/MI9d1F4JWkiIiKSMFKTfZw5uB13jOnF7BUbGXzbx/xr8rcs/W1bvEOrceruFBERkYRzYmZLmmQEePaLn3h85gr+++ly+rZuxD9H9qTrPg3iHV7liguhIBu2rIWGkd2fVxlV0kRERCQhDe3YnEdO78esv4/gH8d2Zc2mXEY//Dkff5/Ai8M3buc9bllT7aaUpImIiEhCa1YvhXOGtuetS4bQtlkG5zw9lyXrtsY7rPCadYxaU0rSREREpFbYu2Eqz58zkBR/Ek98tiLe4ezcyhnVbkJJmoiIiNQajdIDjOrbircWrOP3bfnxDqeiVv29x6KCajelJE1ERERqlfGD21JQXMyTiVhNS43eoAYlaSIiIlKr7N+8Hsf03IdnvviJLTnVr1glKiVpIiIiUutcMrwDWfmFPPX5yniHEl529UegKkkTERGRWqfrPg04vNte/PfTZXy1alO8w6lo2bRqN6EkTURERGqlf/6hB83rp3DGE3P4Zu2WeIezQ+N2kNG82s0oSRMREZFaqUUDb0qO+il+xj06i39N/pZlv2fFOyxo3Aas+imWkjQRERGptVo1TufF8wYxqH1THp+5ghF3TWfMxM95ee5qcrYXxju8alGSJiIiIrVa66bpPHJ6P7742wj+dnQXNmRtZ8IrCxl6+8d8sWxDvMPbbUrSREREpE5oXj+F8w/en6l/OZhJ5x1Io/RkTnt8Ns9+sRLnXLzDqzIlaSIiIlKnmBkD2zfl9YsHc3Cn5lz75mJe/HJ1vMOqMiVpIiIiUic1SE3m0dP70bd1Ix7+ZBlFxbWrmqYkTUREROqspCTjvGHtWbUxh8mLfo53OFWiJE1ERETqtMO77U2Xvevzjze+YcX67HiHEzElaSIiIlKn+ZKMR07rhy/JOPupL2vNep9K0kRERKTOa900nYmnHsBPG3OY+OmyeIcTkZgmaWZ2lJl9b2ZLzeyaMPsbmtnbZva1mS02szNjGY+IiIjsuQa0a8Lwzs15dd4aCouK4x3OLsUsSTMzH/AgcDTQDRhnZt3KHXYxsMQ51xs4BLjLzAKxiklERET2bKMP2I/ftuUz48f18Q5ll2JZSRsALHXOLXfObQdeBE4sd4wD6puZAfWAjUDtXsNBREREEtahXVrQJCPAI58uT/hlo2KZpLUESs8ctya4rbQHgK7AOmARcLlzLvHrjyIiIlIrBfxJXHFYR2at2MBx989k4ZrN8Q6pUrFM0izMtvKzyB0JLAD2BTKBB8ysQYWGzM4zs7lmNvf333+PdpwiIiKyBzl9UFv+d86B5BYUcdJDnyfsRLexTNLWAPuVet0Kr2JW2pnAa86zFFgBdCnfkHPuEedcP+dcv+bNm8csYBEREdkzDNq/Ke9dPpQjuu/F7e9/xymPzeL3bfnxDquMWCZpXwIdzaxdcDDAn4C3yh2zChgBYGZ7AZ2B5TGMSURERASARukBHjy5L/8e3YsFqzdzwgMz+WbtlniHFRKzJM05VwhcAnwAfAu85JxbbGYXmNkFwcNuBg4ys0XAVOBq51ziD7cQERGROsHM+GO//XjlgoMwYPTEz3n76/Idf/Hhj2XjzrnJwORy2yaWer4OOCKWMYiIiIjsSo+WDXnzkiFc+Nw8Ln1hPt//so0rD+9EUlK4W+xrhlYcEBEREQGa10/h+XMHMrbffjzw8VLOe3ZuXJeQUpImIiIiEpTi93HbqJ7ccHw3Pvn+d46+71O+XLkxLrEoSRMREREpxcwYP7gdr154EMn+JMb+9wvum/JjjU/ToSRNREREJIze+zXinUuHcGJmS+6Z8gPjHp3Fz1tya+z6StJEREREKlE/NZl7xmZy9x97s3jtFi587iucq5mKmpI0ERERkV04qW8r/n5sVxas3sznyzbUyDWVpImIiIhEYPQBrWhRP4UHpi2tkespSRMRERGJQIrfx3nD2vPF8g0sWhP7lQmUpImIiIhEaEjHZgCs3pQT82spSRMRERGJkFFzKxAoSRMRERFJQErSRERERBKQkjQRERGRBKQkTURERCQBKUkTERERSUBK0kREREQSkJI0ERERkQSkJE1EREQkASlJExEREYmQBeeyLSp2Mb+WkjQRERGRCO1VPxWAn7fkxvxaStJEREREItQwPZkmGQFWrM+O+bWUpImIiIhUQbtmGUrSRERERBLNfo3TWLNJ3Z0iIiIiCSUt4CO/sDjm11GSJiIiIlIFyb4kCoqUpImIiIgklIAvie2qpImIiIgkloBflTQRERGRhON1dzqKYzyhrZI0ERERkSoI+L30qaA4ttU0JWkiIiIiVRDwBZO0IlXSRERERBJGSSUt1oMHlKSJiIiIVEFyqJKmJE1EREQkYaiSJiIiIpKAUoJJWl5BUUyvoyRNREREpAoyUnwA5GxXkiYiIiKSMNKS/cBOkjRXDKtng6ve6E8laSIiIiJVsKOSVhj+gI0rvMfln1TrOkrSRERERKogPbCL7s5Rj3uPq2dX6zpK0kRERESqID1Q0t1ZSSWtaQfvccvqal1HSZqIiIhIFeyykpbRFDKagy9QresoSRMRERGpgh2VNI3uFBEREUkYAX8S/iSrvLszSpSkiYiIiFRResBHdr4qaSIiIiIJJT3gJ1fdnSIiIiKJJT3FR7a6O0VEREQSS3rAp0qaiIiISKJJD/hVSRMRERFJNKqkiYiIiCSgjICfbCVpIiIiIoklTZU0ERERkcSTEdDoThEREZGEkxbwa1koERERkUSTEfCxvbCYwqLimF1DSZqIiIhIFaUFfADkFMSumqYkTURERKSKMlL8AOTEcP1OJWkiIiIiVZReUkmL4eABJWkiIiIiVZQeCFbSYjh4QEmaiIiISBXtqKQpSRMRERFJGCUDB2I5V5qSNBEREZEqygh2d8Zy1QElaSIiIiJVVNLdmZ2vSpqIiIhIwihJ0nI1T5qIiIhI4igZ3ZmtedJEREREEkdqchJmkKuBAyIiIiKJw8xIT/aRrYEDIiIiIoklPcWvedJEREREEk16wKdloUREREQSTXpAlTQRERGRhKNKmoiIiEgC8pI0VdJEREREEkp6wEeO5kkTERERSSwZAT85BeruFBEREUkoaaqkiYiIiCSeDM2TJiIiIpJ40pJ95BYUUVzsYtK+P5KDzKwFMBjYF8gFvgHmOueKYxKViIiISILLSPEBkFtQREZKRClVley0RTMbDlwDNAHmA78BqcAfgP3N7BXgLufc1qhHJiIiIpLA0gJeGpW9vbDmkzTgGOBc59yq8jvMzA8cBxwOvBr1yEREREQSWEYgWEkLd1/a9mxY/Hq12t/pPWnOuQnhErTgvkLn3BvOuUoTNDM7ysy+N7OlZnZNJcccYmYLzGyxmU2vWvgiIiIi8ZEeTNKyw43wLMgBX0q12q/SwAEz62Bmz5vZS2aWuYtjfcCDwNFAN2CcmXUrd0wj4CHgBOdcd2BMVeIRERERiZf0YHdnbri50nr+EZLTqtV+VUd3PgxMA14A/ruLYwcAS51zy51z24EXgRPLHXMy8FpJtc4591sV4xERERGJi51W0qKgqklaU+fc486514Htuzi2JbC61Os1wW2ldQIam9knZjbPzE6vYjwiIiIicVFSSYvVXGmRTsFxUvBpIzMbiZfcNdnVaWG2lZ9IxA8cAIwA0oAvzGyWc+6Hctc/DzgPoHXr1pGELCIiIhJTJZW0nO2xWRoq0vGixwcfpwMnBJ/P2cU5a4D9Sr1uBawLc8x651w2kG1mnwK9gTJJmnPuEeARgH79+sVmxjgRERGRKkhPKUnS4lhJA/7jnPuqim1/CXQ0s3bAWuBPePeglfYm8EBwOo8AMBC4p4rXEREREalxO7o741tJewzoW5WGnXOFZnYJ8AHgA55wzi02swuC+yc65741s/eBhUAx8Jhz7puqXEdEREQkHtKSE6OS5jezxpS7z8w5t3FnJznnJgOTy22bWO71HcAdEcYhIiIikhB8SUZqclLck7TOwDzKJmkOaB/1iERERERqiYyAP+7dnUucc31iEoGIiIhILZUW8JGTIPOkiYiIiEiQV0mLb5I2KCZXFxEREanF0gI+smPU3RlpkvZ2cJ1NAMyssZl9EJOIRERERGqJjBQfuXGupDV3zm0ueeGc2wS0iElEIiIiIrVEWrKf7DgnaUVmFlqPyczaUHGJJxEREZE9ildJi+/ozv8DZprZ9ODrYQTX0hQRERHZU6UHfDGrpEWUpDnn3jezvsCBwU1/ds6tj0lEIiIiIrVEesAfs3vSIq2kARyEV0Er8U6UYxERERGpVdKDozudc5jZrk+ogojuSTOz24DLgSXBn8vN7F9RjURERESklkkP+HEO8guLo952pJW0Y4BM51wxgJk9DcwH/hb1iERERERqifSAt8h6dn4hqcEF1z0OtmdXq+2qrDjQqNTzhtW6qoiIiEgdUJKkVVh1IH8bZP9WrbYjraT9C5hvZh/jLbI+DFXRREREZA+XHvBSqQpJ2r594If3q9V2pKM7XzCzT4D+eEna1c65X6p1ZREREZFaLj2lpJJWbq60Rm2q3XZESZqZlYzq3Bx87GRmnZxzn1Y7AhEREZFaKj25ku7OKIi0u3NC8HEIMAOvmuYAJWkiIiKyx8pIqaS7Mwoi7e48HsDM5jvnToh6FCIiIiK1UFqgku7OKKjK6E7Qep0iIiIiIRmVDRyIgkjvSbsy+LRFqec45+6OekQiIiIitURaqXnSoi3Se9LqBx8fLfVcREREZI9WMk9aLNbvjPSetBujfmURERGRWi7Zl0TAl0R2HLs73ybM/WgaRCAiIiJ7uvQUH7kxGDgQaXfnncFHw+vyPCfqkYiIiIjUQunJvvhV0pxz00uem1l26dciIiIie7L0FH/87kkzs5Pwqmh9gPVRj0JERESklkoP+MiOY3fn8UAxsAY4JepRiIiIiNRS6QFfXFccOBPAzOqjCW1FREREQtIDfn7blhf1diNaccDMepjZfOAbYImZzTOzHlGPRkRERKSWiVUlLdJloR4BrnTOtXHOtQb+EtwmIiIiskdLD/jIyY9fkpbhnPu45IVz7hMgI+rRiIiIiNQy6QF/TBZYj3TgwHIzuxZ4Nvj6VGBF1KMRERERqWXi3d15FtAceC340ww4M+rRiIiIiNQyGSl+Cosd2wuLS21sXu12I62kDXbOXVbtq4mIiIjUMWnJ3iLrOdsLCfgD3sa9e1a73UgraTdV+0oiIiIidVBGSkmSFt0uz0graelm1gdv1YEQ59xXUY1GREREpJZJC3jpVLQHD0SapLUE7qJskuaAQ6MajYiIiEgtkxGIbyVtqXNOCZmIiIhIOWnBJC07ynOlRXpP2qaoXlVERESkjsgIdnfmFkS3uzOiJE1VNBEREZHw0uNRSTOzt83seDNLDrOvvZndZGZnRTUiERERkVokPSVYSavhe9LOBa4E7jWzjcDvQCrQFlgGPOCcezOqEYmIiIjUIunBedKya3J0p3PuF+CvwF/NrC2wD5AL/OCcy4lqJCIiIiK1UHqc50nDObcSWBnVq4uIiIjUcgFfEr4ki/o8aZGO7hQRERGRMMwsJousK0kTERERqab0gI+cOM2TJiIiIiKVyAj4ySmIwz1pZjYYuAFoEzzHAOecax/VaERERERqobSAj5z8+Kzd+TjwZ2AeEN00UURERKSWywj44za6c4tz7r2oXllERESkjkgL+Nicsz2qbUaapH1sZncArwH5JRudc19FNRoRERGRWigjxce6zfGppA0MPvYrtc0BWtNTRERE9nhpyXHq7nTODY/qVUVERETqkIwUX3wmszWzhmZ2t5nNDf7cZWYNoxqJiIiISC2VFvCRHafJbJ8AtgF/DP5sBZ6MaiQiIiIitVRGwM/2wmIKi4qj1mak96Tt75wbVer1jWa2IGpRiIiIiNRi6YHgIusFRTTwRWetgEhbyTWzISUvgpPb5kYlAhEREZFaLj3g1b1yo9jlGWkl7ULg6eB9aAZsBMZHLQoRERGRWqykkpYdxVUHIh3duQDobWYNgq+3Ri0CERERkVou1N1ZU5U0MzvVOfecmV1ZbjsAzrm7oxaJiIiISC1V0t1ZY0kakBF8rB+1K4qIiIjUMekpJZW0GurudM79N/h4Y9SuKCIiIlLHxKK7M9LJbP9tZg3MLNnMpprZejM7NWpRiIiIiNRiGTHo7ox0Co4jgoMFjgPWAJ2ACVGLQkRERKQWSwtEv7sz0iQtOfh4DPCCc25j1CIQERERqeViUUmLdJ60t83sO7wJbC8ys+ZAXtSiEBEREanFUpOTMIOcKM6TFlElzTl3DTAI6OecKwCygROjFoWIiIhILWZmpCf7anSetEOdc9PM7KTSQZTyWtQiEREREanF0gJ+smuwu/NgYBpwfJh9DiVpIiIiIgBkpPjIrcF50q4PPp4ZtSuKiIiI1EFpyb6oVtIinSftVjNrVOp1YzO7JWpRiIiIiNRyGSl+cuMwT9rRzrnNJS+cc5vwpuMQEREREbxVB7LjME+az8xSSl6YWRqQspPjRURERPYo6QFfVCtpkc6T9hww1cyexBswcBbwdNSiEBEREanl0gP+qFbSIkrSnHP/NrOFwGGAATc75z6IWhQiIiIitVy8KmkA3wKFzrkpZpZuZvWdc9uiFomIiIhILZYe8JGdX/OjO88FXgH+G9zUEngjalGIiIiI1HJpAT+5BUUUF7uotBfpwIGLgcHAVgDn3I9Ai6hEICIiIlIHZAR8AOQWRKeaFmmSlu+c217ywsz8eAMIdsrMjjKz781sqZlds5Pj+ptZkZmNjjAeERERkYSSHkzSorV+Z6RJ2nQz+zuQZmaHAy8Db+/sBDPzAQ8CRwPdgHFm1q2S424HNBBBREREaq30gHerf06URnhGmqRdDfwOLALOByYD/9jFOQOApc655cEq3IvAiWGOuxR4FfgtwlhEREREEk60K2m7HN1pZknAQudcD+DRKrTdElhd6vUaYGC5tlsCI4FDgf5VaFtEREQkoaSn1HAlzTlXDHxtZq2r2LaFa67c63uBq51zO005zew8M5trZnN///33KoYhIiIiEns1XkkL2gdYbGZzgOySjc65E3Zyzhpgv1KvWwHryh3TD3jRzACaAceYWaFz7o3SBznnHgEeAejXr190xrWKiIiIRFFJkubNlRauVlU1kSZpN+5G218CHc2sHbAW+BNwcukDnHPtSp6b2VPAO+UTNBEREZHaoGTgQG5BIZBc7fZ2mqSZWSpwAdABb9DA4865iDpanXOFZnYJ3qhNH/CEc26xmV0Q3D+xWpGLiIiIJJCMMpW0GCdpeIuoFwAz2DGVxuWRNu6cm4w3ErT0trDJmXNufKTtioiIiCSatJLJbGvonrRuzrmeAGb2ODAnKlcVERERqWNKujuza2h0Z0HJk0i7OUVERET2RL4kI8WfVGOVtN5mtjX43PBWHNgafO6ccw2iEoWIiIhIHZCR4o9aJW2nSZpzzheVq4iIiIjsAdKSfTW+dqeIiIiI7EJGio+cfCVpIiIiIgklLeAnp0BJmoiIiEhCyQj4yMmvobU7RURERCQy6QHdkyYiIiKScNIDfnJqaJ40EREREYmQKmkiIiIiCcirpClJExEREUkoXiWtEIerdltK0kRERESiJD3FR7GD/MLiarelJE1EREQkStKTvcWaorF+p5I0ERERkShJT/FW3IzGfWlK0kRERESiJD3gVdLyCpWkiYiIiCSMjECwkhaFVQeUpImIiIhESVpJJa1AAwdEREREEkaokqZ70kREREQSR0klLbdA3Z0iIiIiCSMjpSRJU3eniIiISMJIT/a6OzVPmoiIiEgCCXV3bld3p4iIiEjCCPiTSPaZujtFREREEk16wK9KmoiIiEiiSQ/4dE+aiIiISKJJD/jU3SkiIiKSaNIDfnI0T5qIiIhIYkkP+LTigIiIiEiiSQ/4yCtQkiYiIiKSUNJT/KqkiYiIiCSa9GRV0kREREQSToYqaSIiIiKJJ033pImIiIgknoyAj8IiV+12lKSJiIiIRFFawB+VdpSkiYiIiERRRsAXlXaUpImIiIhEUZqSNBEREZHEk6HuThEREZHEk65KmoiIiEjiSU9RJU1EREQk4aiSJiIiIpKAlKSJiIiIJKB0DRwQERERSTyqpImIiIgkoBR/EmbVb0dJmoiIiEgUmVlUujyVpImIiIhEWVpy9VMsJWkiIiIiURaNRdaVpImIiIhEWVpy9QcPKEkTERERibL0gLo7RURERBJOqro7RURERBJPuro7RURERBJPqro7RURERBJPerK6O0VEREQSjkZ3ioiIiCSgtCis36kkTURERCTKVEkTERERSUBpKUrSRERERBKO1u4UERERSUBau1NEREQkAemeNBEREZEEpCRNREREJAFpCg4RERGRBKQVB0REREQSkNbuFBEREUlA6eruFBEREUk8qX4laSIiIiIJJ8ms+m1EIQ4RERERiTIlaSIiIiIJSEmaiIiISAJSkiYiIiKSgJSkiYiIiCQgJWkiIiIi0ZacVu0mlKSJiIiIRFtqAzb7m1WrCSVpIiIiIjHwW2r7ap2vJE1EREQkBjZm7F+t82OapJnZUWb2vZktNbNrwuw/xcwWBn8+N7PesYxHREREpKa0P+6qap0fsyTNzHzAg8DRQDdgnJl1K3fYCuBg51wv4GbgkVjFIyIiIlKTWuzXoVrnx7KSNgBY6pxb7pzbDrwInFj6AOfc5865TcGXs4BWMYxHREREpNaIZZLWElhd6vWa4LbKnA28F8N4RERERGoNfwzbDrf8uwt7oNlwvCRtSCX7zwPOA2jdunW04hMRERFJWLGspK0B9iv1uhWwrvxBZtYLeAw40Tm3IVxDzrlHnHP9nHP9mjdvHpNgRURERBJJLJO0L4GOZtbOzALAn4C3Sh9gZq2B14DTnHM/xDAWERERkVolZt2dzrlCM7sE+ADwAU845xab2QXB/ROB64CmwENmBlDonOsXq5hEREREagtzLuxtYgmrX79+bu7cufEOQ0RERGSXzGze7hagtOKAiIiISAJSkiYiIiKSgJSkiYiIiCQgJWkiIiIiCUhJmoiIiEgCUpImIiIikoCUpImIiIgkICVpIiIiIglISZqIiIhIAlKSJiIiIpKAlKSJiIiIJCAlaSIiIiIJSEmaiIiISAJSkiYiIiKSgJSkiYiIiCQgJWkiIiIiCUhJmoiIiEgCUpImIiIikoCUpImIiIgkICVpIiIiIglISZqIiIhIAlKSJiIiIpKAlKSJiIiIJCAlaSIiIiIJSEmaiIiISAJSkiYiIiKSgJSkiYiIiCQgJWkiIiIiCUhJmoiIiEgCUpImIiIikoCUpImIiIgkICVpIiIiIglISZqIiIhIAlKSJiIiIpKAlKSJiIiIJCAlaSIiIiIJSEmaiIiISAJSkiYiIiKSgJSkiYiIiCQgJWkiIiIiCUhJmoiIiEgCUpImIiIikoCUpImIiIgkICVpIiIiIgnIH+8ARESipaCggDVr1pCXlxfvUERkD5OamkqrVq1ITk6OWptK0kSkzlizZg3169enbdu2mFm8wxGRPYRzjg0bNrBmzRratWsXtXbV3SkidUZeXh5NmzZVgiYiNcrMaNq0adSr+ErSRKROUYImIvEQiz97lKSJiERRvXr1Qs8nT55Mx44dWbVqFTfccAPp6en89ttvYY+tzDHHHMPmzZt3eswhhxzC3LlzK2x/6qmnuOSSSyIPvgruvPNOunTpQo8ePejduzfPPPPMTmPZHXPnzuWyyy4DID8/n8MOO4zMzEwmTZrEOeecw5IlS3a77RtuuIGWLVuSmZlJjx49eOuttyps79atGy+88EKlbdx7772h9y2Ry8/PZ+zYsXTo0IGBAweycuXKsMdNmjSJXr160b17d/7617+Gtt99991069aNXr16MWLECH766acy523dupWWLVuG/d2/9NJLw/5/9+WXX+Lz+XjllVdC2+655x66d+9Ojx49GDduXKhKdtVVVzFt2rTdeetVpiRNRCQGpk6dyqWXXsr7779P69atAWjWrBl33XVXldqZPHkyjRo1ikGEO+eco7i4OOy+iRMn8tFHHzFnzhy++eYbPv30U5xzUY+hX79+3H///QDMnz+fgoICFixYwNixY3nsscfo1q1bxG0VFRVV2PbnP/+ZBQsW8PLLL3PWWWeF3m/J9jfffJPzzz+fgoKCCucWFhbyxBNPcPLJJ+/mu9tzPf744zRu3JilS5fy5z//mauvvrrCMRs2bGDChAlMnTqVxYsX8+uvvzJ16lQA+vTpw9y5c1m4cCGjR48uk8ABXHvttRx88MEV2pw7d27Yf/AUFRVx9dVXc+SRR4a2rV27lvvvv5+5c+fyzTffUFRUxIsvvgh4id5tt91WnY8gYkrSRESibMaMGZx77rm8++677L///qHtZ511FpMmTWLjxo0VznnuuecYMGAAmZmZnH/++aGkom3btqxfvx6Am2++mS5dunD44Yczbtw47rzzztD5L7/8MgMGDKBTp07MmDEjtH316tUcddRRdO7cmRtvvDG0/e6776ZHjx706NGDe++9F4CVK1fStWtXLrroIvr27cvq1asZP348PXr0oGfPntxzzz0A3HrrrTz00EM0aNAAgIYNG3LGGWdUeE8XXngh/fr1o3v37lx//fWh7ddcc02oEnLVVVeF4i+pyg0bNgyATz75hOOOO47ffvuNU089lQULFpCZmcmyZcvKVOw+/PBDBg0aRN++fRkzZgxZWVmhz+6mm25iyJAhvPzyy5V+X127dsXv94c+5xIdO3YkPT2dTZs2VThn2rRp9O3bF7/fG3+3dOlSDjvsMHr37k3fvn1ZtmwZn3zyCcOGDWPkyJF069aNCy64oNLEF2DZsmVkZmaSmZmJz+cLPV+3bl2Z34MbbrihzHcfzlNPPUXz5s1DbTRv3pynnnoq9LlcffXVDBgwgAEDBrB06VIAfvrpJ0aMGBGqUK1atQqA8ePH065du1Bbn3/++U6vvStvvvlm6Pdl9OjRTJ06tUKSv3z5cjp16kTz5s0BOOyww3j11VcBGD58OOnp6QAceOCBrFmzJnTevHnz+PXXXzniiCPKtFdUVMSECRP497//XSGe//znP4waNYoWLVqU2V5YWEhubi6FhYXk5OSw7777AtCmTRs2bNjAL7/8Up2PISIa3SkiddKNby9mybqtUW2z274NuP747js9Jj8/nxNPPJFPPvmELl26lNlXr149zjrrLO67774yCdO3337LpEmT+Oyzz0hOTuaiiy7i+eef5/TTTw8dM3fuXF599VXmz59PYWEhffv25YADDgjtLywsZM6cOUyePJkbb7yRKVOmAISqXenp6fTv359jjz0WM+PJJ59k9uzZOOcYOHAgBx98MI0bN+b777/nySef5KGHHmLevHmsXbuWb775BoDNmzezbds2tm3bVib5rMw///lPmjRpQlFRESNGjGDhwoW0atWK119/ne+++w4zC1U2brrpJj744ANatmxZodrRokULHnvsMe68807eeeedMvvWr1/PLbfcwpQpU8jIyOD222/n7rvv5rrrrgO8aRFmzpy50zhnz55NUlJSKCEo8dVXX9GxY8cKf3kDfPbZZ2U+/1NOOYVrrrmGkSNHkpeXR3FxMatXr2bOnDksWbKENm3acNRRR/Haa68xevTosHHsv//+LFiwAPB+V0qeAyQlJVW5Wjl27FgeeOABgApdfw0aNGDOnDk888wzXHHFFbzzzjtccsklnH766Zxxxhk88cQTXHbZZbzxxhsA3HHHHZXGDTB06FC2bdtWYfudd97JYYcdVmbb2rVr2W+//QDw+/00bNiQDRs20KxZs9AxHTp04LvvvmPlypW0atWKN954g+3bt1do//HHH+foo48GoLi4mL/85S88++yzoapbiQceeIATTjiBffbZp0Isr7/+OtOmTePLL78MbW/ZsiVXXXUVrVu3Ji0tjSOOOKJM4te3b18+++wzRo0aVelnEg2qpImIRFFycjIHHXQQjz/+eNj9l112GU8//TRbt+5IIKdOncq8efPo378/mZmZTJ06leXLl5c5b+bMmZx44omkpaVRv359jj/++DL7TzrpJAAOOOCAMvf4HH744TRt2pS0tDROOukkZs6cycyZMxk5ciQZGRnUq1ePk046KVR9a9OmDQceeCAA7du3Z/ny5aFu2wYNGuCci/gG6Zdeeom+ffvSp08fFi9ezJIlS2jQoAGpqamcc845vPbaa6GKyODBgxk/fjyPPvpo2K7JysyaNYslS5YwePBgMjMzefrpp8vcozR27NhKz73nnnvIzMzkqquuYtKkSaH3dc8999C5c2cGDhzIDTfcEPbcn3/+OZTUbdu2jbVr1zJy5EjASwxL3teAAQNo3749Pp+PcePG7TJhrEyrVq2YP3/+bp0bzrhx40KPX3zxBQBffPFFqPv2tNNOq1KsM2bMYMGCBRV+yidoQNhks/zvVOPGjXn44YcZO3YsQ4cOpW3btqGqZYnnnnuOuXPnMmHCBAAeeughjjnmmFACWGLdunW8/PLLXHrppRWue8UVV3D77bfj8/nKbN+0aRNvvvkmK1asYN26dWRnZ/Pcc8+F9rdo0YJ169bt4lOpPlXSRKRO2lXFK1aSkpJ46aWXOOyww7j11lv5+9//XmZ/o0aNOPnkk3nooYdC25xznHHGGfzrX/+qtN1dVVFSUlIA8Pl8FBYWhraX/8vPzHbaVkZGRuh548aN+frrr/nggw948MEHeemll3jiiSfIyMhg+fLltG/fvtJ2VqxYwZ133smXX35J48aNGT9+PHl5efj9fubMmcPUqVN58cUXeeCBB5g2bRoTJ05k9uzZvPvuu2RmZpapIu2Mc47DDz+80hv8S7+f8v785z+HulvDbX/ttdc4/fTTWbZsGampqWWOSUtLC91IvrPPM9znvztuvfVWLrnkEv7617/yyy+/hI27KkrHUVlMVYm1KpW0Vq1asXr1alq1akVhYSFbtmyhSZMmFc49/vjjQ/8YeeSRR8okUlOmTOGf//wn06dPD/3uf/HFF8yYMYOHHnqIrKwstm/fTr169Rg6dChLly6lQ4cOAOTk5NChQweWLl3K3Llz+dOf/gR4VdnJkyfj9/spKCigXbt2oUT8pJNO4vPPP+fUU08FvOl+0tLSIv58dpcqaSIiUZaens4777zD888/H7aiduWVV/Lf//43lEyNGDGCV155JTTyc+PGjRVGrA0ZMoS3336bvLw8srKyePfddyOK5aOPPmLjxo3k5ubyxhtvMHjwYIYNG8Ybb7xBTk4O2dnZvP766wwdOrTCuevXr6e4uJhRo0Zx880389VXXwHwt7/9jYsvvjhUDdy6dSuPPPJImXO3bt1KRkYGDRs25Ndff+W9994DICsriy1btnDMMcdw7733hpKxZcuWMXDgQG666SaaNWvG6tWrI3p/Bx54IJ999lnovqqcnBx++OGHiM7dlZNOOol+/frx9NNPV9jXtWvX0DUbNGgQ6pIDr8s7JycH8LqbV6xYQXFxMZMmTWLIkCG7FcuQIUNC1akLLrhg995QKZMmTQo9Dho0CICDDjoodHP8888/X6VYq1JJO+GEE0Kf6SuvvMKhhx4aNiEs+f9h06ZNPPTQQ5xzzjmAN4jk/PPP56233irTFf3888+zatUqVq5cyZ133snpp5/ObbfdxrHHHssvv/zCypUrWblyJenp6aHvbsWKFaHto0eP5qGHHuIPf/gDrVu3ZtasWeTk5OCcY+rUqXTt2jV0rR9++IEePXpE/PnsLlXSRERioEmTJrz//vsMGzaszL024I3yHDlyZOhG/G7dunHLLbdwxBFHUFxcTHJyMg8++CBt2rQJndO/f39OOOEEevfuTZs2bejXrx8NGzbcZRxDhgzhtNNOY+nSpZx88sn069cP8G4GHzBgAADnnHMOffr0qTAVwtq1aznzzDNDN7uXVPouvPBCsrKy6N+/P8nJySQnJ/OXv/ylzLm9e/emT58+dO/enfbt2zN48GDA6xo88cQTycvLwzkX+gwmTJjAjz/+iHOOESNG0Lt3b6ZPn77L91dyQ/y4cePIz88H4JZbbqFTp067PDcS1113HSeffDLnnnsuSUk76hpHH300p512Wuj1s88+y/nnn891111HcnJyaKDCoEGDuOaaa1i0aFFoEAF4n/kFF1wQ+j5218SJEwGqnLjl5+czcOBAiouLQ1XI+++/n7POOos77riD5s2b8+STT1Z6/rp16zjnnHOYPHlylWM+++yzOe200+jQoQNNmjQJJYZAmSrq5Zdfztdffw1430PJdzphwgSysrIYM2YMAK1btw5NoRItAwcOZPTo0aHBIX369OG8884DvOXnli5dWu3vLhIWi2HTsdSvXz8XrTl4RKRu+fbbb8v8a7euycrKol69euTk5DBs2DAeeeQR+vbtG++w9lgjR47k3//+Nx07dgy7/5NPPgk72CHe2rZty9y5cyv840Ei8/rrr/PVV19x8803V9gX7s8gM5vnnNutjE7dnSIitcR5551HZmYmffv2ZdSoUUrQ4uy2227j559/jncYUsMKCwsrVI5jRZU0Eakz6nolTUQSmyppIiIiInsAJWkiIiIiCUhJmoiIiEgCUpImIiIikoCUpImIRFHJwtg9evRgzJgxoUlNa9Ibb7zBkiVLotrme++9R79+/ejatStdunQJzXgfyWLfVXHQQQeFnk+YMIHu3bszYcIEJk6cyDPPPLPb7X7yySc0bNiQPn360LVr19DaqaW3l35f4cyfPz80oarsvqeffpqOHTvSsWPHsBMFQ9nF3g855JDQIuoff/xxaKH3zMxMUlNTQ5MIT506lb59+5KZmcmQIUNCE9Zu2rSJkSNH0qtXLwYMGBBai3b16tUMHz6crl270r17d+67777Q9ceOHRu6Rtu2bcnMzARg0aJFjB8/PjYfTDjOuVr1c8ABBzgRkXCWLFkS7xBcRkZG6PnJJ5/s7rrrrojOKygoiFoMZ5xxhnv55Zejdp1Fixa59u3bu2+//TbUxoMPPuicc+766693d9xxx+4HuxP169d3eXl5u3Vu+ff58ccfu2OPPdY551xWVpbr0KGDmzt3bpntOTk5rnPnzm7mzJlh2xw9erRbsGDBbsUjng0bNrh27dq5DRs2uI0bN7p27dq5jRs3Vjhu9OjR7qmnnnLOOTd16lR36qmnhm2rcePGLjs72znnXMeOHUN/Bjz44IPujDPOcM45d9VVV7kbbrjBOefct99+6w499FDnnHPr1q1z8+bNc845t3XrVtexY0e3ePHiCte58sor3Y033hh6PWLECPfTTz+FfX/h/gwC5rrdzHlUSRMRiZGSNQOzs7M566yz6N+/P3369OHNN98E4KmnnmLMmDEcf/zxHHHEEWRlZXHmmWfSs2dPevXqxauvvgrAhx9+yKBBg+jbty9jxowhKysL8CYlvfrqqxkwYAADBgxg6dKlfP7557z11ltMmDCBzMxMli1bxiGHHMLf//53Dj74YO677z6mTp1Knz596NmzJ2eddVZopv62bdty/fXX07dvX3r27Ml3330HwL///W/+7//+jy5dugDg9/u56KKLKrzfRx99lP79+9O7d29GjRoVqiK+/PLL9OjRg969ezNs2DAAFi9ezIABA8jMzKRXr178+OOPANSrVw/wlg7Kzs5m4MCBTJo0qUzFbtmyZRx11FEccMABDB06NBTn+PHjufLKKxk+fDhXX311pd9LRkYGBxxwAMuWLSuzPS0tjczMTNauXVvhnG3btrFw4UJ69+4NUOl3Va9ePf7yl7/Qt29fRowYwe+//15pHADDhw8nMzOTevXq0blzZzIzM3nrrbcYP348r7zyCuBV+4477ridtrNy5cpQ/JmZmbRr1y5U8Rk/fjwXXHABQ4cOpVOnTqHJdfPy8kLvoU+fPnz88ceA93vZvHnzUFv333//Tq9dFR988AGHH344TZo0oXHjxhx++OG8//77FY5bsmQJI0aMALzPqOT/mdJeeeUVjj766NBi9mYWWqpsy5Yt7LvvvhXa6tKlCytXruTXX39ln332Cc01WL9+fbp27Vrhu3fO8dJLL4UWpAdvTdHSqyTEkpaFEpG66b1r4JdF0W1z755w9G0RHVpYWMh7773HUUcdxT//+U8OPfRQnnjiCTZv3syAAQNCaxp+8cUXLFy4kCZNmnD11VfTsGFDFi3y4t60aRPr16/nlltuYcqUKWRkZHD77bdz9913c9111wHeupFz5szhmWee4YorruCdd97hhBNO4LjjjmP06NGheDZv3sz06dPJy8ujY8eOTJ06lU6dOnH66afz8MMPc8UVVwDeklVfffUVDz30EHfeeSePPfYY33zzTUSTd5500kmce+65APzjH//g8ccf59JLL+Wmm27igw8+oGXLlmzevBnwljO6/PLLOeWUU9i+fTtFRUVl2nrrrbeoV69eaImgG264IbTvvPPOY+LEiXTs2JHZs2dz0UUXMW3aNMBbU3HKlCllFuMub8OGDcyaNYtrr722TBK1adMmfvzxx1AiWdrcuXPLrNV48803V/iuALKzs+nbty933XUXN910EzfeeCMPPPBApbGUJEaHHHIId955Z2ipoTfeeGOnC7eHs//++4c+r1deeaXMSgcrV65k+vTpLFu2jOHDh7N06VIefPBBwOvC++677zjiiCNC656OHTt2p3GXdscdd/D8889X2D5s2LAKCd7atWvZb7/9Qq9btWoVNinu3bs3r776Kpdffjmvv/4627ZtY8OGDTRt2jR0zIsvvsiVV14Zev3YY49xzDHHkJaWRoMGDZg1a1aorddee40hQ4YwZ84cfvrpJ9asWcNee+1V5vOZP38+AwcOLBPHjBkz2GuvvcqsKtGvXz9uu+02/vrXv0b0+VSHKmkiIlGUm5tLZmYm/fr1o3Xr1px99tl8+OGH3HbbbWRmZnLIIYeQl5fHqlWrAEJVBYApU6Zw8cUXh9pq3Lgxs2bNYsmSJQwePJjMzEyefvrpMouvl/wLf9y4cXzxxReVxjV27FgAvv/+e9q1axdaB/GMM87g008/DR130kknAXDAAQdUWMtzV7755huGDh1Kz549ef7551m8eDEAgwcPZvz48Tz66KOhZGzQoEHceuut3H777fz000+kpaVFdI2srCw+//xzxowZQ2ZmJueff36ZWf/HjBlTaYI2Y8YM+vTpwxFHHME111xD9+7dQ9t79erF3nvvzXHHHcfee+9d4dyff/6Z5s2bh16H+64AkpKSQp/1qaeeysyZMyN6X+W1atWK+fPn79a54fzxj38kKSmJjh070r59e7777jtmzpwZWn+0S5cutGnTZrcWp58wYULYxdXDVeDCJZ7hFle/8847mT59On369GH69Om0bNkSv39HXennn39m0aJFHHnkkaFt99xzD5MnT2bNmjWceeaZoQTummuuYdOmTWRmZvKf//yHPn36lGkrKyuLUaNGce+999KgQYMycbzwwgtlqmgALVq0YN26dRF+OtWjSpqI1E0RVryiLS0tLVTNKOGc49VXX6Vz585lts+ePZuMjIwyx5X/C8s5x+GHHx5aBLu80seH+8uuRMl1dlWdSUlJAbwBEIWFhQB0796defPmhbr6KjN+/HjeeOMNevfuzVNPPcUnn3wCeFWz2bNn8+6774YW0D755JMZOHAg7777LkceeSSPPfYYhx566E7bByguLqZRo0YVPuPy7zOcoUOHhl1Hs2T7Dz/8wJAhQxg5cmToRvESaWlp5OXlhV6H+67CieSYcC666CJOOeUUevXqRU5OTqireXeVj8PMqlypq0xVKmmtWrUK/V4ArFmzhkMOOaTCufvuuy+vvfYa4CVRr776Kg0bNgztf+mllxg5ciTJyckA/P7773z99dehStjYsWM56qijAK/aXLJYvHOOdu3a0a5dO8BbLH3UqFGccsopoX+glCgsLOS1115j3rx5Zbbn5eVF/I+K6lIlTUQkxo488kj+85//hP5SrKxCcsQRR5TpYtq0aRMHHnggn332WWikWk5OTplqx6RJk0KPgwYNArz7a7Zt2xb2GiX35JS09+yzz3LwwQfvNP4JEyZw6623hq5bXFzM3XffXeG4bdu2sc8++1BQUFDmL+1ly5YxcOBAbrrpJpo1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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=(10,8))\n",
+ "\n",
+ "# K соседей\n",
+ "precision, recall, thresholds = precision_recall_curve(y_test, probas_knn[:,1])\n",
+ "aps_knn1 = average_precision_score(y_test,probas_knn[:,1])\n",
+ "plt.plot(recall, precision, label='KNeighborsClassifier PR (ср. тч. прог.= %f)' % (aps_knn1)) \n",
+ "\n",
+ "# Персептрон\n",
+ "precision, recall, thresholds = precision_recall_curve(y_test, probas_slf[:,1])\n",
+ "aps_ptron1 = average_precision_score(y_test,probas_slf[:,1])\n",
+ "plt.plot(recall, precision, label='PerceptronClassifier PR (ср. тч. прог. = %f)' % (aps_ptron1)) \n",
+ "\n",
+ "# вывод графика\n",
+ "plt.xlabel('Recall (полнота)')\n",
+ "plt.ylabel('Precision (точность)')\n",
+ "plt.xlim([0.0, 1.0])\n",
+ "plt.ylim([0.0, 1.0])\n",
+ "plt.legend(loc=4, fontsize='medium')\n",
+ "plt.title('Occupancy = 1')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ROC графики"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 176,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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IiIi5wnKTMfd3KnJbC/Vddddxz333MOSJUuoUKFCoMMRERGRVARtkqbmzoxZsWIFjz/+ONZaqlWrxrvvvktkZGSgwxIREZGLCMpMx1o0cMBH1lo+/PBDWrZsyddff82///4b6JBERETEB0Gb6aiSlr64uDiGDh3KHXfcQbt27YiJiaFUqVKBDktERER8ELSZjgYOpM1aS+fOnZk0aRLPPvsss2bNonjx4oEOS0RERHwUlMtCgSpp6THG8Nhjj/HII49oeg0REZEgFLRJmvqkXcjpdPLcc89RuHBhHn74YW688cZAhyQiIiKXKGgzHTV3nuvo0aPcdNNNPPfcc2zcuBFrbaBDEhERkcsQvJU0NXd6rVq1ip49e7Jv3z4mTJjA8OHDMUbzyImIiASzoE3SVElzO3ToEK1ataJ48eIsXryYRo0aBTokERERyQTBm6SF5e5KkcvlIiQkhFKlSjFx4kTatWtHiRIlAh2WiIiIZJKgLUfl5oEDO3fupGnTpvz4448A3HLLLUrQREREcpigzXRya3Pn3LlzadCgAZs3b8bpdAY6HBEREfGToM10ctvAAZfLxfPPP8+NN95I2bJlWblypeY/ExERycGCNtPJbZW077//nmeeeYYBAwawbNkyqlSpEuiQRERExI+CeOBA7kjSzpw5Q758+ejWrRtz5szhhhtu0PQaIiIiuUDQZjq5oZL22WefUalSJbZs2YIxho4dOypBExERySWCNtPJyX3SEhISuOuuuxg8eDA1atSgSJEigQ5JREREsljQZjo5tZL2zz//cO211zJhwgRGjBjBTz/9RKlSpQIdloiIiGSx4O2TlkOTtNdff51Nmzbx7bff0qNHj0CHIyIiIgEStJlOTho44HK5OHjwIAAvvfQSMTExStBERERyuaDNdMJDc0YH+uPHj9O9e3datWrF6dOnyZs3r6bXEBERkSBt7jQQGhL8SdratWvp0aMHu3bt4vXXXydfvnyBDklERESyiaCspIUaE/RTUXz++ec0bdqUM2fOsHDhQu6///6gf00iIiKSeYIzSQvyKprT6WT8+PE0atSIVatW0aJFi0CHJCIiItlMUDZ3BmuStmfPHvLmzUvx4sX53//+R+HChQkPDw90WCIiIpINKUnLIgsWLKBPnz60bt2aadOmUaJEiUCHJJLtJSUlsWfPHuLj4wMdiohImiIjI4mKisrU4ouSND+z1vLqq6/yxBNPULVqVZ577rlAhyQSNPbs2UPBggWpUKGC+myKSLZlreXIkSPs2bOHihUrZtp5g7JPWkiQ/LI+efIkvXr1YsSIEfTs2ZM//viD6tWrBzoskaARHx9P8eLFlaCJSLZmjKF48eKZXvUPyiQtWCppcXFxxMTE8PrrrzN16lQKFiwY6JBEgo4SNBEJBv74XaUkzQ/mzZuHw+HgiiuuYNOmTTz88MP6ohEJUgUKFPD+PHv2bKpUqcLu3bsZPXo0+fLl49ChQ6keezGdOnXi+PHjaR7Tpk0bVq5cecH2SZMmce+99/oefAa89tprVKtWjVq1alG3bl0mT56cZiyXYuXKldx///0AJCQk0L59e6Kjo5k6dSrDhg1j48aNl3zu0aNHU7ZsWaKjo6lRowZTpkzx7rPW8sILL1ClShWuueYa2rZty4YNG7z7T506xR133MHVV19NzZo1ufbaa/njjz8uuIa1lnbt2nHy5MlLjlPg77//pkmTJlSpUoU+ffqQmJiY6nEjRoygVq1a1KpVi6lTp3q3t2rViujoaKKjo7nyyiu5+eabAThx4gRdunShbt261KxZk4kTJwKwefNm7/HR0dEUKlSIt956C4Bp06ZRs2ZNQkJCzvn/PCkpiUGDBlG7dm2qV6/OSy+95N3Xvn17jh07lsnvSuqUpGWipKQkHnzwQa6//no++OADAPLmzRvgqEQkM/zyyy/cd999/Pjjj5QvXx6AEiVK8Prrr2foPLNnz6ZIkSJ+iDBt1lpcLleq+yZMmMC8efNYvnw569ev57fffsNam+kxNGzYkLfffhuAP//8k6SkJFavXk2fPn34+OOPqVGjhs/ncjqdF2x76KGHWL16Nd999x133HEHSUlJAIwfP56lS5eyZs0atmzZwhNPPEHXrl29TVPDhg2jWLFibN26lQ0bNjBp0iQOHz58wflnz55N3bp1KVSo0KW8fPEYMWIEDz30EFu3bqVo0aJ88sknFxzzww8/sGrVKlavXs0ff/zBq6++6k2OFy1axOrVq1m9ejXNmjXzLqM4fvx4atSowZo1a1i4cCGPPPIIiYmJVK1a1Xt8TEwM+fLlo3v37gDUqlWL6dOnc+21155z/WnTppGQkMC6deuIiYnhgw8+YOfOnQDcdtttvPfee358h84KziQtG1al9u/fT9u2bRk3bhwPPvggw4cPD3RIIpJJFi1axO23384PP/zA1Vdf7d0+dOhQpk6dytGjRy94zueff07jxo2Jjo7mjjvu8CYVFSpU8CYAzz//PNWqVaNDhw7069eP1157zfv8adOm0bhxY6655hoWLVrk3f7PP//QsWNHqlatypgxY7zb33jjDW/VIblKsHPnTqpXr87dd99N/fr1+eeffxg8eDC1atWidu3avPnmmwC8+OKLvPfee97ko3DhwgwaNOiC13TXXXfRsGFDatasybPPPuvdPnLkSGrUqEGdOnV49NFHvfEnV+WSvwAXLlzITTfdxKFDh7j11ltZvXo10dHRbN++/ZyK3U8//USzZs2oX78+vXv35tSpU9737rnnnqNly5ZMmzbtop9XlSpVyJcvn7faMXbsWN555x3vqi7XX389zZs354svvmD79u388ccfvPDCC4SEuL8SK1WqROfOnS847xdffEG3bt28jydPnkydOnWoW7cut912GwCDBw/mzjvvpFWrVlxzzTXMmjXronECvPnmm0RHR1O+fHlKlixJdHQ0w4YN875XyVL+f3Mxbdq0oWrVqt6KUWhoqPd9v/baa+nevTs1atTgzjvv9CbsU6ZMoXbt2tSqVYsRI0Z4zxUaGuo9T/v27dO8bkZYa5k/fz69evUCYNCgQcycOfOC4zZu3Ejr1q0JCwsjf/781K1blx9//PGcY2JjY5k/f763kmaMITY2Fmstp06dolixYoSFnTs+8pdffuHqq6/mqquuAqB69epUrVr1gusbYzh9+jQOh4O4uDgiIiK8/z66du16TqXWnzS6MxMsXbqUHj16EBsby5QpU+jbt2+gQxLJccb8bwMb92VuM1ONKwvxbJeaaR6TkJBAt27dWLhwIdWqVTtnX4ECBRg6dCjjxo07J2HatGkTU6dOZcmSJYSHh3P33XfzxRdfMHDgQO8xK1eu5Ntvv+XPP//E4XBQv359GjRo4N3vcDhYvnw5s2fPZsyYMfz8888A3mpXvnz5aNSoEZ07d8YYw8SJE/njjz+w1tKkSRNat25N0aJF2bx5MxMnTuS9994jJiaGvXv3sn79esC9dnBsbCyxsbHnJJ8X83//938UK1YMp9PJddddx9q1a4mKimLGjBn89ddfGGO8TbnPPfccc+fOpWzZshc075YqVYqPP/6Y11577YIk5vDhw7zw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wgsvcP311+NyuQgPD2f8+PHezsoAjRo1omvXrtStW5errrqKhg0bUrhw4XTjaNmyJbfddhvbtm2jf//+3v5HgwcP9lYMhg0bRr169c5pJgXYu3cvQ4YM8XYaT6703XXXXZw6dYpGjRoRHh5OeHj4Oc234O4jVK9ePWrWrEmlSpW8zZGxsbF069aN+Ph4rLXe9+Cxxx5j69atWGu57rrrqFu3Lr/++mu6r69kyZJMmjSJfv36kZCQALiTlWuuuSbd56b0zDPP0L9/f26//Xbuu+8+jh07Ru3atQkNDaV06dJ899133krIxx9/zCOPPELlypXJly8fxYsX59VXX73gnJ07d2bhwoVUrlyZmjVrMmrUKFq3bk1oaCj16tVj0qRJgDtpad26NQcPHmTChAlERkayb98+hg0bxuzZszP0OlLTqVMnPv744wwlbs2aNWPkyJGsW7fOO4ggJCSEl156ibZt22KtpVOnTqkmTMkmTJgAwJ133nlZ8Y8dO5a+ffvy1FNPUa9ePf7zn/8A7n6aEyZM4OOPPyYpKcn7h0ahQoX4/PPPz2nu/Oqrrxg5cuQ553366acZPHgwtWvXxlrL2LFjvf9Wz5w5w7x587x9CpPNmDGD++67j3///ZfOnTsTHR3N3LlzueeeexgyZAi1atXCWsuQIUOoU6cOADExMTRt2vSC5le/sNYG1a1BmRD78/sP2kB46qmnLGCbNm1q//nnn4DEIJKbbNy4MdAh+FVsbKy11trTp0/bBg0a2JiYmABHJGnZt2+fbd++fZrHDBo0yE6bNi2LIvLNggULbOfOnQMdRo5x//33259//jnVfan9zgJW2kvMeYKyjS5QfdJq1qzJPffcw6+//kpUVFRAYhCRnGP48OFER0dTv359evbsSf369QMdkqShTJky3H777ZrMNperVasW1113XZZcy1g/TFjoTw2vDLVvjnmQVrdnbALJS7VkyRJ27tzJgAEDsuR6InLWpk2b1KVARIJGar+zjDEx1tqGl3K+4KykZcHAAWst48aNo02bNrz00kvnjK4SERER8bfgTNL83Nx56tQp+vfvz4MPPkinTp1YvHhx1nQQFBEREfEIyswjxI+VtLi4OJo1a8bGjRt58cUXGTFihKbXEBERkSwXlEmaP5s78+bNS//+/WnUqFGmrlcmIiIikhHBWSIKy5Opp3M4HDzxxBPe9eCeeOIJJWgiApxdaLpWrVr07t2bM2fOZHkMM2fOZOPGjZl6zjlz5tCwYUOqV69OtWrVvAujjx49+pyF3i9X8+bNvT8/9thj1KxZk8cee4wJEyYwefLkSz7vwoULKVy4MPXq1Tsn/mQzZ86kTp06VKtWjdq1a1+wiPdrr71GtWrVvIvAXyyWBx98kN9+++2S4xT3+rd9+vShcuXKNGnS5IL5+5JNnTqVOnXqULNmTR5//HHv9l27dnHddddRp04d2rRpw549e8553smTJylbtiz33nuvd5u1llGjRnHNNddQvXp13n77bQBOnDhBly5dqFu3LjVr1mTixIne5xw/fpxevXpRrVo1qlevzrJlywB49NFHmT9/fma9HRlzqXN3BOrWoEyIXTX1hfQnMvHRwYMHbdu2bS1gR40alWnnFZHLlx3mScufP7/35/79+9vXX3/dp+clJSVlWgxpzb11KddZt26drVSpkt20aZP3HOPHj7fWWvvss8/aV1999dKDTUPBggVtfHz8JT33/NeZcu6vM2fO2KpVq9rFixdba61dvXq1vfrqq+2OHTustdbu2LHDXn311XbNmjXWWmvff/99e/3119sTJ05Ya609fvy4nTRp0gXXPHLkiG3SpMklxStnjR8/3t5xxx3WWmunTJlib7nllguOOXz4sC1Xrpw9dOiQtdbagQMHeuci69Wrl/fz+eWXX+ytt956znPvv/9+269fP3vPPfd4t3366af2tttus06n01rr/q631tr/+7//s48//ri11tpDhw7ZokWL2oSEBO81P/roI2uttQkJCfbYsWPWWmt37txpO3To4NNr1TxpgMmkStqyZcuoX78+y5YtY9KkSbzwwguZcl4RyZlatWrFtm3bOH36NEOHDqVRo0bUq1fPu4TQpEmT6N27N126dPEuXj5kyBBq165NnTp1+PbbbwH46aefaNasGfXr16d3796cOnUKgAoVKjBixAgaN25M48aN2bZtG0uXLuX777/nscceIzo6mu3bt9OmTRuefPJJWrduzbhx4/jll1+oV68etWvXZujQod6Z+itUqMCzzz5L/fr1qV27Nn/99RcAr7zyCqNGjfIucxMWFsbdd999wev96KOPaNSoEXXr1qVnz57eKuK0adO8Fahrr70WgA0bNtC4cWOio6OpU6cOW7duBaBAgQIAdO3aldOnT9OkSROmTp16TsVu+/btdOzYkQYNGtCqVStvnIMHD+bhhx+mbdu2jBgx4qKfS968eYmOjmbv3r2Au0r25JNPUrFiRQAqVqzIE0884V1F4MUXX+S9997zLrxduHBhBg0adMF5v/nmGzp27Oh9nLzgd926dWncuDGxsbFMmjSJbt260bFjR6pWrcqYMWMuGifAokWLiI6OpkaNGt64kxdfT36vkl978tJJFzN69GjKli3rPUfhwoVZuHCh91yPPPII9evX57rrruPff/8FYPXq1TRt2pQ6derQvXt3jh07BkCbNm2oWrWq91wXq3Zdiu+++877/vbq1YtffvnlgnVDd+zYwTXXXONd7L19+/befy8bN270zkvWtm3bc5bsiomJ4eDBg+csGQXw/vvv88wzz3j7lJcqVQpwL0sVGxuLtZZTp05RrFgxwsLCOHnyJL/99pt39YOIiAjvklZXXXUVR44c4cCBA5n2nvgqKPukZUaStnLlSlq3bk1UVBTLli3z/iMRkWxqzkg4sC5zz1m6Ntz4sk+HOhwO5syZQ8eOHfm///s/2rVrx6effsrx48dp3Lixt4vEsmXLWLt2LcWKFWPEiBEULlyYdevccR87dozDhw/zwgsv8PPPP5M/f37Gjh3LG2+8wTPPPAO4l8BZvnw5kydP5sEHH2TWrFl07dqVm266iV69ennjOX78OL/++ivx8fFUqVKFX375hWuuuYaBAwfy/vvv8+CDDwLuJatWrVrFe++9x2uvvcbHH3/M+vXrL1j2KTU9evTg9ttvB+Cpp57ik08+4b777uO5555j7ty5lC1bluPHjwPuJYMeeOABBgwYQGJiIk6n85xzff/99xQoUMC7tufo0aO9+4YPH86ECROoUqUKf/zxB3fffbe3eWnLli38/PPPhIaGXjTOY8eOsXXr1nMSxvObPxs2bMj48eOJjY0lNjaWq6++Ot3Xv2TJEu97npiYSJ8+fZg6dSqNGjXi5MmT3mWlli9fzvr168mXLx+NGjWic+fO3uW6zteqVStWr17Nzp07uemmm3xeeP5ikheVB7jpppu820+fPk39+vV5/fXXee655xgzZgzvvvsuAwcO5J133qF169Y888wzjBkzhrfeeguAL7744qJxp/Y6YmNjL9j+2muvXdBdaO/evZQrVw5w/0FQuHBhjhw5cs7yapUrV+avv/5i586dREVFMXPmTBITEwH3kmTffvstDzzwADNmzCA2NpYjR45QtGhRHnnkEf773/961+xMtn37dqZOncqMGTMoWbIkb7/9NlWqVOHee++la9euXHnllcTGxjJ16lRCQkLYsWMHJUuWZMiQIaxZs4YGDRowbtw48ufPD0D9+vVZsmQJPXv29On9ySy5tpJWv359nn32WWJiYpSgichFxcXFER0dTcOGDSlfvjz/+c9/+Omnn3j55ZeJjo6mTZs2xMfHs3v3bgA6dOhAsWLFAPdC3vfcc4/3XEWLFuX3339n48aNtGjRgujoaD777LNzFl9PXgC6X79+3j4xqenTpw8AmzdvpmLFit61LQcNGnROH6oePXoA0KBBgwxXR9avX0+rVq2oXbs2X3zxBRs2bACgRYsWDB48mI8++sibjDVr1owXX3yRsWPHsmvXLm8Ck55Tp06xdOlSevfuTXR0NHfccQf79+/37u/du/dFE7RFixZRp04dSpcuzU033UTp0qUBdzcec95UTcnbUtt3Mfv37/dWdjZv3kyZMmVo1KgR4E6mk6dm6tChA8WLFydv3rz06NHD2785o4oVK5bhxeQvJiQkxPv/yK233srixYs5ceIEx48f9y6ifv7/KxmxaNGiVBdUT60/9/lVM+CCz6Bo0aK8//779OnTh1atWlGhQgXv+/vaa6/x66+/Uq9ePX799VfKli1LWFgY7733Hp06dfImgCklJCQQGRnJypUruf322xk6dCgAc+fOJTo6mn379rF69WruvfdeTp48icPhYNWqVdx11138+eef5M+fn5dfPvsHXKlSpdi3b98lvVeXIygraSHhl5akbdu2jTvvvJOJEydSrlw5Ro0alcmRiYjf+Fjxymx58+a9oNphreXbb7+latWq52z/448/vH95Jx+XWrLQoUMHpkyZkur1Uh6fVjKRfJ3UvgBTypPH/fsyNDTUOyl3zZo1iYmJoW7dumk+d/DgwcycOZO6desyadIkb1PahAkT+OOPP/jhhx+Ijo5m9erV9O/fnyZNmvDDDz9www038PHHH9OuXbs0zw/gcrkoUqTIRStKKd/P87Vq1YpZs2axZcsWWrZsSffu3YmOjqZmzZqsXLnSuyA2wKpVq6hRowaFChUif/787Nixg0qVKqUZW968eYmPjwdS/yyTnb/d1yTwfG+99RY9evQgLCyM3bt3n1MZu1yXGtPFZKSSFhUVxT///ENUVBQOh4MTJ054/5BJqUuXLnTp0gWADz/80JucX3nllUyfPh1wJ/XffvsthQsXZtmyZSxatIj33nuPU6dOkZiYSIECBXj55ZeJioryVr26d+/OkCFDAJg4cSIjR47EGEPlypWpWLEif/31F+XLlycqKoomTZoA7mbZlElafHy8z394ZKagrKSFhmf8jfr+++9p2LAhf/755zl/tYqIZNQNN9zAO++8402Q/vzzz1SPu/7663n33Xe9j48dO0bTpk1ZsmQJ27ZtA+DMmTPnVE+mTp3qvW/WrBkABQsWTPULEaBatWrs3LnTe77//ve/3krJxTz22GO8+OKL3uu6XC7eeOONC46LjY2lTJkyJCUl8cUXX3i3b9++nSZNmvDcc89RokQJ/vnnH2/Sc//999O1a1fWrl2bZgzJChUqRMWKFZk2bRrgTobWrFnj03OTXXPNNTzxxBOMHTsWcI/Ge+mll7yVw507d/Liiy96m3ifeOIJ7rnnHu8anCdPnuTDDz+84LzVq1f3vq/VqlVj3759rFixwvveJCe98+bN4+jRo8TFxTFz5kxatGiRofiT9ejRg/Xr17N69Wq6du16SedI5nK5vH3avvzyS1q2bEnhwoUpWrQoixYtAnz7f+ViMlJJ69q1K5999hng7ufXrl27VJPGQ4cOAe5/J++99x7Dhg0D4PDhw7hcLgBeeuklb1Xsiy++YPfu3ezcuZPXXnuNgQMHehOrm2++2dtk/uuvv3orzeXLl/c2jR48eJDNmzdTqVIlSpcuTbly5di8eTMAv/zyCzVq1PDGtmXLFmrVqnVJ79XlCMokLSTC90qa0+lk1KhRdOvWjcqVKxMTE0PLli39GJ2I5HRPP/00SUlJ1KlTh1q1avH000+netxTTz3FsWPHvJ3sFyxYQMmSJZk0aRL9+vWjTp06NG3a1NtRHtzNNE2aNGHcuHG8+eabAPTt25dXX32VevXqsX379nOuERkZycSJE+nduze1a9cmJCSEO++8M83469Spw1tvvUW/fv2oXr06tWrVOqeJMdnzzz9PkyZN6NChg3eQAbiTvNq1a1OrVi2uvfZa6taty9SpU6lVqxbR0dH89ddfDBw40Of384svvuCTTz7xTouQsmO4r+68805+++03/v77b6Kjoxk7dixdunSh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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#TPR тоже самое что и Precision, те точноть\n",
+ "plt.figure(figsize=(10,8))\n",
+ "\n",
+ "# K соседей\n",
+ "tpr, fpr, thresholds = roc_curve(y_test, probas_knn[:,0])\n",
+ "roc_auc = auc(fpr, tpr)\n",
+ "plt.plot(fpr, tpr, label='KNeighborsClassifier ROC (ср. тч. прог. = %f)' % (roc_auc)) \n",
+ "\n",
+ "# Персептрон\n",
+ "tpr, fpr, thresholds = roc_curve(y_test, probas_slf[:,0])\n",
+ "roc_auc = auc(fpr, tpr)\n",
+ "plt.plot(fpr, tpr, label='PerceptronClassifier ROC (ср. тч. прог. = %f)' % (roc_auc)) \n",
+ "\n",
+ "# вывод графика\n",
+ "plt.plot([0, 1], [0, 1], 'k--')\n",
+ "plt.xlim([0.0, 1.0])\n",
+ "plt.ylim([0.0, 1.0])\n",
+ "plt.xlabel('False Positive Rate')\n",
+ "plt.ylabel('True Positive Rate (Precision / Точность)')\n",
+ "plt.legend(loc=4, fontsize='medium')\n",
+ "plt.title('Occupancy = 0')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 177,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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CoQGsrD0JFrUkiaSQ23cuJEOHTpw+vRpvvrqK/r16+d0SSIiWS69lJMXKIwnzBVJ9nEK6BPY0lLjaUpzubXigEhOVblyZdq2bcuqVasU0EQk10qzJc1a+wvwizFmirV2dxbV5JdEtyVUY1NEcozo6GieffZZxo4dS9GiRfnqq6+cLklExFH+3t151hjzKlALyJ+00VrbPiBV+SHRhhAaqpAmkhNs3ryZXr16sXXrVtq2bUv37t2dLklExHH+Dur6AvgTqASMA3YBqwNUk18S3W7CFNJEgt6MGTNo0qQJx44d4+eff1ZAExHx8jeklbLWfgIkWGt/sdYOB5oFsK40eMakeabgUEgTCWbvvfcet9xyC3Xq1CEqKop27do5XZKISLbhb3dngvfxoDGmK3AAqBCYktKRNAWHhYIakyYS1Lp3787evXsZN24cefPmdbocEZFsxd+WtBeMMcWAR4BHgY+BBwNVlD8S3VYtaSJBaNmyZQwfPhy3202FChV46aWXFNBERFLgV0iz1s611p601m6w1raz1jYEjgW4tjQluo3GpIkEEWstEyZMoF27dixdupRDhw45XZKISLaWZkgzxoQaYwYYYx41xtT2brvJGLMCeDdLKjxfYoznwQ0h6u4UCQqnT59mwIABPPjgg3Tt2pWIiAguv/xyp8sSEcnW0huT9glwJbAKeNsYsxtoDoy21s4OcG0piz8D5CHWhmoyW5Eg0atXLxYuXMiLL77IqFGjCNFqISIi6UovpDUC6lpr3caY/MARoIq19u/Al5aKkDAofBnxiSFaFkokm7PWYoxh7NixPP7443Ts2NHpkkREgkZ6IS3eWusGsNbGGmO2OhrQABJi4Yr6uHZZLbAukk0lJiby5JNPYoxh/PjxtGjRwumSRESCTnoxp7oxZp33Y32y5+uNMeuyosALGCD2JC5r1ZImkg0dOnSITp068eqrrxIdHY211umSRESCUnotaTWypIqMcLugfENc+63GpIlkMytXrqRv374cPXqUzz77jMGDBztdkohI0EpvgfVstai6T9wpEl1uzZMmko0cP36cG264gTJlyrBy5UrCw8OdLklEJKj5u+JA9lK6Gm6LQppINpCQkECePHkoUaKEbx3OEiVKOF2WiEjQC85BXSbEs8C6QpqIo7Zt20bDhg354osvALjhhhsU0EREMonfIc0YU8AY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RERykIv6s99aGwU0zuRa/JboVnenOCs6OppXX32Vzp07ExERQb169ZwuSUREchh/x6Q9nOxpCNAA+CcgFfnBbdXdKc7YuXMnV155JUWLFmXFihVcfvnl6uIUEZGA8Pe3S5FkH/nwjFHrEaii0pPoslpgXbLc7NmzqV+/Ps8++ywA5cuXV0ATEZGASbclzTuJbWFr7WNZUI9fXG5LqMakSRZJTEzk6aef5uWXX6ZRo0bcddddTpckIiK5QJohzRgTZq1NNMY0yKqC/OGylnzq7pQs8M8//zBgwAAWLlzIiBEjmDBhAvnz53e6LBERyQXSa0lbhWf82RpjzBxgBnAm6UVr7cwA1paqRLeloEKaZIG///6bP/74g08//ZRhw4Y5XY6IiOQi/s6TVhI4CrTn3/nSLOBISNMC6xJI1lqWLFlCu3btqFOnDrt27aJIkSJOlyUiIrlMeqOey3rv7NwArPc+bvQ+bghwbalyuSFEIU0C4OzZswwdOpT27dszf/58AAU0ERFxRHotaaFAYTwtZ+ezmV+Of9SSJoGwY8cOevXqxfr16xk3bhw33HCD0yWJiEgull5IO2itfS5LKskALbAume37779n0KBBhISE8P3333PjjTc6XZKIiORy6YW0bJmEXAppksliY2O55ppr+Oabb6hUqZLT5YiIiKQ7Jq1DllSRQQppkhmOHDnCnDlzAOjduzerVq1SQBMRkWwjzZY0a+2xrCokI1xuqzFpcklWr15Nnz59OHbsGLt27aJUqVKEhoY6XZaIiIhPUK5p4xmTFpSli8OstXz00Ue0atUKgMWLF1OqVCmHqxIREblQUCYdlxtCg7JycZK1lhEjRjBixAjatm1LZGQkjRo1crosERGRFAVl1El0a4F1yThjDBUqVODpp59m3rx5lC5d2umSREREUuXvigPZisvqxgHx3/z58ylQoABt27bl2WefdbocERERvwRlc5Tu7hR/uN1uxo4dS9euXXnxxRedLkdERCRDgrMlTSFN0nHs2DFuvfVW5s+fz5AhQ3jvvfecLklERCRDgjKkJWpZKEnDwYMHadGiBfv372fSpEmMGDECY/T/i4iIBJegDGluCyH6pSupKFeuHF26dGHw4ME0bdrU6XJEREQuSlCOSbMYtaTJOWJjY3n44Yf566+/MMYwceJEBTQREQlqQRnSAEJDFdLEY/fu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a1OvXj2mTp2aZi0XIyIigvvvvx+AuLg4OnbsSHh4ONOnT+f2229n06ZNF33usWPHUr58ecLDw6lZsybTpk3zvWat5YUXXqBq1apce+21tGvXjo0bN/peP336NHfeeSfXXHMNtWrV4rrrruP333+/4BrWWtq3b8+pU6cuuk6Bv/76i6ZNm1K1alX69etHfHx8ivuNGjWK2rVrU7t2baZPn+7b3rp1a8LDwwkPD+eKK67g5ptvBuDkyZN069aNevXqUatWLSZPngzAli1bfPuHh4dTtGhR3nrrLQBmzJhBrVq1CAkJOef/84SEBIYMGUKdOnWoUaMGL730ku+1jh07cvz48Uz+rqQsKENadu3uTEhI4MEHH+T666/ngw8+AKBAgQIOVyUimWHhwoXcd999/PDDD1SsWBGA0qVL8/rrr2foPPPmzaN48eIBqDBt1lrcbneKr02aNImffvqJVatWsWHDBn799VestZleQ6NGjXj77bcB+OOPP0hISGDNmjX069ePjz/+mJo1a/p9LpfLdcG2hx56iDVr1vDdd99x5513kpCQAMDEiRNZsWIFa9euZevWrTzxxBN0797d1zV1++23U7JkSbZt28bGjRuZMmUKR44cueD88+bNo169ehQtWvRivnzxGjVqFA899BDbtm2jRIkSfPLJJxfs8/333xMVFcWaNWv4/fffefXVV33heOnSpaxZs4Y1a9bQvHlz3zKKEydOpGbNmqxdu5YlS5bwyCOPEB8fT7Vq1Xz7R0ZGUrBgQXr27AlA7dq1mTlzJtddd905158xYwZxcXGsX7+eyMhIPvjgA3bt2gXAbbfdxnvvvRfA79C/gjKkZcdloQ4ePEi7du2YMGECDz74ICNGjHC6JBHJJEuXLuWOO+7g+++/55prrvFtHz58ONOnT+fYsWMXHPP555/TpEkTwsPDufPOO32h4uqrr/YFgOeff57q1avTqVMnBgwYwGuvveY7fsaMGTRp0oRrr72WpUuX+rbv3buXzp07U61aNcaNG+fb/sYbb/haHZJaCXbt2kWNGjW4++67adCgAXv37mXo0KHUrl2bOnXq8OabbwLw4osv8t577/nCR7FixRgyZMgFX9PIkSNp1KgRtWrV4tlnn/VtHz16NDVr1qRu3bo8+uijvvqTWuWSfgEuWbKEm266icOHD3PrrbeyZs0awsPD2bFj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VShYsCClSpXi1VdfveCcXbt2ZcmSJVSpUoVatWoxZswY2rRpQ2hoKPXr12fKlCmAJ7S0adOGQ4cOMWnSJPLnz8+BAwe4/fbbmTdvXoa+jpR06dKFjz/+OEPBrXnz5owePZr169f7biIICQnhpZdeol27dlhr6dKlS4qBKcmkSZMAuOuuuy6p/vHjx9O/f3+eeuop6tevz3/+8x/AM05z0qRJfPzxxyQkJPj+0ChatCiff/75Od2dX331FaNHjz7nvE8//TRDhw6lTp06WGsZP36879/q2bNn+emnn3xjCpPMmjWL++67j3/++YeuXbsSHh7OggULuOeeexg2bBi1a9fGWsuwYcOoW7cuAJGRkTRr1uyC7teAsNYG1Uf9y8PsDxsOWic89dRTFrDNmjWze/fudaQGkdxk06ZNTpcQUNHR0dZaa8+cOWMbNmxoIyMjHa5I0nLgwAHbsWPHNPcZMmSInTFjRhZV5J/Fixfbrl27Ol1GjnH//ffbn3/+OcXXUvqZBUTYi8w8QdlH59SYtFq1anHPPffwyy+/UKFCBUdqEJGcY8SIEYSHh9OgQQN69+5NgwYNnC5J0nD55Zdzxx13aDLbXK527dp06NAhS65lbAAmLAykBlfksa8v3k+7amXT3zkTLF++nF27djFo0KAsuZ6I/Gvz5s0aUiAiQSOln1nGmEhrbaOLOZ9a0lJhrWXChAm0bduWl1566Zy7q0REREQCLShDWqBvHDh9+jQDBw7kwQcfpEuXLixbtixrBgiKiIiIeAVl8ggN4GLlMTExNG/enE2bNvHiiy8yatQoTa8hIiIiWS4oQ1pYaOBCWoECBRg4cCCNGzfO1PXKRERERDIiKJuIMntZqMTERJ544gnfenBPPPGEApqIAP8uNF27dm369u3L2bNns7yG2bNns2nTpkw95/z582nUqBE1atSgevXqvoXRx44de85C75eqRYsWvs8fe+wxatWqxWOPPcakSZOYOnXqRZ93yZIlFCtWjPr1659Tf5LZs2dTt25dqlevTp06dS5YxPu1116jevXqvkXgU6vlwQcf5Ndff73oOsWz/m2/fv2oUqUKTZs2vWD+viTTp0+nbt261KpVi8cff9y3fffu3XTo0IG6devStm1b9u3bd85xp06donz58tx7772+bdZaxowZw7XXXkuNGjV4++23ATh58iTdunWjXr161KpVi8mTJ/uOOXHiBH369KF69erUqFGDlStXAvDoo4+yaNGizPp2ZMzFzt3h1Ef9y8Ps+n0n0p/IxE+HDh2y7dq1s4AdM2ZMpp1XRC5ddpgnrVChQr7PBw4caF9//XW/jktISMi0GtKae+tirrN+/XpbuXJlu3nzZt85Jk6caK219tlnn7WvvvrqxRebhiJFitjY2NiLOvb8rzP53F9nz5611apVs8uWLbPWWrtmzRp7zTXX2J07d1prrd25c6e95ppr7Nq1a6211r7//vv2+uuvtydPnrTWWnvixAk7ZcqUC6559OhR27Rp04uqV/41ceJEe+edd1prrZ02bZq95ZZbLtjnyJEj9sorr7SHDx+21lo7ePBg31xkffr08b0/CxcutLfeeus5x95///12wIAB9p577vFt+/TTT+1tt91mXS6Xtdbzu95aa//v//7PPv7449Zaaw8fPmxLlChh4+LifNf86KOPrLXWxsXF2ePHj1trrd21a5ft1KmTX1+r5kkDQjJpTNrKlStp0KABK1euZMqUKbzwwguZcl4RyZlat27N9u3bOXPmDMOHD6dx48bUr1/ft4TQlClT6Nu3L926dfMtXj5s2DDq1KlD3bp1+fbbbwH48ccfad68OQ0aNKBv376cPn0agKuvvppRo0bRpEkTmjRpwvbt21mxYgVz5szhscceIzw8nB07dtC2bVuefPJJ2rRpw4QJE1i4cCH169enTp06DB8+3DdT/9VXX82zzz5LgwYNqFOnDn/++ScAr7zyCmPGjPEtcxMWFsbdd999wdf70Ucf0bhxY+rVq0fv3r19rYgzZszwtUBdd911AGzcuJEmTZoQHh5O3bp12bZtGwCFCxcGoHv37pw5c4amTZsyffr0c1rsduzYQefOnWnYsCGtW7f21Tl06FAefvhh2rVrx6hRo1J9XwoUKEB4eDj79+8HPK1kTz75JJUqVQKgUqVKPPHEE75VBF588UXee+8938LbxYoVY8iQIRec95tvvqFz586+50kLfterV48mTZoQHR3NlClT6NGjB507d6ZatWqMGzcu1ToBli5dSnh4ODVr1vTVnbT4etL3KulrT1o6KTVjx46lfPnyvnMUK1aMJUuW+M71yCOP0KBBAzp06MA///wDwJo1a2jWrBl169alZ8+eHD9+HIC2bdtSrVo137lSa+26GN99953v+9unTx8WLlx4wbqhO3fu5Nprr/Ut9t6xY0ffv5dNmzb55iVr167dOUt2RUZGcujQoXOWjAJ4//33eeaZZ3xjysuW9UzbZYwhOjoaay2nT5+mZMmShIWFcerUKX799Vff6gd58+b1LWl11VVXcfToUf7+++9M+574K9eOSYuIiKBNmzZUqFCBlStX+v6RiEg2NX80/L0+c89Zrg7c+LJfuyYmJjJ//nw6d+7M//3f/9G+fXs+/fRTTpw4QZMmTXxDJFauXMm6desoWbIko0aNolixYqxf76n7+PHjHDlyhBdeeIGff/6ZQoUKMX78eN544w2eeeYZwLMEzqpVq5g6dSoPPvggc+fOpXv37tx000306dPHV8+JEyf45ZdfiI2NpWrVqixcuJBrr72WwYMH8/777/Pggw8CniWroqKieO+993jttdf4+OOP2bBhwwXLPqWkV69e3HHHHQA89dRTfPLJJ9x3330899xzLFiwgPLly3PixAnAs2TQAw88wKBBg4iPj8flcp1zrjlz5lC4cGHf2p5jx471vTZixAgmTZpE1apV+f3337n77rt93Utbt27l559/JjQ0NNU6jx8/zrZt284JjOd3fzZq1IiJEycSHR1NdHQ011xzTbpf//Lly33f8/j4ePr168f06dNp3Lgxp06d8i0rtWrVKjZs2EDBggVp3LgxXbt29S3Xdb7WrVuzZs0adu3axU033eT3wvOpSVpUHuCmm27ybT9z5gwNGjTg9ddf57nnnmPcuHG8++67DB48mHfeeYc2bdrwzDPPMG7cON566y0Avvjii1TrTunriI6OvmD7a6+9dsFwof3793PllVcCnj8IihUrxtGjR89ZXq1KlSr8+eef7Nq1iwoVKjB79mzi4+MBz5Jk3377LQ888ACzZs0iOjqao0ePUqJECR555BH++9//+tbsTLJjxw6mT5/OrFmzKFOmDG+//TZVq1bl3nvvpXv37lxxxRVER0czffp0QkJC2LlzJ2XKlGHYsGGsXbuWhg0bMmHCBAoVKgRAgwYNWL58Ob179/br+5NZgrIlLTOm4GjQoAHPPvsskZGRCmgikqqYmBjCw8Np1KgRFStW5D//+Q8//vgjL7/8MuHh4bRt25bY2Fj27NkDQKdOnShZsiTgWcj7nnvu8Z2rRIkS/Pbbb2zatImWLVsSHh7OZ599ds7i60kLQA8YMMA3JiYl/fr1A2DLli1UqlTJt7blkCFDzhlD1atXLwAaNmyY4daRDRs20Lp1a+rUqcMXX3zBxo0bAWjZsiVDhw7lo48+8oWx5s2b8+KLLzJ+/Hh2797tCzDpOX36NCtWrKBv376Eh4dz5513cvDgQd/rffv2TTWgLV26lLp161KuXDluuukmypUrB3iG8ZjzelyStqX0WmoOHjzoa9nZsmULl19+OY0bNwY8YTppaqZOnTpRqlQpChQoQK9evXzjmzOqZMmSGV5MPjUhISG+/0duvfVWli1bxsmTJzlx4oRvEfXz/1/JiKVLl6a4oHpK47nPbzUDLngPSpQowfvvv0+/fv1o3bo1V199te/7+9prr/HLL79Qv359fvnlF8qXL09YWBjvvfceXbp08QXA5OLi4sifPz8RERHccccdDB8+HIAFCxYQHh7OgQMHWLNmDffeey+nTp0iMTGRqKgoRo4cyR9//EGhQoV4+eV//4ArW7YsBw4cuKjv1aUIypa0i52CY/v27dx1111MnjyZK6+8kjFjxmRyZSISMH62eGW2AgUKXNDaYa3l22+/pVq1auds//33331/eSftl1JY6NSpE9OmTUvxesn3TytMJF0npV+AyeXLlw/w3ACRNCl3rVq1iIyMpF69emkeO3ToUGbPnk29evWYMmWKrytt0qRJ/P7773z//feEh4ezZs0aBg4cSNOmTfn++++54YYb+Pjjj2nfvn2a5wdwu90UL1481Ral5N/P87Vu3Zq5c+eydetWWrVqRc+ePQkPD6dWrVpERET4FsQGiIqKombNmhQtWpRChQqxc+dOKleunGZtBQoUIDY2Fkj5vUxy/nZ/Q+D53nrrLXr16kVYWBh79uw5p2XsUl1sTanJSEtahQoV2Lt3LxUqVCAxMZGTJ0/6/pBJrlu3bnTr1g2ADz/80BfOr7jiCmbOnAl4Qv23335LsWLFWLlyJUuXLuW9997j9OnTxMfHU7hwYV5++WUqVKjga/Xq2bMnw4YNA2Dy5MmMHj0aYwxVqlShUqVK/Pnnn1SsWJEKFSrQtGlTwNMtmzykxcbG+v2HR2bKNS1pc+bMoVGjRvzxxx/n/NUqIpJRN9xwA++8844vIP3xxx8p7nf99dfz7rvv+p4fP36cZs2asXz5crZv3w7A2bNnz2k9mT59uu+xefPmABQpUiTFX4gA1atXZ9euXb7z/fe///W1lKTmscce48UXX/Rd1+1288Ybb1ywX3R0NJdffjkJCQl88cUXvu07duygadOmPPfcc5QuXZq9e/f6Qs/9999P9+7dWbduXZo1JClatCiVKlVixowZgCcMrV271q9jk1x77bU88cQTjB8/HvDcjffSSy/5Wg537drFiy++6OvifeKJJ7jnnnt8a3CeOnWKDz/88ILz1qhRw/d9rV69OgcOHGD16tW+701S6P3pp584duwYMTExzJ49m5YtW2ao/iS9evViw4YNrFmzhu7du1/UOZK43W7fmLYvv/ySVq1aUaxYMUqUKMHSpUsB//5fSU1GWtK6d+/OZ599BnjG+bVv3z7F0Hj48GHA8+/kvffe4/bbbwfgyJEjuN1uAF566SVfq9gXX3zBnj172LVrF6+99hqDBw/2Baubb77Z12X+yy+/+FqaK1as6OsaPXToEFu2bKFy5cqUK1eOK6+8ki1btgCwcOFCatas6att69at1K5d+6K+V5ciKENaRsakuVwuxowZQ48ePahSpQqRkZG0atUqgNWJSE739NNPk5CQQN26dalduzZPP/10ivs99dRTHD9+3DfIfvHixZQpU4YpU6YwYMAA6tatS7NmzXwD5cHTTdO0aVMmTJjAm2++CUD//v159dVXqV+/Pjt27DjnGvnz52fy5Mn07duXOnXqEBISwl133ZVm/XXr1uWtt95iwIAB1KhRg9q1a5/TxZjk+eefp2nTpnTq1Ml3kwF4Ql6dOnWoXbs21113HfXq1WP69OnUrl2b8PBw/vzzTwYPHuz39/OLL77gk08+8U2LkHxguL/uuusufv31V/766y/Cw8MZP3483bp1o3r16nTr1o1XXnnFN7Rl5MiRtGvXjsaNG1O7dm3atGlDwYIFLzhn165dfa2HefPmZfr06dx3333Uq1ePTp06+VrZWrVqxW233UZ4eDi9e/f2jevq0qVLpnSRPfPMM8yZMydDxxQqVIiNGzfSsGFDFi1a5Bvz+Nlnn/HYY49Rt25d1qxZ49uekoiICF9QuhT/+c9/OHr0KFWqVOGNN944p4Uq+XCjBx54gJo1a9KyZUtGjx7tC1ZLliyhWrVqXHvttRw6dMivXrDRo0fz7bffUqdOHZ544gk+/vhjwPNvd8WKFdSpU4cOHTowfvx439i4d955h0GDBvm+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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=(10,8))\n",
+ "\n",
+ "# K соседей\n",
+ "fpr, tpr, thresholds = roc_curve(y_test, probas_knn[:,1])\n",
+ "roc_auc = auc(fpr, tpr)\n",
+ "plt.plot(fpr, tpr, label='KNeighborsClassifier ROC (ср. тч. прог. = %f)' % (roc_auc))\n",
+ "\n",
+ "# PerceptronClassifier\n",
+ "fpr, tpr, thresholds = roc_curve(y_test, probas_slf[:,1])\n",
+ "roc_auc = auc(fpr, tpr)\n",
+ "plt.plot(fpr, tpr, label='PerceptronClassifier ROC (ср. тч. прог. = %f)' % (roc_auc)) \n",
+ "\n",
+ "# вывод графика\n",
+ "plt.plot([0, 1], [0, 1], 'k--')\n",
+ "plt.xlim([0.0, 1.0])\n",
+ "plt.ylim([0.0, 1.0])\n",
+ "plt.xlabel('False Positive Rate')\n",
+ "plt.ylabel('True Positive Rate (Precision / Точность)')\n",
+ "plt.legend(loc=4, fontsize='medium')\n",
+ "plt.title('Occupancy = 1')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 9.Сравните кривые для классификаторов, указанных в задании, сделайте выводы.\n",
+ "Данные классификаторы решают задачу классификации с высокой вероятностью, что является хорошим результатом, т.к. классов всего 2. Персептрон дает лучший результат, благодаря хорошо подобранным параметрам и многослойной сетке. Поэтому задача классификации была решена корректно."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "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.9.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
From f0b4531acd074e959d77439314d4e8a1ff8be9e2 Mon Sep 17 00:00:00 2001
From: andvagapov <86461996+andvagapov@users.noreply.github.com>
Date: Fri, 25 Jun 2021 09:45:35 +0300
Subject: [PATCH 4/4] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?=
=?UTF-8?q?=D0=BD=D0=B0=204=20=D0=BB=D0=B0=D0=B1=D0=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../lab4.ipynb" | 1869 +++++++++++++++++
1 file changed, 1869 insertions(+)
create mode 100644 "ml/lb4/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/lab4.ipynb"
diff --git "a/ml/lb4/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/lab4.ipynb" "b/ml/lb4/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/lab4.ipynb"
new file mode 100644
index 0000000..5fd46ed
--- /dev/null
+++ "b/ml/lb4/\320\222\320\260\320\263\320\260\320\277\320\276\320\262/lab4.ipynb"
@@ -0,0 +1,1869 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Лабораторная работа №4. Регрессионный анализ данных"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Вариант 10\n",
+ "## Вагапов Андрей 19-ивт-3\n",
+ "### Цель лабораторной работы – получение навыков работы с методами регрессии\n",
+ "Задания:\n",
+ "\n",
+ "1.\tИзучить набор данных. Создать описание набора данных на русском языке. Описать признаки, используемые в наборе данных (включить полученные описания в отчёт).\n",
+ "2.\tУдалите дубликаты строк в наборе данных; приведите размер набора данных до и после данной операции;\n",
+ "3.\tВыполните масштабирование количественных признаков; Постройте диаграммы BoxPlot для признаков до и после масштабирования. Выберите способ масштабирования (например, нормализацию или стандартизацию);\n",
+ "4.\tВыполните замену категориальных признаков; выберите и обоснуйте способ замены;\n",
+ "5.\tОцените корреляцию между признаков и удалите те признаки, которые коррелируют с наибольшим числом других;\n",
+ "6.\tЗаполните пропущенные значения в данных;\n",
+ "7.\tРешите поставленную задачу регрессии в соответствии с заданием. При подборе параметров метода принятия решения (метода регрессии) используйте перекрёстную проверку (изучите возможные для изменения параметры метода регрессии). Вычислите точность решения задачи, вычислив разницу между реальным значением и предсказанным. Вычислите коэффициент корреляции (Пирсона, Спирмена) между реальным значением и предсказанным с учётом p-value. \n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import sklearn as sk\n",
+ "import seaborn as sn\n",
+ "import matplotlib.pyplot as plt\n",
+ "from scipy.stats import *\n",
+ "from sklearn import linear_model\n",
+ "\n",
+ "from pylab import rcParams\n",
+ "from scipy import interp\n",
+ "from sklearn.preprocessing import MinMaxScaler, LabelEncoder\n",
+ "from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV\n",
+ "\n",
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " date | \n",
+ " price | \n",
+ " bedrooms | \n",
+ " bathrooms | \n",
+ " sqft_living | \n",
+ " sqft_lot | \n",
+ " floors | \n",
+ " waterfront | \n",
+ " view | \n",
+ " ... | \n",
+ " grade | \n",
+ " sqft_above | \n",
+ " sqft_basement | \n",
+ " yr_built | \n",
+ " yr_renovated | \n",
+ " zipcode | \n",
+ " lat | \n",
+ " long | \n",
+ " sqft_living15 | \n",
+ " sqft_lot15 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 7129300520 | \n",
+ " 20141013T000000 | \n",
+ " 221900.0 | \n",
+ " 3 | \n",
+ " 1.00 | \n",
+ " 1180 | \n",
+ " 5650 | \n",
+ " 1.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 7 | \n",
+ " 1180 | \n",
+ " 0 | \n",
+ " 1955 | \n",
+ " 0 | \n",
+ " 98178 | \n",
+ " 47.5112 | \n",
+ " -122.257 | \n",
+ " 1340 | \n",
+ " 5650 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 6414100192 | \n",
+ " 20141209T000000 | \n",
+ " 538000.0 | \n",
+ " 3 | \n",
+ " 2.25 | \n",
+ " 2570 | \n",
+ " 7242 | \n",
+ " 2.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 7 | \n",
+ " 2170 | \n",
+ " 400 | \n",
+ " 1951 | \n",
+ " 1991 | \n",
+ " 98125 | \n",
+ " 47.7210 | \n",
+ " -122.319 | \n",
+ " 1690 | \n",
+ " 7639 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 5631500400 | \n",
+ " 20150225T000000 | \n",
+ " 180000.0 | \n",
+ " 2 | \n",
+ " 1.00 | \n",
+ " 770 | \n",
+ " 10000 | \n",
+ " 1.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 6 | \n",
+ " 770 | \n",
+ " 0 | \n",
+ " 1933 | \n",
+ " 0 | \n",
+ " 98028 | \n",
+ " 47.7379 | \n",
+ " -122.233 | \n",
+ " 2720 | \n",
+ " 8062 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2487200875 | \n",
+ " 20141209T000000 | \n",
+ " 604000.0 | \n",
+ " 4 | \n",
+ " 3.00 | \n",
+ " 1960 | \n",
+ " 5000 | \n",
+ " 1.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 7 | \n",
+ " 1050 | \n",
+ " 910 | \n",
+ " 1965 | \n",
+ " 0 | \n",
+ " 98136 | \n",
+ " 47.5208 | \n",
+ " -122.393 | \n",
+ " 1360 | \n",
+ " 5000 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 1954400510 | \n",
+ " 20150218T000000 | \n",
+ " 510000.0 | \n",
+ " 3 | \n",
+ " 2.00 | \n",
+ " 1680 | \n",
+ " 8080 | \n",
+ " 1.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 8 | \n",
+ " 1680 | \n",
+ " 0 | \n",
+ " 1987 | \n",
+ " 0 | \n",
+ " 98074 | \n",
+ " 47.6168 | \n",
+ " -122.045 | \n",
+ " 1800 | \n",
+ " 7503 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 21608 | \n",
+ " 263000018 | \n",
+ " 20140521T000000 | \n",
+ " 360000.0 | \n",
+ " 3 | \n",
+ " 2.50 | \n",
+ " 1530 | \n",
+ " 1131 | \n",
+ " 3.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 8 | \n",
+ " 1530 | \n",
+ " 0 | \n",
+ " 2009 | \n",
+ " 0 | \n",
+ " 98103 | \n",
+ " 47.6993 | \n",
+ " -122.346 | \n",
+ " 1530 | \n",
+ " 1509 | \n",
+ "
\n",
+ " \n",
+ " | 21609 | \n",
+ " 6600060120 | \n",
+ " 20150223T000000 | \n",
+ " 400000.0 | \n",
+ " 4 | \n",
+ " 2.50 | \n",
+ " 2310 | \n",
+ " 5813 | \n",
+ " 2.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 8 | \n",
+ " 2310 | \n",
+ " 0 | \n",
+ " 2014 | \n",
+ " 0 | \n",
+ " 98146 | \n",
+ " 47.5107 | \n",
+ " -122.362 | \n",
+ " 1830 | \n",
+ " 7200 | \n",
+ "
\n",
+ " \n",
+ " | 21610 | \n",
+ " 1523300141 | \n",
+ " 20140623T000000 | \n",
+ " 402101.0 | \n",
+ " 2 | \n",
+ " 0.75 | \n",
+ " 1020 | \n",
+ " 1350 | \n",
+ " 2.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 7 | \n",
+ " 1020 | \n",
+ " 0 | \n",
+ " 2009 | \n",
+ " 0 | \n",
+ " 98144 | \n",
+ " 47.5944 | \n",
+ " -122.299 | \n",
+ " 1020 | \n",
+ " 2007 | \n",
+ "
\n",
+ " \n",
+ " | 21611 | \n",
+ " 291310100 | \n",
+ " 20150116T000000 | \n",
+ " 400000.0 | \n",
+ " 3 | \n",
+ " 2.50 | \n",
+ " 1600 | \n",
+ " 2388 | \n",
+ " 2.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 8 | \n",
+ " 1600 | \n",
+ " 0 | \n",
+ " 2004 | \n",
+ " 0 | \n",
+ " 98027 | \n",
+ " 47.5345 | \n",
+ " -122.069 | \n",
+ " 1410 | \n",
+ " 1287 | \n",
+ "
\n",
+ " \n",
+ " | 21612 | \n",
+ " 1523300157 | \n",
+ " 20141015T000000 | \n",
+ " 325000.0 | \n",
+ " 2 | \n",
+ " 0.75 | \n",
+ " 1020 | \n",
+ " 1076 | \n",
+ " 2.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 7 | \n",
+ " 1020 | \n",
+ " 0 | \n",
+ " 2008 | \n",
+ " 0 | \n",
+ " 98144 | \n",
+ " 47.5941 | \n",
+ " -122.299 | \n",
+ " 1020 | \n",
+ " 1357 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
21613 rows × 21 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id date price bedrooms bathrooms \\\n",
+ "0 7129300520 20141013T000000 221900.0 3 1.00 \n",
+ "1 6414100192 20141209T000000 538000.0 3 2.25 \n",
+ "2 5631500400 20150225T000000 180000.0 2 1.00 \n",
+ "3 2487200875 20141209T000000 604000.0 4 3.00 \n",
+ "4 1954400510 20150218T000000 510000.0 3 2.00 \n",
+ "... ... ... ... ... ... \n",
+ "21608 263000018 20140521T000000 360000.0 3 2.50 \n",
+ "21609 6600060120 20150223T000000 400000.0 4 2.50 \n",
+ "21610 1523300141 20140623T000000 402101.0 2 0.75 \n",
+ "21611 291310100 20150116T000000 400000.0 3 2.50 \n",
+ "21612 1523300157 20141015T000000 325000.0 2 0.75 \n",
+ "\n",
+ " sqft_living sqft_lot floors waterfront view ... grade \\\n",
+ "0 1180 5650 1.0 0 0 ... 7 \n",
+ "1 2570 7242 2.0 0 0 ... 7 \n",
+ "2 770 10000 1.0 0 0 ... 6 \n",
+ "3 1960 5000 1.0 0 0 ... 7 \n",
+ "4 1680 8080 1.0 0 0 ... 8 \n",
+ "... ... ... ... ... ... ... ... \n",
+ "21608 1530 1131 3.0 0 0 ... 8 \n",
+ "21609 2310 5813 2.0 0 0 ... 8 \n",
+ "21610 1020 1350 2.0 0 0 ... 7 \n",
+ "21611 1600 2388 2.0 0 0 ... 8 \n",
+ "21612 1020 1076 2.0 0 0 ... 7 \n",
+ "\n",
+ " sqft_above sqft_basement yr_built yr_renovated zipcode lat \\\n",
+ "0 1180 0 1955 0 98178 47.5112 \n",
+ "1 2170 400 1951 1991 98125 47.7210 \n",
+ "2 770 0 1933 0 98028 47.7379 \n",
+ "3 1050 910 1965 0 98136 47.5208 \n",
+ "4 1680 0 1987 0 98074 47.6168 \n",
+ "... ... ... ... ... ... ... \n",
+ "21608 1530 0 2009 0 98103 47.6993 \n",
+ "21609 2310 0 2014 0 98146 47.5107 \n",
+ "21610 1020 0 2009 0 98144 47.5944 \n",
+ "21611 1600 0 2004 0 98027 47.5345 \n",
+ "21612 1020 0 2008 0 98144 47.5941 \n",
+ "\n",
+ " long sqft_living15 sqft_lot15 \n",
+ "0 -122.257 1340 5650 \n",
+ "1 -122.319 1690 7639 \n",
+ "2 -122.233 2720 8062 \n",
+ "3 -122.393 1360 5000 \n",
+ "4 -122.045 1800 7503 \n",
+ "... ... ... ... \n",
+ "21608 -122.346 1530 1509 \n",
+ "21609 -122.362 1830 7200 \n",
+ "21610 -122.299 1020 2007 \n",
+ "21611 -122.069 1410 1287 \n",
+ "21612 -122.299 1020 1357 \n",
+ "\n",
+ "[21613 rows x 21 columns]"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "house = pd.read_csv(\"kc_house_data.csv\")\n",
+ "house"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Задание 1\n",
+ "##### Изучить набор данных. Создать описание набора данных на русском языке. Описать признаки, используемые в наборе данных (включить полученные описания в отчёт)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Этот набор данных содержит цены продажи домов в округе Кинг, включая Сиэтл. Он включает в себя дома, проданные в период с мая 2014 по май 2015 года.\n",
+ "\n",
+ "Это отличный набор данных для оценки простых регрессионных моделей.\n",
+ "\n",
+ " id - Уникальный идентификатор для каждого проданного дома\n",
+ " дата - Дата продажи дома\n",
+ " цена - Цена каждого проданного дома\n",
+ " спальни - Количество спален\n",
+ " ванные комнаты - Количество ванных комнат, где .5 приходится на комнату с туалетом, но без душа\n",
+ " sqft_living - Квадратные метры квартир внутренняя жилая площадь\n",
+ " sqft_lot - Квадратные метры земельных площадей\n",
+ " этажи - Количество этажей\n",
+ " прибрежный - фиктивная переменная, находится ли квартира была с видом на набережную или нет\n",
+ " вид - индекс от 0 до 4 насколько хорош тот или иной вид имущества\n",
+ " состояние - индекс от 1 до 5 при условии, квартиры,\n",
+ " класс - индекс от 1 до 13, где 1-3 дотягивает строительства и дизайна, 7 имеет средний уровень проектирования и строительства, и 11-13 имеют высокий уровень качества строительства и дизайна.\n",
+ " sqft_above - Площадь внутреннего жилого пространства, находящегося над уровнем земли\n",
+ " sqft_basement - Площадь внутреннего жилого пространства, которое находится ниже уровня\n",
+ " земли yr_built - Год, когда дом был первоначально построен\n",
+ " yr_renovated - Год последней реконструкции дома\n",
+ " zipcode - Какая площадь zipcode находится в доме\n",
+ " lat - Lattitude\n",
+ " long - Longitude\n",
+ " sqft_living15 - Площадь внутреннего жилого пространства для ближайших 15 соседей\n",
+ " sqft_lot15 - Площадь земельных участков ближайших 15 соседей"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Задание 2\n",
+ "##### Удалите дубликаты строк в наборе данных; приведите размер набора данных до и после данной операции;"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of rows before deleting clones: 21613\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"Number of rows before deleting clones: \", house.shape[0])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "house.drop_duplicates(keep = 'first', inplace = True) #Убираем дубликаты"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of rows after deleting clones: 21613\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"Number of rows after deleting clones: \", house.shape[0])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Задание 3\n",
+ "##### Выполните масштабирование количественных признаков; Постройте диаграммы BoxPlot для признаков до и после масштабирования. Выберите способ масштабирования (например, нормализацию или стандартизацию);"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "rcParams[\"figure.figsize\"]=10, 7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
+ " 18, 19, 20]),\n",
+ " [Text(1, 0, 'id'),\n",
+ " Text(2, 0, 'price'),\n",
+ " Text(3, 0, 'bedrooms'),\n",
+ " Text(4, 0, 'bathrooms'),\n",
+ " Text(5, 0, 'sqft_living'),\n",
+ " Text(6, 0, 'sqft_lot'),\n",
+ " Text(7, 0, 'floors'),\n",
+ " Text(8, 0, 'waterfront'),\n",
+ " Text(9, 0, 'view'),\n",
+ " Text(10, 0, 'condition'),\n",
+ " Text(11, 0, 'grade'),\n",
+ " Text(12, 0, 'sqft_above'),\n",
+ " Text(13, 0, 'sqft_basement'),\n",
+ " Text(14, 0, 'yr_built'),\n",
+ " Text(15, 0, 'yr_renovated'),\n",
+ " Text(16, 0, 'zipcode'),\n",
+ " Text(17, 0, 'lat'),\n",
+ " Text(18, 0, 'long'),\n",
+ " Text(19, 0, 'sqft_living15'),\n",
+ " Text(20, 0, 'sqft_lot15')])"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "house.boxplot()\n",
+ "plt.xticks(rotation=60)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['price',\n",
+ " 'bedrooms',\n",
+ " 'bathrooms',\n",
+ " 'sqft_living',\n",
+ " 'sqft_lot',\n",
+ " 'floors',\n",
+ " 'waterfront',\n",
+ " 'view',\n",
+ " 'condition',\n",
+ " 'grade',\n",
+ " 'sqft_above',\n",
+ " 'sqft_basement',\n",
+ " 'yr_built',\n",
+ " 'yr_renovated',\n",
+ " 'zipcode',\n",
+ " 'lat',\n",
+ " 'long',\n",
+ " 'sqft_living15',\n",
+ " 'sqft_lot15']"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "numerical = []\n",
+ "for i in house.columns:\n",
+ " if (house[i].dtype == np.float64 or house[i].dtype == np.int64):\n",
+ " numerical.append(house[i].name)\n",
+ "numerical = numerical[1:]\n",
+ "numerical"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAo0AAAGoCAYAAAAjJN9VAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABHPUlEQVR4nO3de3hV5Zn///cnhAYijgeMClrBQytTUbHEfsdWHUUltNrD19GiMDPaqfU7dKo9jCI/tIdpq4C244w6TUuth1awVms7rbYEKp6wtRosAiptEWE8VSNaFSMpIffvj72S2YSd7Jx2Vvben9d1cWWt53ivFS68fZ619lZEYGZmZmbWnYq0AzAzMzOzoc9Jo5mZmZnl5aTRzMzMzPJy0mhmZmZmeTlpNDMzM7O8KtMOoNTttddeMX78+LTD6LXnnnuOlre38o7KYTnrW1q3A1DVRX0uf2ndTtXIEey///4DEqOZmZkNrJUrV74SETW56pw0Ftj48eNpbGxMO4xeu/jii/nL8y9x2XFTc9Z//cGlAF3Wd9XnHfvtw1VXXTUgMZqZmdnAkrSpqzpvT5uZmZlZXk4azczMzCwvJ40lqL6+nvr6+rTDGHJ8X8zMzPrOzzSWoA0bNqQdwpDk+2JmZtZ3ThqtbKxevRqAurq6lCMpvNraWl566SWeffZZxo4dS3V1Na2trbz44ou0tbWxbds2AEaPHs3mzZsBGDFiBFu3bu34ucsuu9Dc3ExEUFFRwbBhw2htbWXvvffmpZdeAmDYsGFcd911PPLII9x4440MGzaM7dszb9bvsccevPbaa0hi9OjRvPLKK3zyk5/k1ltv5XOf+xxXX301++23H1/4whf42te+xosvvsjZZ5/NnXfeSUtLC/Pnz+eAAw5g3rx5zJ07lz333JPNmzczb948ZsyYwZe+9CW2bdvGPvvsw6677kpzczMvvPACn/3sZ7n11lt5+eWXOe+88zjzzDPZvHkzX/rSl3j++ef51Kc+xbXXXsu4ceOYN28eEcG8efM4+uijueGGG/jsZz/Lhz70IYCO+U444QSuvfZaLr30Ug477LCOmJ555hkuu+wy5syZw89//vOOOHNpH2vWrFnU19czd+5cXn31Vf71X/8VgKuvvpqDDjqoo13nsdavX8/FF1/MN7/5TXbbbbecbbqaM1+7geqXa5yvfvWrAHz5y1/OO9ZAzdsbvZ2zc/u077HtrL+/06FqKMTp7ekskr4q6eS04zDrr8bGRp599lkAXnjhBdavX8/GjRtpaWnpSBiBjoQRYOvWrTv8fOutt4gIgI5EMyI6EkaA7du3M3/+fG688caO83avvfYaABHBK6+8AsD3vvc9mpubufLKK3n77bdZv349CxYs4MUXXwTg1ltvpaWlBYCvf/3rLF68mLVr17Jo0SKAjvPLL7+84zpeeukl1q9fzwsvvADANddcw8svvwzA9ddf39Fv/fr1vP3221x77bVEBBs3bmTRokUdY95www0d/du111133XUALFiwYIeYrrjiCtra2rjyyit3iDOX9n4LFizoaHvllVeydetWtm7dyvz583do13msK6+8kubmZubPn99lm67mzNduoPrlGmfdunWsW7euR2MN1Ly90ds5u/o7mdY9tp3193c6VA2FOJ00JiQNi4gvRcSv0o7FBt4ZZ5yRdggla9OmLj+doUutra15+2/ZsoUlS5YQESxdupSnn36apUuXEhFs2bKly7HbE912N910Ew0NDTnrf/nLX9LQ0LBDWUTwi1/8gs2bN3fM117f2traEdOSJUs64mhtbe2I89VXX90ppuyxNm3a1NE/+9o3bdrEY4891tEue6z169d3tN20adMO9yXXfJ3n7K7dQPXLNU72fW9oaOh2rIGat7cx9mbOzu2z/06mcY9tZ/39nQ7V38VQibMstqcljQeWAL8FjgL+APwj8CRwAzAVuE7SNOCuiLhD0tHAfwK7AC3ASUAzMB84AagC/isivjOoF9MDzz//PFu3buXiiy/u8xhPP/0079ge+Rv2wktvvclfnt7Sr7j66s033xz0Oa3/2pPLtrY2FixYQFtbW6/HuPXWW7us2759e84xr7nmGk499dScde0xZSe+7dra2li0aBEXXHDBDuWLFy/eaaxc/S+//PKOdtljXXnllTn7djVf5zm7azdQ/XKNk32Nra2t3Y41UPP2NsbezNm5ffbfyTTuse2sv7/Tofq7GCpxltNK46HAwog4AngD+HRSvjUijo2IH7Y3lPQO4DbgsxFxJHAy8DbwSeD1iDgaOBr4lKQDO08k6XxJjZIam5qaCntVZmWgtbWVTZs25Uy0+qvzymR72fLly3s9X2trK8uXL9+pvKdjbdmyZYektH2srlZju5qv85zdtRuofrnG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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sn.boxplot(data = house[numerical], width=1, orient = 'h')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "scaler = MinMaxScaler()\n",
+ "house[numerical] = scaler.fit_transform(house[numerical].values.astype(float)) # Нормализация\n",
+ "sn.boxplot(data = house[numerical], width=1, orient = 'h')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Задание 4\n",
+ "##### Выполните замену категориальных признаков;"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['id', 'date']"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "categorical = ['id']\n",
+ "for i in house.columns:\n",
+ " if (house[i].dtype != np.float64 and house[i].dtype != np.int64):\n",
+ " categorical.append(house[i].name)\n",
+ "categorical"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " date | \n",
+ " price | \n",
+ " bedrooms | \n",
+ " bathrooms | \n",
+ " sqft_living | \n",
+ " sqft_lot | \n",
+ " floors | \n",
+ " waterfront | \n",
+ " view | \n",
+ " ... | \n",
+ " grade | \n",
+ " sqft_above | \n",
+ " sqft_basement | \n",
+ " yr_built | \n",
+ " yr_renovated | \n",
+ " zipcode | \n",
+ " lat | \n",
+ " long | \n",
+ " sqft_living15 | \n",
+ " sqft_lot15 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 15339 | \n",
+ " 164 | \n",
+ " 0.019266 | \n",
+ " 0.090909 | \n",
+ " 0.12500 | \n",
+ " 0.067170 | \n",
+ " 0.003108 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 0.500000 | \n",
+ " 0.097588 | \n",
+ " 0.000000 | \n",
+ " 0.478261 | \n",
+ " 0.000000 | \n",
+ " 0.893939 | \n",
+ " 0.571498 | \n",
+ " 0.217608 | \n",
+ " 0.161934 | \n",
+ " 0.005742 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 14466 | \n",
+ " 220 | \n",
+ " 0.060721 | \n",
+ " 0.090909 | \n",
+ " 0.28125 | \n",
+ " 0.172075 | \n",
+ " 0.004072 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 0.500000 | \n",
+ " 0.206140 | \n",
+ " 0.082988 | \n",
+ " 0.443478 | \n",
+ " 0.988089 | \n",
+ " 0.626263 | \n",
+ " 0.908959 | \n",
+ " 0.166113 | \n",
+ " 0.222165 | \n",
+ " 0.008027 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 13503 | \n",
+ " 290 | \n",
+ " 0.013770 | \n",
+ " 0.060606 | \n",
+ " 0.12500 | \n",
+ " 0.036226 | \n",
+ " 0.005743 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 0.416667 | \n",
+ " 0.052632 | \n",
+ " 0.000000 | \n",
+ " 0.286957 | \n",
+ " 0.000000 | \n",
+ " 0.136364 | \n",
+ " 0.936143 | \n",
+ " 0.237542 | \n",
+ " 0.399415 | \n",
+ " 0.008513 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 6371 | \n",
+ " 220 | \n",
+ " 0.069377 | \n",
+ " 0.121212 | \n",
+ " 0.37500 | \n",
+ " 0.126038 | \n",
+ " 0.002714 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 0.500000 | \n",
+ " 0.083333 | \n",
+ " 0.188797 | \n",
+ " 0.565217 | \n",
+ " 0.000000 | \n",
+ " 0.681818 | \n",
+ " 0.586939 | \n",
+ " 0.104651 | \n",
+ " 0.165376 | \n",
+ " 0.004996 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 4955 | \n",
+ " 283 | \n",
+ " 0.057049 | \n",
+ " 0.090909 | \n",
+ " 0.25000 | \n",
+ " 0.104906 | \n",
+ " 0.004579 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 0.583333 | \n",
+ " 0.152412 | \n",
+ " 0.000000 | \n",
+ " 0.756522 | \n",
+ " 0.000000 | \n",
+ " 0.368687 | \n",
+ " 0.741354 | \n",
+ " 0.393688 | \n",
+ " 0.241094 | \n",
+ " 0.007871 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 21608 | \n",
+ " 574 | \n",
+ " 19 | \n",
+ " 0.037377 | \n",
+ " 0.090909 | \n",
+ " 0.31250 | \n",
+ " 0.093585 | \n",
+ " 0.000370 | \n",
+ " 0.8 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 0.583333 | \n",
+ " 0.135965 | \n",
+ " 0.000000 | \n",
+ " 0.947826 | \n",
+ " 0.000000 | \n",
+ " 0.515152 | \n",
+ " 0.874055 | \n",
+ " 0.143688 | \n",
+ " 0.194631 | \n",
+ " 0.000986 | \n",
+ "
\n",
+ " \n",
+ " | 21609 | \n",
+ " 14564 | \n",
+ " 288 | \n",
+ " 0.042623 | \n",
+ " 0.121212 | \n",
+ " 0.31250 | \n",
+ " 0.152453 | \n",
+ " 0.003206 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 0.583333 | \n",
+ " 0.221491 | \n",
+ " 0.000000 | \n",
+ " 0.991304 | \n",
+ " 0.000000 | \n",
+ " 0.732323 | \n",
+ " 0.570693 | \n",
+ " 0.130399 | \n",
+ " 0.246257 | \n",
+ " 0.007523 | \n",
+ "
\n",
+ " \n",
+ " | 21610 | \n",
+ " 3621 | \n",
+ " 52 | \n",
+ " 0.042898 | \n",
+ " 0.060606 | \n",
+ " 0.09375 | \n",
+ " 0.055094 | \n",
+ " 0.000503 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 0.500000 | \n",
+ " 0.080044 | \n",
+ " 0.000000 | \n",
+ " 0.947826 | \n",
+ " 0.000000 | \n",
+ " 0.722222 | \n",
+ " 0.705324 | \n",
+ " 0.182724 | \n",
+ " 0.106866 | \n",
+ " 0.001558 | \n",
+ "
\n",
+ " \n",
+ " | 21611 | \n",
+ " 629 | \n",
+ " 252 | \n",
+ " 0.042623 | \n",
+ " 0.090909 | \n",
+ " 0.31250 | \n",
+ " 0.098868 | \n",
+ " 0.001132 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 0.583333 | \n",
+ " 0.143640 | \n",
+ " 0.000000 | \n",
+ " 0.904348 | \n",
+ " 0.000000 | \n",
+ " 0.131313 | \n",
+ " 0.608975 | \n",
+ " 0.373754 | \n",
+ " 0.173980 | \n",
+ " 0.000731 | \n",
+ "
\n",
+ " \n",
+ " | 21612 | \n",
+ " 3622 | \n",
+ " 166 | \n",
+ " 0.032787 | \n",
+ " 0.060606 | \n",
+ " 0.09375 | \n",
+ " 0.055094 | \n",
+ " 0.000337 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 0.500000 | \n",
+ " 0.080044 | \n",
+ " 0.000000 | \n",
+ " 0.939130 | \n",
+ " 0.000000 | \n",
+ " 0.722222 | \n",
+ " 0.704842 | \n",
+ " 0.182724 | \n",
+ " 0.106866 | \n",
+ " 0.000811 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
21613 rows × 21 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id date price bedrooms bathrooms sqft_living sqft_lot \\\n",
+ "0 15339 164 0.019266 0.090909 0.12500 0.067170 0.003108 \n",
+ "1 14466 220 0.060721 0.090909 0.28125 0.172075 0.004072 \n",
+ "2 13503 290 0.013770 0.060606 0.12500 0.036226 0.005743 \n",
+ "3 6371 220 0.069377 0.121212 0.37500 0.126038 0.002714 \n",
+ "4 4955 283 0.057049 0.090909 0.25000 0.104906 0.004579 \n",
+ "... ... ... ... ... ... ... ... \n",
+ "21608 574 19 0.037377 0.090909 0.31250 0.093585 0.000370 \n",
+ "21609 14564 288 0.042623 0.121212 0.31250 0.152453 0.003206 \n",
+ "21610 3621 52 0.042898 0.060606 0.09375 0.055094 0.000503 \n",
+ "21611 629 252 0.042623 0.090909 0.31250 0.098868 0.001132 \n",
+ "21612 3622 166 0.032787 0.060606 0.09375 0.055094 0.000337 \n",
+ "\n",
+ " floors waterfront view ... grade sqft_above sqft_basement \\\n",
+ "0 0.0 0.0 0.0 ... 0.500000 0.097588 0.000000 \n",
+ "1 0.4 0.0 0.0 ... 0.500000 0.206140 0.082988 \n",
+ "2 0.0 0.0 0.0 ... 0.416667 0.052632 0.000000 \n",
+ "3 0.0 0.0 0.0 ... 0.500000 0.083333 0.188797 \n",
+ "4 0.0 0.0 0.0 ... 0.583333 0.152412 0.000000 \n",
+ "... ... ... ... ... ... ... ... \n",
+ "21608 0.8 0.0 0.0 ... 0.583333 0.135965 0.000000 \n",
+ "21609 0.4 0.0 0.0 ... 0.583333 0.221491 0.000000 \n",
+ "21610 0.4 0.0 0.0 ... 0.500000 0.080044 0.000000 \n",
+ "21611 0.4 0.0 0.0 ... 0.583333 0.143640 0.000000 \n",
+ "21612 0.4 0.0 0.0 ... 0.500000 0.080044 0.000000 \n",
+ "\n",
+ " yr_built yr_renovated zipcode lat long sqft_living15 \\\n",
+ "0 0.478261 0.000000 0.893939 0.571498 0.217608 0.161934 \n",
+ "1 0.443478 0.988089 0.626263 0.908959 0.166113 0.222165 \n",
+ "2 0.286957 0.000000 0.136364 0.936143 0.237542 0.399415 \n",
+ "3 0.565217 0.000000 0.681818 0.586939 0.104651 0.165376 \n",
+ "4 0.756522 0.000000 0.368687 0.741354 0.393688 0.241094 \n",
+ "... ... ... ... ... ... ... \n",
+ "21608 0.947826 0.000000 0.515152 0.874055 0.143688 0.194631 \n",
+ "21609 0.991304 0.000000 0.732323 0.570693 0.130399 0.246257 \n",
+ "21610 0.947826 0.000000 0.722222 0.705324 0.182724 0.106866 \n",
+ "21611 0.904348 0.000000 0.131313 0.608975 0.373754 0.173980 \n",
+ "21612 0.939130 0.000000 0.722222 0.704842 0.182724 0.106866 \n",
+ "\n",
+ " sqft_lot15 \n",
+ "0 0.005742 \n",
+ "1 0.008027 \n",
+ "2 0.008513 \n",
+ "3 0.004996 \n",
+ "4 0.007871 \n",
+ "... ... \n",
+ "21608 0.000986 \n",
+ "21609 0.007523 \n",
+ "21610 0.001558 \n",
+ "21611 0.000731 \n",
+ "21612 0.000811 \n",
+ "\n",
+ "[21613 rows x 21 columns]"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "encoder = LabelEncoder()\n",
+ "for i in categorical:\n",
+ " house[i] = encoder.fit_transform(house[i])\n",
+ "house"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Задание 5\n",
+ "##### Оцените корреляцию между признаков и удалите те признаки, которые коррелируют с наибольшим числом других;"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "id -0.016534\n",
+ "date -0.004649\n",
+ "price 1.000000\n",
+ "bedrooms 0.308350\n",
+ "bathrooms 0.525138\n",
+ "sqft_living 0.702035\n",
+ "sqft_lot 0.089661\n",
+ "floors 0.256794\n",
+ "waterfront 0.266369\n",
+ "view 0.397293\n",
+ "condition 0.036362\n",
+ "grade 0.667434\n",
+ "sqft_above 0.605567\n",
+ "sqft_basement 0.323816\n",
+ "yr_built 0.054012\n",
+ "yr_renovated 0.126434\n",
+ "zipcode -0.053203\n",
+ "lat 0.307003\n",
+ "long 0.021626\n",
+ "sqft_living15 0.585379\n",
+ "sqft_lot15 0.082447\n",
+ "Name: price, dtype: float64"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sn.heatmap(house.corr())\n",
+ "house.corr()['price']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "id : weak corr!!!\n",
+ "date : weak corr!!!\n",
+ "price : 1.000000\n",
+ "bedrooms : 0.308350\n",
+ "bathrooms : 0.525138\n",
+ "sqft_living : 0.702035\n",
+ "sqft_lot : weak corr!!!\n",
+ "floors : 0.256794\n",
+ "waterfront : 0.266369\n",
+ "view : 0.397293\n",
+ "condition : weak corr!!!\n",
+ "grade : 0.667434\n",
+ "sqft_above : 0.605567\n",
+ "sqft_basement : 0.323816\n",
+ "yr_built : weak corr!!!\n",
+ "yr_renovated : weak corr!!!\n",
+ "zipcode : weak corr!!!\n",
+ "lat : 0.307003\n",
+ "long : weak corr!!!\n",
+ "sqft_living15 : 0.585379\n",
+ "sqft_lot15 : weak corr!!!\n"
+ ]
+ }
+ ],
+ "source": [
+ "for name, val in zip(house.columns, house.corr()['price']):\n",
+ " print(f\"{name:<30}: \", end='')\n",
+ " print(f'{val:>10.6f}') if abs(val) > 0.25 else print('weak corr!!!')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "id : -0.016534\n",
+ "date : -0.004649\n",
+ "price : strong corr!!!\n",
+ "bedrooms : strong corr!!!\n",
+ "bathrooms : strong corr!!!\n",
+ "sqft_living : strong corr!!!\n",
+ "sqft_lot : 0.089661\n",
+ "floors : strong corr!!!\n",
+ "waterfront : strong corr!!!\n",
+ "view : strong corr!!!\n",
+ "condition : 0.036362\n",
+ "grade : strong corr!!!\n",
+ "sqft_above : strong corr!!!\n",
+ "sqft_basement : strong corr!!!\n",
+ "yr_built : 0.054012\n",
+ "yr_renovated : 0.126434\n",
+ "zipcode : -0.053203\n",
+ "lat : strong corr!!!\n",
+ "long : 0.021626\n",
+ "sqft_living15 : strong corr!!!\n",
+ "sqft_lot15 : 0.082447\n",
+ "['sqft_lot', 'condition', 'yr_built', 'yr_renovated', 'zipcode', 'long', 'sqft_lot15']\n"
+ ]
+ }
+ ],
+ "source": [
+ "cols = []\n",
+ "for name, val in zip(house.columns, house.corr()['price']):\n",
+ " print(f\"{name:<30}: \", end='')\n",
+ " print(f'{val:>10.6f}') if abs(val) < 0.25 else print('strong corr!!!')\n",
+ " \n",
+ " cols.append(name) if abs(val) < 0.25 else \"\"\n",
+ "cols=cols[2:]\n",
+ "print(cols)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " date | \n",
+ " price | \n",
+ " bedrooms | \n",
+ " bathrooms | \n",
+ " sqft_living | \n",
+ " floors | \n",
+ " waterfront | \n",
+ " view | \n",
+ " grade | \n",
+ " sqft_above | \n",
+ " sqft_basement | \n",
+ " lat | \n",
+ " sqft_living15 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 15339 | \n",
+ " 164 | \n",
+ " 0.019266 | \n",
+ " 0.090909 | \n",
+ " 0.12500 | \n",
+ " 0.067170 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.500000 | \n",
+ " 0.097588 | \n",
+ " 0.000000 | \n",
+ " 0.571498 | \n",
+ " 0.161934 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 14466 | \n",
+ " 220 | \n",
+ " 0.060721 | \n",
+ " 0.090909 | \n",
+ " 0.28125 | \n",
+ " 0.172075 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.500000 | \n",
+ " 0.206140 | \n",
+ " 0.082988 | \n",
+ " 0.908959 | \n",
+ " 0.222165 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 13503 | \n",
+ " 290 | \n",
+ " 0.013770 | \n",
+ " 0.060606 | \n",
+ " 0.12500 | \n",
+ " 0.036226 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.416667 | \n",
+ " 0.052632 | \n",
+ " 0.000000 | \n",
+ " 0.936143 | \n",
+ " 0.399415 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 6371 | \n",
+ " 220 | \n",
+ " 0.069377 | \n",
+ " 0.121212 | \n",
+ " 0.37500 | \n",
+ " 0.126038 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.500000 | \n",
+ " 0.083333 | \n",
+ " 0.188797 | \n",
+ " 0.586939 | \n",
+ " 0.165376 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 4955 | \n",
+ " 283 | \n",
+ " 0.057049 | \n",
+ " 0.090909 | \n",
+ " 0.25000 | \n",
+ " 0.104906 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.583333 | \n",
+ " 0.152412 | \n",
+ " 0.000000 | \n",
+ " 0.741354 | \n",
+ " 0.241094 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 21608 | \n",
+ " 574 | \n",
+ " 19 | \n",
+ " 0.037377 | \n",
+ " 0.090909 | \n",
+ " 0.31250 | \n",
+ " 0.093585 | \n",
+ " 0.8 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.583333 | \n",
+ " 0.135965 | \n",
+ " 0.000000 | \n",
+ " 0.874055 | \n",
+ " 0.194631 | \n",
+ "
\n",
+ " \n",
+ " | 21609 | \n",
+ " 14564 | \n",
+ " 288 | \n",
+ " 0.042623 | \n",
+ " 0.121212 | \n",
+ " 0.31250 | \n",
+ " 0.152453 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.583333 | \n",
+ " 0.221491 | \n",
+ " 0.000000 | \n",
+ " 0.570693 | \n",
+ " 0.246257 | \n",
+ "
\n",
+ " \n",
+ " | 21610 | \n",
+ " 3621 | \n",
+ " 52 | \n",
+ " 0.042898 | \n",
+ " 0.060606 | \n",
+ " 0.09375 | \n",
+ " 0.055094 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.500000 | \n",
+ " 0.080044 | \n",
+ " 0.000000 | \n",
+ " 0.705324 | \n",
+ " 0.106866 | \n",
+ "
\n",
+ " \n",
+ " | 21611 | \n",
+ " 629 | \n",
+ " 252 | \n",
+ " 0.042623 | \n",
+ " 0.090909 | \n",
+ " 0.31250 | \n",
+ " 0.098868 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.583333 | \n",
+ " 0.143640 | \n",
+ " 0.000000 | \n",
+ " 0.608975 | \n",
+ " 0.173980 | \n",
+ "
\n",
+ " \n",
+ " | 21612 | \n",
+ " 3622 | \n",
+ " 166 | \n",
+ " 0.032787 | \n",
+ " 0.060606 | \n",
+ " 0.09375 | \n",
+ " 0.055094 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.500000 | \n",
+ " 0.080044 | \n",
+ " 0.000000 | \n",
+ " 0.704842 | \n",
+ " 0.106866 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
21613 rows × 14 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id date price bedrooms bathrooms sqft_living floors \\\n",
+ "0 15339 164 0.019266 0.090909 0.12500 0.067170 0.0 \n",
+ "1 14466 220 0.060721 0.090909 0.28125 0.172075 0.4 \n",
+ "2 13503 290 0.013770 0.060606 0.12500 0.036226 0.0 \n",
+ "3 6371 220 0.069377 0.121212 0.37500 0.126038 0.0 \n",
+ "4 4955 283 0.057049 0.090909 0.25000 0.104906 0.0 \n",
+ "... ... ... ... ... ... ... ... \n",
+ "21608 574 19 0.037377 0.090909 0.31250 0.093585 0.8 \n",
+ "21609 14564 288 0.042623 0.121212 0.31250 0.152453 0.4 \n",
+ "21610 3621 52 0.042898 0.060606 0.09375 0.055094 0.4 \n",
+ "21611 629 252 0.042623 0.090909 0.31250 0.098868 0.4 \n",
+ "21612 3622 166 0.032787 0.060606 0.09375 0.055094 0.4 \n",
+ "\n",
+ " waterfront view grade sqft_above sqft_basement lat \\\n",
+ "0 0.0 0.0 0.500000 0.097588 0.000000 0.571498 \n",
+ "1 0.0 0.0 0.500000 0.206140 0.082988 0.908959 \n",
+ "2 0.0 0.0 0.416667 0.052632 0.000000 0.936143 \n",
+ "3 0.0 0.0 0.500000 0.083333 0.188797 0.586939 \n",
+ "4 0.0 0.0 0.583333 0.152412 0.000000 0.741354 \n",
+ "... ... ... ... ... ... ... \n",
+ "21608 0.0 0.0 0.583333 0.135965 0.000000 0.874055 \n",
+ "21609 0.0 0.0 0.583333 0.221491 0.000000 0.570693 \n",
+ "21610 0.0 0.0 0.500000 0.080044 0.000000 0.705324 \n",
+ "21611 0.0 0.0 0.583333 0.143640 0.000000 0.608975 \n",
+ "21612 0.0 0.0 0.500000 0.080044 0.000000 0.704842 \n",
+ "\n",
+ " sqft_living15 \n",
+ "0 0.161934 \n",
+ "1 0.222165 \n",
+ "2 0.399415 \n",
+ "3 0.165376 \n",
+ "4 0.241094 \n",
+ "... ... \n",
+ "21608 0.194631 \n",
+ "21609 0.246257 \n",
+ "21610 0.106866 \n",
+ "21611 0.173980 \n",
+ "21612 0.106866 \n",
+ "\n",
+ "[21613 rows x 14 columns]"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "house.drop(cols, axis=1, inplace=True)\n",
+ "house"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Задание 6\n",
+ "##### Заполните пропущенные значения в данных;\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "id 0\n",
+ "date 0\n",
+ "price 0\n",
+ "bedrooms 0\n",
+ "bathrooms 0\n",
+ "sqft_living 0\n",
+ "floors 0\n",
+ "waterfront 0\n",
+ "view 0\n",
+ "grade 0\n",
+ "sqft_above 0\n",
+ "sqft_basement 0\n",
+ "lat 0\n",
+ "sqft_living15 0\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "house.isna().sum()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Пропущенных значений нет"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Задание 7\n",
+ "##### Решите поставленную задачу регрессии в соответствии с заданием. При подборе параметров метода принятия решения (метода регрессии) используйте перекрёстную проверку (изучите возможные для изменения параметры метода регрессии). Вычислите точность решения задачи, вычислив разницу между реальным значением и предсказанным. Вычислите коэффициент корреляции (Пирсона, Спирмена) между реальным значением и предсказанным с учётом p-value."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Lasso(alpha=0.1)"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "from sklearn import linear_model\n",
+ "# линейная регрессия, LASSO регуляризатор.\n",
+ "x, y = house.drop(['price', 'date'], axis=1), house['price']\n",
+ "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 123)\n",
+ "\n",
+ "reg = linear_model.Lasso (alpha = 0.1)\n",
+ "reg.fit (x_train, y_train) # Вычисляем оптимальные значения"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([-1.26138531e-07, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
+ " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
+ " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00])"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "reg.coef_"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[0.06081472 0.06068783 0.05984119 0.06123766 0.0602056 0.06136898\n",
+ " 0.06176846 0.0618816 0.06090352 0.06215734]\n"
+ ]
+ }
+ ],
+ "source": [
+ "xt = reg.predict(x_test)\n",
+ "print(xt[:10])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "5506 0.060000\n",
+ "9279 0.043934\n",
+ "16034 0.092787\n",
+ "6608 0.120656\n",
+ "20359 0.026754\n",
+ "8798 0.013115\n",
+ "10035 0.080525\n",
+ "13321 0.026230\n",
+ "15842 0.051148\n",
+ "12119 0.056525\n",
+ "Name: price, dtype: float64\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(y_test[:10])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "5506 0.000815\n",
+ "9279 0.016753\n",
+ "16034 -0.032946\n",
+ "6608 -0.059418\n",
+ "20359 0.033452\n",
+ "8798 0.048254\n",
+ "10035 -0.018756\n",
+ "13321 0.035652\n",
+ "15842 0.009756\n",
+ "12119 0.005633\n",
+ "Name: price, dtype: float64\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(xt[:10]-y_test[:10])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.06222583423075206"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "reg.intercept_"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "LinearRegression()"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# линейная регрессия без использования регуляризаторов;\n",
+ "x, y = house.drop(['price','date' ], axis=1), house['price']\n",
+ "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 123)\n",
+ "\n",
+ "reg = linear_model.LinearRegression()\n",
+ "\n",
+ "reg.fit(x_train,y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([-1.08963613e-07, -1.02642038e-01, -6.55608472e-03, 1.25559247e-01,\n",
+ " -1.06380304e-02, 8.47949706e-02, 3.48565991e-02, 1.36639216e-01,\n",
+ " 1.42910023e-01, 7.47553146e-02, 5.52860562e-02, 1.52070983e-03])"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "reg.coef_"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "-0.08326686045108067"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "reg.intercept_"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0.016352244805927955\n",
+ "0.0015439396422982205\n"
+ ]
+ }
+ ],
+ "source": [
+ "corr={}\n",
+ "corr['pearson'], _ = stats.pearsonr(xt,y_test) #коэффициент корреляции\n",
+ "corr['spearman'], _ = stats.spearmanr(xt,y_test)\n",
+ "print(corr['pearson'])\n",
+ "print(corr['spearman'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "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.9.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}