Мнение, Программирование

Прекратите использовать ячейки среднего кода для вашего технического сообщения

Более четкое представление кода с помощью Github Gists

Детализация проблемы

Для тех, кто читает это и следил за моим постом в прошлом, вы можете назвать меня лицемером. Но, если вы не понимаете, о чем я говорю, вы можете просмотреть любую статью из моей серии «Алгоритмы с нуля»:



Алгоритмы с нуля - к науке о данных
Прочтите статью об алгоритмах с нуля в книге« На пути к науке о данных
. Публикация Medium обменивается концепциями, идеями и… в сторонуdatascience.com »



Я читал статью, в которой использовались закодированные примеры с ячейками кода Medium. Я так расстроился! В итоге я скопировал и вставил код в среду своей визуальной студии, и даже этого было недостаточно для сохранения кода - не было никаких отступов, поэтому мне в основном приходилось очищать код самостоятельно.

Если бы мне не было срочно разобраться в этой теме, я бы, вероятно, отказался от этой статьи и стал искать новую. Это был ужасный опыт, мягко говоря.

def plot_svm():
    # https://scikit-learn.org/stable/auto_examples/svm/plot_separating_hyperplane.html
    # getting the decision function
    plt.figure(figsize=(10, 5))
    decision_function = svc.decision_function(X)
    support_vector_indices = np.where((2 * y - 1) * decision_function <= 1)[0]
    support_vectors = X.iloc[support_vector_indices]

    # plot observations
    plt.scatter(X.iloc[:, 0], X.iloc[:, 1], c=y, cmap=plt.cm.Paired)

    # plot the decision function
    ax = plt.gca()
    xlim = ax.get_xlim()
    ylim = ax.get_ylim()

    # creating the grid to evaluate the model
    xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 50),
                         np.linspace(ylim[0], ylim[1], 50))
    Z = svc.decision_function(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)

    # plot decision boundaries and margins
    plt.contour(xx, yy, Z, colors='k', levels=[-1, 0, 1], alpha=0.5,
                linestyles=['--', '-', '--'])

    # plot support vectors
    plt.scatter(support_vectors.iloc[:, 0], support_vectors.iloc[:, 1], s=100,
                linewidth=1, facecolors='none', edgecolors='k')

    plt.title("Linear SVM (Hard Margin Classification)")
    plt.tight_layout()
    plt.show()

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

def gradient_descent(X, y, params, alpha, n_iter): 
    """
    Gradient descent to minimize cost function
    __________________ 
    Input(s)
    X: Training data
    y: Labels
    params: Dictionary contatining random coefficients
    alpha: Model learning rate
    __________________
    Output(s)
    params: Dictionary containing optimized coefficients
    """
    W = params["W"] 
    b = params["b"]
    m = X.shape[0] # number of training instances 

    for _ in range(n_iter): 
        # prediction with random weights
        y_pred = np.dot(X, W) + b
        # taking the partial derivative of coefficients
        dW = (2/m) * np.dot(X.T, (y_pred - y)) 
        db = (2/m) * np.sum(y_pred -  y)
        # updates to coefficients
        W -= alpha * dW
        b -= alpha * db 
    
    params["W"] = W
    params["b"] = b
    return params

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

Детализация решения

Лучшая стратегия - использовать Github Gist. Для ветеранов, присутствующих здесь, вы наверняка знаете, что это далеко от революционного открытия. Я собираюсь использовать первую ячейку кода (с трудным для чтения кодом) и создать Github Gist.

Я не гений в области математики, но уверен, что мы все можем согласиться с тем, что это в 3000 раз яснее, чем ячейка кода Medium, которую мы видели ранее. И, честно говоря, это имеет смысл, почему ...

Medium не оптимизирован для написания кода, он оптимизирован для писателей!

Как создать Gist и поделиться на Medium

Примечание: вам понадобится учетная запись Github!

Шаг 1. Щелкните значок "Плюс" в правом верхнем углу экрана и прокрутите вниз до раздела "Новая сущность".

Шаг 2. Дайте своему файлу имя, скопируйте и вставьте код из вашей IDE (или того, что вы используете). Вы также можете добавить файл, но я никогда не делал этого таким образом (без всякой причины в специфический). Затем выберите, хотите ли вы, чтобы ваш Gist был секретным или общедоступным, и, когда вы решили, создайте суть.

Шаг 3. Теперь ваш Gist создан. Чтобы получить его на Medium, просто скопируйте и вставьте URL-адрес Gist в Medium.

Это все, ребята!

Забрать

  • Средние ячейки кода затрудняют чтение вашего кода
  • Если вы действительно хотите использовать ячейки кода среднего размера, найдите время, чтобы ваш код выглядел аккуратно.
  • Github Gist - гораздо более простой и быстрый вариант.

Будем на связи…