Создание сквозного конвейера МО для обнаружения вредоносных программ: от набора данных до развёртыва...

Создание сквозного конвейера МО: обнаружение вредоносных программ, набор данных Malicious Software Collection

Создание сквозного конвейера МО для обнаружения вредоносных программ

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

Набор данных

Мы будем использовать набор данных Malicious Software Collection с Kaggle. Этот набор данных содержит более 40000 образцов как вредоносных, так и безвредных программ.

Обработка данных

Перед тем, как мы сможем создать модель МО, нам необходимо обработать данные. Мы начнем с разделения данных на обучающий и тестовый наборы. Для этого мы используем функцию train_test_split(), предоставленную библиотекой scikit-learn.

from sklearn.model_selection import train_test_split

# Разделить данные на обучающий и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)

Далее мы преобразуем данные в формат, который может быть принят моделью МО. Мы будем использовать библиотеку scikit-learn для создания функции, которая будет извлекать признаки из образцов вредоносных программ.

from sklearn.feature_extraction.text import TfidfVectorizer

# Создать функцию извлечения признаков
vectorizer = TfidfVectorizer()

# Извлечь признаки из обучающих данных
X_train = vectorizer.fit_transform(X_train)

# Извлечь признаки из тестовых данных
X_test = vectorizer.transform(X_test)

Создание модели МО

Теперь мы можем создать модель МО. Мы будем использовать классификатор LogisticRegression из библиотеки scikit-learn.

from sklearn.linear_model import LogisticRegression

# Создать модель МО
model = LogisticRegression()

# Обучить модель на обучающих данных
model.fit(X_train, y_train)

Оценка модели

После того, как модель обучена, мы можем оценить ее производительность на тестовом наборе. Для этого мы используем функцию accuracy_score(), предоставленную библиотекой scikit-learn.

from sklearn.metrics import accuracy_score

# Оценить модель на тестовых данных
score = accuracy_score(y_test, model.predict(X_test))

print("Точность:", score)

Развертывание модели

Наконец, мы можем развернуть модель и сделать ее доступной для запросов классификации. Мы будем использовать фреймворк Flask для создания REST API, который будет принимать образцы вредоносных программ в качестве входных данных и возвращать предсказания модели в качестве выходных данных.

from flask import Flask, request, jsonify

# Создать приложение Flask
app = Flask(__name__)

# Определить конечную точку для запросов классификации
@app.route('/classify', methods=['POST'])
def classify():
  # Извлечь образец вредоносной программы из запроса
  sample = request.json['sample']

  # Преобразовать образец в формат, который может быть принят моделью
  sample = vectorizer.transform([sample])

  # Классифицировать образец с помощью модели
  prediction = model.predict(sample)

  # Вернуть предсказание
  return jsonify({'prediction': prediction})

# Запустить приложение
if __name__ == '__main__':
  app.run()
To leave a comment you need to Login / Create account