This is the notebook for the Outlier detection flow


In [10]:
from ipywidgets import widgets
from IPython.display import display


from pyspark.sql import functions as F
from pyspark.ml.feature import VectorAssembler, StandardScaler
from pyspark.sql.types import StringType,StructField,StructType,ArrayType,DoubleType
from pyspark.ml.linalg import Vectors, VectorUDT,Matrix,MatrixUDT,DenseMatrix
from pyspark.ml.clustering import KMeans
from pyspark.sql import Row
from pyspark.sql import Window
from pyspark.ml import Pipeline

import pandas as pd
import re
import random
from prettytable import PrettyTable
import sys
from datetime import datetime
from operator import add
import numpy as np
import matplotlib.pyplot as plt
#from spark_sklearn import GridSearchCV,Converter
PATH = "/home/svanhmic/workspace/Python/Erhvervs/data/cdata/"
sc.addPyFile("/home/svanhmic/workspace/Python/Erhvervs/src/cvr/GridSearchLogRegAndKmeans.py")

In [2]:



10
Out[2]:
<function __main__.choseKSlider>

In [3]:


In [4]:
def getAllDistances(matrix1,matrix2):
    return [[np.linalg.norm(v-w) for v in matrix1 ] for w in matrix2]

In [5]:
#Get all the cvr features and rename bad name rank into vaerdiSlope
df = (sqlContext
      .read
      .parquet(PATH+"featureDataCvr")
     )

rankCols = [re.sub(pattern="rank_",repl="vaerdiSlope_",string=i) for i in df.columns ]
renamedDf = (df
             .withColumn(colName="reklamebeskyttet",col=F.col("reklamebeskyttet").cast("double"))
             .select([F.col(val).alias(rankCols[idx]) for idx,val in enumerate(df.columns)])
            )


#Get all companies 
windowSpecRank =(Window.partitionBy(F.col("cvrNummer"))).orderBy(F.col("periode_gyldigFra").desc())

groupCols = ["cvrNummer","vaerdi"]

companyNameDf = (sqlContext
                 .read
                 .parquet(PATH+"companyCvrData")
                 .withColumn(colName="rank",col=F.rank().over(windowSpecRank))
                 .filter((F.col("rank")==1) & (F.col("sekvensnr")==0))
                 .select([F.col(i) for i in groupCols])
                 .withColumnRenamed(existing="vaerdi",new="navn")
                 .orderBy(F.col("cvrNummer"))
                 .cache()
                )

In [8]:
labelCols = ["navn","cvrNummer","label","status"]
featCols = [i for i in companyNameDf.columns+renamedDf.columns if i not in labelCols]
selectCols = [F.col(i[0]).cast("double") if i[1] == "bigint" else F.col(i[0]) for i in renamedDf.dtypes]


toDenseUDf = F.udf(lambda x: Vectors.dense(x.toArray()),VectorUDT())

#the steps in the pipeline is generated here
vectorizer = VectorAssembler(inputCols=featCols,outputCol="features")
standardScale = StandardScaler(withMean=True,withStd=True,inputCol=vectorizer.getOutputCol(),outputCol="scaledFeatures")

renamedWithCompaniesDf = (renamedDf
                          .join(companyNameDf,(companyNameDf["cvrNummer"]==renamedDf["cvrNummer"]),"left")
                          .drop(companyNameDf["cvrNummer"]) 
                          .select(selectCols)
                          .withColumn(col=F.col("cvrNummer").cast("long"),colName="cvrNummer")
                          .na
                          .fill(0.0,featCols)
                          .distinct()
                         )


