В этом руководстве по Python мы узнаем, как работает генетический алгоритм scikit Learn, а также рассмотрим различные примеры, связанные с генетическими алгоритмами.

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

В следующем коде мы импортируем GeneticSelectionCv, из которого сможем выбрать объект из набора данных:

  • from __future__ import print_function используется для переноса функции печати из Python 3 в Python 2.6.
  • x = num.hstack ((iris.data, e)) используется для укладки последовательности входного массива по столбцам.
  • selectors = selectors.fit(x, Y) используется для подгонки данных в модель.
  • print (selectors.support_) используется для печати выбранных данных.
from __future__ import print_function
import numpy as num
from sklearn import datasets, linear_model

from genetic_selection import GeneticSelectionCV


def main():
    iris = datasets.load_iris()

    # Some noisy data not correlated
    e = num.random.uniform(0, 0.2, size=(len(iris.data), 30))

    x = num.hstack((iris.data, e))
    Y = iris.target

    estimators = linear_model.LogisticRegression(solver="liblinear", multi_class="ovr")

    selectors = GeneticSelectionCV(estimators,
                                  cv=6,
                                  verbose=2,
                                  scoring="accuracy",
                                  max_features=6,
                                  n_population=60,
                                  crossover_proba=0.6,
                                  mutation_proba=0.2,
                                  n_generations=50,
                                  crossover_independent_proba=0.6,
                                  mutation_independent_proba=0.06,
                                  tournament_size=4,
                                  n_gen_no_change=20,
                                  caching=True,
                                  n_jobs=-2)
    selectors = selectors.fit(x, Y)

    print(selectors.support_)


if __name__ == "__main__":
    main()

Выход:

После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что выбранные функции печатаются на экране.

Изучение генетического алгоритма

Содержание

Изучение

  • Scikit Learn Genetic opt определяется как наблюдаемый набор параметров, который оптимизирует показатели перекрестной проверки.
  • Он использует эволюционные алгоритмы, которые выбирают функцию и разрабатывают различные модели классификации или регрессии.

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

  • GASearchCV используется для запуска процесса подгонки с использованием эволюционного алгоритма.
  • data = load_digits() используется для загрузки данных.
  • x = data.images.reshape ((nsample, -1)) используется для изменения формы изображений данных.
  • cv = StratifiedKFold(n_splits=3, shuffle=True) используется в качестве стратегии перекрестной проверки и может быть просто int.
  • evolution_estimator.fit(x_train, y_train) используется для обучения и оптимизации оценщиков.
import matplotlib.pyplot as plot
from sklearn_genetic import GASearchCV
from sklearn_genetic.space import Categorical, Integer, Continuous
from sklearn.model_selection import train_test_split, StratifiedKFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score
data = load_digits()
nsample = len(data.images)
x = data.images.reshape((nsample, -1))
y = data['target']
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.33, random_state=42)

_, axes = plot.subplots(nrows=1, ncols=4, figsize=(10, 3))
for axis, image, label in zip(axes, data.images, data.target):
    axis.set_axis_off()
    axis.imshow(image, cmap=plot.cm.gray_r, interpolation='nearest')
    axis.set_title('Training: %i' % label)
    param_grid = {'min_weight_fraction_leaf': Continuous(0.01, 0.5, distribution='log-uniform'),
              'bootstrap': Categorical([True, False]),
              'max_depth': Integer(2, 30),
              'max_leaf_nodes': Integer(2, 35),
              'n_estimators': Integer(100, 300)}

classifier = RandomForestClassifier()


cv = StratifiedKFold(n_splits=3, shuffle=True)

# The main class from sklearn-genetic-opt
evolved_estimator = GASearchCV(estimator=classifier,
                              cv=cv,
                              scoring='accuracy',
                              param_grid=param_grid,
                              n_jobs=-1,
                              verbose=True)

evolved_estimator.fit(x_train, y_train)

Выход:

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

scikit изучает генетическую опцию

