Шаг 85.
Введение в машинное обучение с использованием Python. Методы машинного обучения ... . Влияние предварительной обработки на машинное обучение с учителем

    На этом шаге мы рассмотрим, как влияет предварительная обработка на получаемые результаты.

    Теперь давайте вернемся к набору данных cancer и посмотрим, как использование MinMaxScaler повлияет на обучение SVC (мы выполняем то же самое масштабирование, что делали ранее, но другим способом). Во-первых, давайте для сравнения снова прогоним SVC на исходных данных:

[In 10]:
from sklearn.svm import SVC
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target,
                                                    random_state=0)
svm = SVC(C=100)
svm.fit(X_train, y_train)
print("Правильность на тестовом наборе: {:.2f}".format(svm.score(X_test, y_test)))

Правильность на тестовом наборе: 0.94

    Теперь давайте отмасштабируем данные с помощью MinMaxScaler перед тем, как подгонять SVC:

[In 11]:
# предварительная обработка с помощью шкалирования 0-1
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)
# построение SVM на масштабированных обучающих данных
svm.fit(X_train_scaled, y_train)
# оценка правильности для масштабированного тестового набора
print("Правильность на масштабированном тестовом наборе: {:.2f}".format(
    svm.score(X_test_scaled, y_test)))

Правильность на масштабированном тестовом наборе: 0.97

    Как мы уже видели ранее, эффект масштабирования данных оказался в данном случае не слишком существенен, хотя в некоторых ситуациях он может оказаться значительно серьезнее. Хотя масштабирование данных не предполагает каких-либо сложных математических расчетов, эффективная практика заключается в том, чтобы использовать методы масштабирования, предлагаемые scikit-learn, а не создавать их заново самостоятельно, поскольку легко ошибиться даже в этих простых вычислениях.

    Кроме того, можно легко заменить один алгоритм предварительной обработки на другой, сменив имя используемого класса, поскольку все классы предварительной обработки имеют один и тот же интерфейс, состоящий из методов fit() и transform():

[In 12]:
# предварительная обработка с помощью масштабирования
# нулевым средним и единичной дисперсией
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)
# построение SVM на масштабированных обучающих данных
svm.fit(X_train_scaled, y_train)
# оценка правильности для масштабированного тестового набора
print("Правильность SVM на тестовом наборе: {:.2f}".format(svm.score(X_test_scaled, y_test)))

Правильность SVM на тестовом наборе: 0.96

    Теперь узнав, как работают простые преобразования, выполняющие предварительную обработку данных, давайте перейдем к более интересным преобразованиям, использующим машинное обучение без учителя.

    На следующем шаге мы перечислим основные алгоритмы, которые используются в обучении без учителя.




Предыдущий шаг Содержание Следующий шаг