[('cvrNummer', 'bigint'), ('status', 'array<string>'), ('label', 'double'), ('AarsVaerk_1', 'double'), ('AarsVaerk_2', 'double'), ('AarsVaerk_3', 'double'), ('AarsVaerk_4', 'double'), ('AarsVaerk_5', 'double'), ('AarsVaerk_6', 'double'), ('AarsVaerk_7', 'double'), ('AarsVaerk_8', 'double'), ('AarsVaerk_9', 'double'), ('AarsVaerk_10', 'double'), ('AarsVaerk_11', 'double'), ('AarsVaerk_12', 'double'), ('AarsVaerk_13', 'double'), ('AarsVaerk_14', 'double'), ('AarsVaerk_15', 'double'), ('medArb_1', 'double'), ('medArb_2', 'double'), ('medArb_3', 'double'), ('medArb_4', 'double'), ('medArb_5', 'double'), ('medArb_6', 'double'), ('medArb_7', 'double'), ('medArb_8', 'double'), ('medArb_9', 'double'), ('medArb_10', 'double'), ('medArb_11', 'double'), ('medArb_12', 'double'), ('medArb_13', 'double'), ('medArb_14', 'double'), ('medArb_15', 'double'), ('avgVarighed', 'double'), ('totalAabneEnheder', 'double'), ('totalLukketEnheder', 'double'), ('vaerdiSlope_1', 'double'), ('vaerdiSlope_2', 'double'), ('vaerdiSlope_3', 'double'), ('vaerdiSlope_4', 'double'), ('vaerdiSlope_5', 'double'), ('vaerdiSlope_6', 'double'), ('vaerdiSlope_7', 'double'), ('reklamebeskyttet', 'double'), ('kortBeskrivelse', 'string')]

In [9]:
renamedWithCompaniesDf.show()


