← На главную Воспоминания

Четверг, 11 Января 2024

Зарегистрировался на Huggingface, создал свой первый спейс.

Просмотрел второй урок из курса фаст аи

Сейчас читаю второй урок в виде ноутбука и выполняю пошагово, пытаясь понять что написано

Параллельно прохожу курс по фича инжинирингу на кагле

Feature Engineering - это создание новых фич(читай колонок в таблице) на основе уже имеющихся, чтобы помочь алгоритму машинного обучения в нахождении закономерности. Например если мы знаем как трансформировать данные так чтобы закономерность прослеживалась, мы можем это сделать. Нпример применить какую-либо формулу к нескольким колонкам, чтобы в результате получилась одна, на которой видна зависимость, например линейная. Чем сложнее формла, тем меньше шанс что алгоритм сам дайдет до такой формулы

Mutual Information - это способ сказать какие колонки более важные по сравнению с другими для предсказания нужной колонки. Мьючал информайшн показывает как сильно значение из предсказываемой колнки зависит от значения выбранной колонки

X = df.copy()
y = X.pop("price")

# Label encoding for categoricals
for colname in X.select_dtypes("object"):
    X[colname], _ = X[colname].factorize()

# All discrete features should now have integer dtypes (double-check this before using MI!)
discrete_features = X.dtypes == int

from sklearn.feature_selection import mutual_info_regression

def make_mi_scores(X, y, discrete_features):
    mi_scores = mutual_info_regression(X, y, discrete_features=discrete_features)
    mi_scores = pd.Series(mi_scores, name="MI Scores", index=X.columns)
    mi_scores = mi_scores.sort_values(ascending=False)
    return mi_scores

mi_scores = make_mi_scores(X, y, discrete_features)
mi_scores[::3]  # show a few features with their MI scores

так мы можем отрисовать эту информацию о зависимости

def plot_mi_scores(scores):
    scores = scores.sort_values(ascending=True)
    width = np.arange(len(scores))
    ticks = list(scores.index)
    plt.barh(width, scores)
    plt.yticks(width, ticks)
    plt.title("Mutual Information Scores")


plt.figure(dpi=100, figsize=(8, 5))
plot_mi_scores(mi_scores)

Дальше продолжу урок по созданию фич на кагле