DS В РЕАЛЬНОМ МИРЕ

Хаки для программирования машинного обучения, которые должен знать каждый инженер по данным - Часть 1

Шпаргалка для специалистов по анализу данных и машинного обучения.

Начнем прямо сейчас.

1. Объект с многоточием (…):

Это объект в Python, который можно использовать для нарезки матриц в пакете Numpy, а также для нарезки общих списков. Основная цель этого объекта - упростить работу с многомерными массивами. Несколько индексов в массиве Numpy можно заменить на… (объект с многоточием).

Кроме того, его можно использовать вместо команды pass в Python для реализации «без операции» при определении пустых функций.

>>> import numpy as np
>>> a = np.array([[[i + 2*j + 8*k for i in range(3)] for j in range(3)] for k in range(3)])
>>> arr = np.array(a)
>>> arr
array([[[ 0,  1,  2], [ 2,  3,  4], [ 4,  5,  6]],
[[ 8,  9, 10], [10, 11, 12], [12, 13, 14]],
[[16, 17, 18], [18, 19, 20], [20, 21, 22]]])
>>> arr[1,...]
array([[ 8,  9, 10], [10, 11, 12], [12, 13, 14]])
>>> arr[...,1]
array([[ 1,  3,  5], [ 9, 11, 13], [17, 19, 21]])

2. * & @ Сокращенные операторы:

Две основные матричные операции numpy: np.multiply (A, B) и np.matmul (A, B), которые вычисляют поэлементное умножение и матричное умножение соответственно. Np.multiply (A, B) может быть реализован как A * B, а np.matmul (A, B) может быть реализован как A @ B.

>>> import numpy as np
>>> A = np.random.rand(2,2)
>>> B = np.random.rand(2,2)
>>> np.multiply(A,B)
array([[0.69938897, 0.08791922], [0.23572921, 0.04930693]])
>>> A*B
array([[0.69938897, 0.08791922], [0.23572921, 0.04930693]])
>>> np.matmul(A,B)
array([[0.75990246, 0.74811588], [0.49980481, 0.39179465]])
>>> A@B
array([[0.75990246, 0.74811588], [0.49980481, 0.39179465]])

3. Выборка / перемешивание набора данных:

Объект pandas DataFrame можно перемешать случайным образом с помощью одной функции pandas.DataFrame.sample ().

>>> import pandas as pd
>>> df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
                       'num_specimen_seen': [10, 2, 1, 8]},
                       index=['falcon', 'dog', 'spider', 'fish'])
>>> df
        num_legs  num_specimen_seen
falcon         2                 10
dog            4                  2
spider         8                  1
fish           0                  8
>>> df.sample(frac=1, random_state=2)
        num_legs  num_specimen_seen
spider         8                  1
fish           0                  8
dog            4                  2
falcon         2                 10

4. Норма LP:

Норма - это своего рода мера от векторного пространства над комплексными или действительными числами до положительных действительных чисел. LP Norm - это обобщенная форма p-нормы для конечных размеров. P-норма определяется как сумма векторов, возведенных в степень p, затем возведенных в степень, обратную p. Формула имеет следующий вид:

Когда p = 1, его норма L1, также известная как Манхэттенское расстояние, и норма абсолютного значения, используемая в регрессии Лассо как потеря L1 (MAE).

Когда p = 2, его норма L2, также известная как евклидово расстояние, используется в регрессии хребта как потеря L2 (MSE).

Точно так же p = 3,4,… может использоваться для вычисления норм различного уровня и может использоваться как функции потерь в различных алгоритмах машинного обучения.

5. Обработка дисбаланса классов:

Во всех реализациях алгоритмов машинного обучения scikit learn есть параметр, известный как «class_weight», который необходимо установить как «сбалансированный» или объект словаря Python с весами для всех образцов.

>>> rfc = RandomForestClassifier(class_weight='balanced')
>>> rfc.fit(df_train_pca,y_train)

6. Загрузка набора данных ARFF:

В большинстве случаев при работе с наборами данных нам предоставляются файлы .csv или .xls, которые можно читать напрямую с помощью функций pandas.read_csv () или pandas.read_excel (). . Но иногда для анализа также предоставляются файлы .arff, которые также используются для записи экземпляров набора атрибутов, как и .csv, но более чувствительны к производительности и использованию памяти. Мы можем прочитать это в pandas, используя библиотеку arff в pandas DataFrame следующим образом:

>>> import arff
>>> df = pd.DataFrame(arff.loadarff('./Training Dataset.arff')[0])
>>> df = df.select_dtypes([np.object])
>>> df = df.stack().str.decode('utf-8').unstack()

7. Изображение PIL:

PIL - это библиотека изображений Python, которая предоставляет возможность манипулировать изображениями и отображать их с помощью интерпретатора Python.

# importing Image class from PIL package
>>> from PIL import Image
# creating a image object
>>> im = Image.open(r"/Users/killerHack/Desktop/Hackint.jpg")
>>> im.show()

8. Отображение с помощью pandas.Series.map ():

При манипулировании значениями столбцов в pandas DataFrame, например при преобразовании категориальных значений в числовые. Функцию pandas.Series.map () можно использовать в столбцах Series или DataFrame для замены различных значений на другой набор значений следующим образом:

>>> s = pd.Series(['cat', 'dog', np.nan, 'rabbit'])
>>> s.map({'cat': 'kitten', 'dog': 'puppy'})
0   kitten
1    puppy
2      NaN
3      NaN
dtype: object

9. Сводная таблица:

Большинство людей имеют опыт работы со сводными таблицами в Excel и могут использовать то же самое здесь, в Python, с функцией pandas.pivot_table (). Сводные таблицы используются для суммирования данных с некоторыми столбцами для большой обширной таблицы.

>>> import pandas as pd
>>> df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
...                           "bar", "bar", "bar", "bar"],
...                     "B": ["one", "one", "one", "two", "two",
...                           "one", "one", "two", "two"],
...                     "C": ["small", "large", "large", "small",
...                           "small", "large", "small", "small", "large"],
...                     "D": [1, 2, 2, 3, 3, 4, 5, 6, 7]})
>>> df
     A    B      C  D
0  foo  one  small  1
1  foo  one  large  2
2  foo  one  large  2
3  foo  two  small  3
4  foo  two  small  3
5  bar  one  large  4
6  bar  one  small  5
7  bar  two  small  6
8  bar  two  large  7
>>> table = pd.pivot_table(df, values='D', index=['A', 'B'],
...                      columns=['C'], aggfunc=np.sum)
>>> table
C        large  small
A   B                
bar one    4.0    5.0
    two    7.0    6.0
foo one    4.0    1.0
    two    NaN    6.0

10. Параметры стиля Matplotlib:

matplotlib - это библиотека построения графиков, используемая для создания статических и динамических визуализаций в Python. При построении графика с использованием matplotlib некоторые важные параметры стиля можно изменить в соответствии с требованиями графика с помощью объекта matplotlib.rcParams.

import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.serif'] = 'Ubuntu'
plt.rcParams['font.monospace'] = 'Ubuntu Mono'
plt.rcParams['font.size'] = 10
plt.rcParams['axes.labelsize'] = 12
plt.rcParams['axes.titlesize'] = 12
plt.rcParams['xtick.labelsize'] = 8
plt.rcParams['ytick.labelsize'] = 8
plt.rcParams['legend.fontsize'] = 12
plt.rcParams['figure.titlesize'] = 14
plt.rcParams['figure.figsize'] = (12, 8)

На этом пока все. В следующих нескольких частях я расскажу больше об этих важных приемах и функциях, о которых должен знать каждый инженер по данным. Будьте на связи.

[ОБНОВЛЕНО]
Переходите к следующей части ..





Спасибо за прочтение. Вы можете найти другие мои посты по машинному обучению здесь.

Надеюсь, этот пост был полезен. Я ценю отзывы и конструктивную критику. Если вы хотите поговорить об этой статье или других связанных темах, вы можете написать мне здесь или в LinkedIn.