+---------+--------------------+-----+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+------------+------------+------------+------------+------------+------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+---------+---------+------------------+-----------------+------------------+------------------+------------------+-------------+-------------+-------------+-------------+-------------+----------------+---------------+
|cvrNummer|              status|label|AarsVaerk_1|AarsVaerk_2|AarsVaerk_3|AarsVaerk_4|AarsVaerk_5|AarsVaerk_6|AarsVaerk_7|AarsVaerk_8|AarsVaerk_9|AarsVaerk_10|AarsVaerk_11|AarsVaerk_12|AarsVaerk_13|AarsVaerk_14|AarsVaerk_15|medArb_1|medArb_2|medArb_3|medArb_4|medArb_5|medArb_6|medArb_7|medArb_8|medArb_9|medArb_10|medArb_11|medArb_12|medArb_13|medArb_14|medArb_15|       avgVarighed|totalAabneEnheder|totalLukketEnheder|     vaerdiSlope_1|     vaerdiSlope_2|vaerdiSlope_3|vaerdiSlope_4|vaerdiSlope_5|vaerdiSlope_6|vaerdiSlope_7|reklamebeskyttet|kortBeskrivelse|
+---------+--------------------+-----+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+------------+------------+------------+------------+------------+------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+---------+---------+------------------+-----------------+------------------+------------------+------------------+-------------+-------------+-------------+-------------+-------------+----------------+---------------+
| 20667885|[TVANGSOPLØST, UN...|  0.0|        1.0|        2.0|        1.0|        1.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     1.0|     5.0|     1.0|     1.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|            1498.0|              1.0|               0.0|               0.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 29222487|[TVANGSOPLØST, UN...|  0.0|        5.0|        5.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     5.0|     5.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|1003.6666666666666|              3.0|               0.0|               0.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 31418925|            [NORMAL]|  0.0|        5.0|        5.0|        2.0|        1.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     5.0|     5.0|     2.0|     2.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|               0.0|              0.0|               2.0|155.73089700996678|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            A/S|
| 32099807|            [NORMAL]|  0.0|        1.0|        2.0|        1.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     2.0|     1.0|     1.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|               0.0|              0.0|               1.0|               0.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            A/S|
| 75588119|[TVANGSOPLØST, UN...|  0.0|        1.0|        1.0|        1.0|        1.0|        1.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     0.0|    10.0|    10.0|    10.0|    10.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|            3183.5|              2.0|               0.0|13.173302107728338|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 10536596|[OPLØST EFTER FRI...|  0.0|        5.0|        5.0|        5.0|        5.0|       10.0|        5.0|        5.0|        5.0|        5.0|         5.0|         0.0|         0.0|         0.0|         0.0|         0.0|     5.0|     5.0|     5.0|     5.0|    10.0|    10.0|    10.0|     5.0|     5.0|      5.0|      0.0|      0.0|      0.0|      0.0|      0.0|            5718.0|              1.0|               0.0|343.07931570762054|204.49897750511246|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            EFO|
| 14553401|            [NORMAL]|  0.0|        1.0|        1.0|        1.0|        0.0|        0.0|        0.0|        0.0|        1.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     0.0|     1.0|     0.0|     0.0|     2.0|     2.0|     2.0|     2.0|     2.0|      1.0|      2.0|      2.0|      2.0|      1.0|      0.0|               0.0|              0.0|               1.0|  89.6121266161391|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            A/S|
| 21781681|            [NORMAL]|  0.0|       10.0|       10.0|       10.0|       10.0|       10.0|       10.0|       10.0|       10.0|       10.0|        10.0|        10.0|        10.0|        10.0|         0.0|         0.0|    10.0|    20.0|    20.0|    20.0|    20.0|    10.0|    10.0|    10.0|    10.0|     10.0|     10.0|     10.0|     10.0|      0.0|      0.0|               0.0|              0.0|               1.0|               0.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            A/S|
| 31781590|            [NORMAL]|  0.0|        1.0|        1.0|        1.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     1.0|     1.0|     1.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|               0.0|              0.0|               1.0|               0.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 75159412|            [NORMAL]|  0.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|         5.0|         5.0|         5.0|         2.0|         2.0|         2.0|     5.0|     5.0|     5.0|     5.0|     5.0|     5.0|     5.0|     5.0|     5.0|      5.0|      5.0|      5.0|      5.0|      2.0|      2.0|               0.0|              0.0|               1.0|23.467292461132296|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 81212015|            [NORMAL]|  0.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|         5.0|         5.0|         5.0|         5.0|         5.0|         5.0|     5.0|     5.0|     5.0|     5.0|     5.0|    10.0|    10.0|    10.0|    10.0|     10.0|     10.0|     10.0|     10.0|     10.0|     10.0|               0.0|              0.0|               1.0|32.008535609495866|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 82060812|            [NORMAL]|  0.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|        5.0|         5.0|         5.0|         5.0|         5.0|         5.0|         5.0|     5.0|     5.0|     5.0|     5.0|     5.0|     5.0|     5.0|     5.0|     5.0|      5.0|      5.0|      5.0|      5.0|     10.0|      5.0|               0.0|              0.0|               1.0| 38.31417624521073|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 10003725|[UNDER KONKURS, N...|  1.0|        5.0|        5.0|       10.0|        5.0|        5.0|        5.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|    20.0|    10.0|    10.0|    10.0|    20.0|    10.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|               0.0|              0.0|               1.0|-615.3846153846154|30.389363722697055|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 34579334|            [NORMAL]|  0.0|        1.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     2.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|             200.0|              1.0|               1.0|               0.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 17710699|            [NORMAL]|  0.0|        1.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|             213.0|              1.0|               1.0| 559.7014925373135|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            A/S|
| 29841586|[TVANGSOPLØST, UN...|  0.0|        1.0|        1.0|        1.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     1.0|     1.0|     1.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|            1246.0|              1.0|               0.0|               0.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 32355846|            [NORMAL]|  0.0|        1.0|        1.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     2.0|     1.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|               0.0|              0.0|               1.0|               0.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 34086540|            [NORMAL]|  0.0|        2.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|     5.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|               0.0|              0.0|               1.0|               0.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 19273075|[OPLØST EFTER KON...|  1.0|        1.0|        2.0|        2.0|        2.0|        2.0|        2.0|        2.0|        2.0|        2.0|         2.0|         2.0|         2.0|         0.0|         0.0|         0.0|     0.0|     0.0|     2.0|     5.0|     5.0|     5.0|     5.0|     5.0|     5.0|      5.0|      2.0|      5.0|      0.0|      0.0|      0.0|            2919.0|              2.0|               0.0|               0.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            APS|
| 19374335|[OPLØST EFTER FUS...|  0.0|       50.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|        0.0|         0.0|         0.0|         0.0|         0.0|         0.0|         0.0|    50.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|     0.0|      0.0|      0.0|      0.0|      0.0|      0.0|      0.0|             670.0|              2.0|               0.0|           12500.0|               0.0|          0.0|          0.0|          0.0|          0.0|          0.0|             0.0|            A/S|
+---------+--------------------+-----+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+------------+------------+------------+------------+------------+------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+---------+---------+------------------+-----------------+------------------+------------------+------------------+-------------+-------------+-------------+-------------+-------------+----------------+---------------+
only showing top 20 rows


In [ ]: