Ml

Benchmarking hardware for ML/DL

This page contains results and explanations of benchmarking metrics for my hardware:

Read more >

Machine Learning Example with Pandas

Source: https://www.w3resource.com/python-exercises/pandas/pandas-machine-learning-integration.php

Structure of data.csv:

ID	Name	  Age	Gender	Salary	 Target
1,Sara,25,Female,50000,0
2,Ophrah,30,Male,60000,1
3,Torben,22,Male,70000,0
4,Masaharu,35,Male,80000,1
5,Kaya,NaN,Female,55000,0
6,Abaddon,29,Male,NaN,1
Column Description:

ID: A unique identifier for each record (integer). Name: The name of the individual (string). Age: Age of the individual (numerical, may have missing values). Gender: Gender of the individual (categorical: Male/Female). Salary: The individual’s salary (numerical, may have missing values). Target: The target variable for binary classification (binary: 0 or 1).

Read more >

Python

Data Types

categorytypes
textstr
numericint, float, complex
sequencelist, tuple, range
mappingdict
setset, frozenset
booleanbool
binarybytes, bytearray, memoryview
noneNoneType

Time Complexities 1

lists

operationtime complexity
sequence.append(item)\(\mathcal{O}(1)\)
sequence.pop(item)\(\mathcal{O}(1)\)
sequence.insert(0,item)\(\mathcal{O}(n)\)
sequence.pop(item,0) {{< mnote “slow because popping at start requires shifting all indices down” >}}\(\mathcal{O}(n)\)
sequence[index]\(\mathcal{O}(1)\)
sequence[index]=value\(\mathcal{O}(1)\)
item in sequence\(\mathcal{O}(n)\)
len(sequence)\(\mathcal{O}(1)\)
sequence.extend(iterable)\(\mathcal{O}(k)\)
sequence + other_sequence\(\mathcal{O}(n+k)\)
sequence[index:index+k]\(\mathcal{O}(k)\)
sequence.index(item)\(\mathcal{O}(n)\)
sequence.count(item)\(\mathcal{O}(n)\)
for item in sequence:\(\mathcal{O}(n)\)

double-ended queue (deque)

operationdescriptiontime complexity
queue.append(item)Add item to right end\(\mathcal{O}(1)\)
queue.appendleft(item)Add item to left end\(\mathcal{O}(1)\)
queue.pop()Remove and return item from right end\(\mathcal{O}(1)\)
queue.popleft()Remove and return item from left end\(\mathcal{O}(1)\)
queue.extend(iterable)Add all elements from iterable to right end\(\mathcal{O}(k)\)
queue.extendleft(iterable)Add all elements from iterable to left (reversed)\(\mathcal{O}(k)\)
queue.remove(value)Remove first occurrence of value\(\mathcal{O}(n)\)
queue.rotate(n)Rotate n steps right (negative for left)\(\mathcal{O}(k)\)
queue.clear()Remove all elements\(\mathcal{O}(n)\)
queue.count(value)Count occurrences of value\(\mathcal{O}(n)\)
queue.index(value)Find index of first occurrence of value\(\mathcal{O}(n)\)
queue.reverse()Reverse elements in place\(\mathcal{O}(n)\)
item in queueCheck if item exists in queue\(\mathcal{O}(n)\)
queue[0] or queue[-1]Access first or last element\(\mathcal{O}(1)\)
queue[i]Access element at index i\(\mathcal{O}(n)\)
for item in queueIterate through all elements\(\mathcal{O}(n)\)

dictionary

operationtime complexity
mapping[key]=value\(\mathcal{O}(1)\)
mapping[key]\(\mathcal{O}(1)\)
mapping.get(key)\(\mathcal{O}(1)\)
mapping.pop(key)\(\mathcal{O}(1)\)
key in mapping\(\mathcal{O}(1)\)
for k, v in mapping.items()\(\mathcal{O}(n)\)
next(iter(mapping))\(\mathcal{O}(1)\)
next(reversed(mapping))\(\mathcal{O}(1)\)
value in mapping.values()\(\mathcal{O}(n)\)
mapping.update(iterable)\(\mathcal{O}(k)\)

set

operationtime complexity
my_set.add(item)\(\mathcal{O}(1)\)
my_set.remove(item)\(\mathcal{O}(1)\)
item in my_set\(\mathcal{O}(1)\)
for item in my_set\(\mathcal{O}(n)\)
set1 & set2\(\mathcal{O}(n)\)
set1 | set2\(\mathcal{O}(n)\)
set1 ^ set2\(\mathcal{O}(n)\)
set1 - set2\(\mathcal{O}(n)\)

counter

operationtime complexity
counter[item]\(\mathcal{O}(1)\)
counter.pop(item)\(\mathcal{O}(1)\)
for k, v in counter.items():\(\mathcal{O}(n)\)
for k, v in counter.most_common():\(\mathcal{O}(n\log(n))\)
for k, v in counter.most_common(k):\(\mathcal{O}(n \log(k))\)
counter.update(iterable)\(\mathcal{O}(k)\)
counter.subtract(iterable)\(\mathcal{O}(k)\)
counter.total()\(\mathcal{O}(n)\)

heap / priority queue

operationtime complexity
heapq.heapify(sequence)\(\mathcal{O}(n)\)
heapq.heappop(sequence)\(\mathcal{O}(\log(n))\)
heapq.heappush(sequence, item)\(\mathcal{O}(\log(n))\)
sequence[0]\(\mathcal{O}(1)\)

sorted list

operationtime complexity
sorted_sequence = sorted(sequence)\(\mathcal{O}(n\log(n))\)
sorted_sequence.index(item)\(\mathcal{O}(n)\)
bisect.bisect(sorted_sequence, item)\(\mathcal{O}(\log(n))\)
bisect.insort(sorted_sequence, item)\(\mathcal{O}(n)\)

general traversals:

operationtime complexity
min(iterable)\(\mathcal{O}(n)\)
max(iterable)\(\mathcal{O}(n)\)
sorted(iterable)\(\mathcal{O}(n\log(n))\)
heapq.nsmallest(k, iterable)\(\mathcal{O}(n\log(k))\)
statistics.multimode(iterable)\(\mathcal{O}(n)\)