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.