Выбор функций генетического алгоритма

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

В следующем коде мы импортируем несколько библиотек, с помощью которых мы сможем выбирать функции с помощью функции генетического отбора.

  • data = load_breast_cancer() используется для загрузки набора данных о раке молочной железы.
  • dataframe = pds.DataFrame(data.data, columns=data.feature_names) используется для импорта набора данных.
  • models = models.fit(x, y) используется для подгонки данных в модель.
  • print (‘Выбор функции:’, x.columns[models.support_]) используется для печати выбранной функции на экране.
from sklearn.datasets import load_breast_cancer
from genetic_selection import GeneticSelectionCV
from sklearn.tree import DecisionTreeClassifier
import pandas as pds
import numpy as num
data = load_breast_cancer()
dataframe = pds.DataFrame(data.data, columns=data.feature_names)
dataframe['target'] = data.target
x = dataframe.drop(['target'], axis=1)
y = dataframe['target'].astype(float)
estimators = DecisionTreeClassifier()
models = GeneticSelectionCV(
    estimators, cv=5, verbose=0,
    scoring="accuracy", max_features=5,
    n_population=100, crossover_proba=0.5,
    mutation_proba=0.2, n_generations=50,
    crossover_independent_proba=0.5,
    mutation_independent_proba=0.04,
    tournament_size=3, n_gen_no_change=10,
    caching=True, n_jobs=-1)
models = models.fit(x, y)
print('Feature Selection:', x.columns[models.support_])

После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что выбранная функция печатается на экране.

Выбор функции генетического алгоритма

Алгоритм генетического отбора

В этом разделе мы узнаем о том, как scikit Learn алгоритм генетического отбора работает в Python.

Генетический отбор в scikit Learning определяется как процесс естественного отбора, направленный на поиск наилучшего значения функции.

В следующем коде мы импортируем GeneticSelectionCV из Genetic_selection, с помощью которого селектор выбирает лучшую функцию:

  • from __future__ import print_function используется для переноса функции печати из Python 3 в Python 2.6.
  • e = np.random.uniform (0, 0,1, size=(len(iris.data), 20)) используется для равномерной генерации случайных чисел.
  • x = np.hstack ((iris.data, e)) используется для укладки последовательности столбцов входного массива.
  • GeneticSelectionCV() используется для случайной генерации из выборочного пространства набора функций.
  • selectors = selectors.fit(x, y) используется для подгонки модели.
  • print (selectors.support_) используется для печати выбранных данных.
from __future__ import print_function
import numpy as num
from sklearn import datasets, linear_model

from genetic_selection import GeneticSelectionCV


def main():
    iris = datasets.load_iris()
    e = np.random.uniform(0, 0.1, size=(len(iris.data), 20))

    x = np.hstack((iris.data, e))
    y = iris.target

    estimators = linear_model.LogisticRegression(solver="liblinear", multi_class="ovr")

    selectors = GeneticSelectionCV(estimators,
                                  cv=10,
                                  verbose=4,
                                  scoring="accuracy",
                                  max_features=8,
                                  n_population=70,
                                  crossover_proba=0.7,
                                  mutation_proba=0.4,
                                  n_generations=80,
                                  crossover_independent_proba=0.7,
                                  mutation_independent_proba=0.07,
                                  tournament_size=5,
                                  n_gen_no_change=20,
                                  caching=True,
                                  n_jobs=-4)
    selectors = selectors.fit(x, y)

    print(selectors.support_)


if __name__ == "__main__":
    main()

Выход:

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

Алгоритм генетического отбора

Преимущества и недостатки

Преимущества:

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

Недостатки:

  • Генетический алгоритм требует или нуждается в специальном определении.
  • Генетический алгоритм требует меньше информации о задаче, но операторы пишут и получить представление сложно.
  • Генетический алгоритм имеет вычислительную сложность.
  • Генетический алгоритм требует очень много времени.
Добавить комментарий