Нейронная сеть и глубокое обучение в последнее время стали модными словечками. Машинное обучение было в моде в течение некоторого времени, но доступность хранилища и вычислительной мощности сделали его популярным. Интерес ощутим и в бизнес-школах. Методы, связанные с машинным обучением, не сильно проникли из ИТ-отделов в бизнес, но, похоже, всем это интересно. Итак, давайте построим модель нейронной сети за 10 минут.
Это сценарий:
У вас есть набор независимых переменных (IV), которые предсказывают зависимую переменную (DV). У вас есть теоретическая модель, и вы хотите знать, достаточно ли она хороша. Помните, мы не тестируем модель. Мы просто проверяем, насколько хороши IV в прогнозировании DV. Если они не являются хорошими предикторами для начала, зачем тратить время на придумывание причудливой модели! Звучит знакомо? Давайте начнем.
Настраивать
У вас есть какие-то предварительные знания о python? Если не потратьте еще 10 минут на изучение Python. Теперь вам нужно потратить некоторое время, чтобы настроить вашу систему один раз. Просто следуйте этим инструкциям.
Код
Первый шаг — импортировать несколько модулей. Если вы не знаете, что это такое, просто скопируйте вставку и игнорируйте. Считайте их заголовком, который вам нужен.
# Modules import sys import numpy from imblearn.over_sampling import RandomOverSampler from keras.layers import Dense from keras.models import Sequential from pandas import read_csv
Создайте файл CSV с вашими данными, указав последний столбец в качестве DV. Теперь импортируйте этот файл.
# Import data dataset = read_csv(sys.argv[1], header=1) (nrows, ncols) = dataset.shape
nrows и ncols — количество строк и столбцов. Теперь отделите DV (y) от IV (X), как показано ниже.
# Separate DV from IVs values = dataset.values X = values[:, 0:ncols-1] y = values[:, ncols-1]
В большинстве случаев вы будете пытаться предсказать редкое событие. Так что добавьте передискретизации для вкуса 🙂
# Oversampling ros = RandomOverSampler(random_state=0) X_R, y_R = ros.fit_sample(X, y)
Создайте, скомпилируйте и подгоните модель.
# create model model = Sequential() model.add(Dense(12, input_dim=vnum, kernel_initializer='uniform', activation='relu')) model.add(Dense(8, kernel_initializer='uniform', activation='relu')) model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid')) # Compile model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model model.fit(X_R, y_R, epochs=150, batch_size=10, verbose=2)
Три оператора model.add представляют три уровня нейронной сети. Число после Dense — это количество нейронов в каждом слое. Вы можете немного поиграть с этими значениями. Эти настройки должны работать в большинстве бизнес-кейсов. Прочитать это для получения дополнительной информации.
Теперь оцените модель.
# evaluate the model scores = model.evaluate(X_R, y_R) print("\n") print("\n Accuracy of the model") print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1] * 100)) print("\n --------------------------------------------------")
Поместите этот код в файл (скажем, nnet.py) и используйте его, как показано ниже.
python nnet.py mydata.csv
TL;DR
Просто используйте QRMine. nnet.py находится там.
Операционализация моделей нейронных сетей
Вскоре я покажу вам, как операционализировать модель с помощью flask.
Первоначально опубликовано в моем блоге на nuchange.ca 21 июня 2018 г.Спасибо, что прочитали. Если у вас есть отзывы, свяжитесь со мной в Twitter, LinkedIn или Github.