Модульное тестирование в машинном обучении включает тестирование отдельных компонентов или блоков кода, чтобы убедиться, что они работают правильно и дают ожидаемые результаты. В контексте машинного обучения модульное тестирование фокусируется на проверке правильности предварительной обработки данных, обучения модели и функций оценки. Давайте рассмотрим пример модульного тестирования в машинном обучении с использованием Python и модуля unittest
:
- Модульный тест предварительной обработки данных: Вот пример модульного теста для функции предварительной обработки данных, которая масштабирует входные функции:
импортировать unittest
из sklearn.preprocessing импортировать MinMaxScaler
def scale_features(data):
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
return scaled_data
class TestDataPreprocessing(unittest.TestCase):
def test_feature_scaling(self):
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]< br /> ожидаемый_результат = [[0, 0, 0], [0,5, 0,5, 0,5], [1, 1, 1]]
self.assertEqual (масштабные_функции (данные), ожидаемый_результат)
если __name__ == ‘__main__’:
unittest.main()
В этом примере мы определяем функцию scale_features
, которая принимает входные данные и использует MinMaxScaler
из scikit-learn для масштабирования функций. Класс TestDataPreprocessing
наследуется от unittest.TestCase
и содержит метод test_feature_scaling
. Этот метод сравнивает выходные данные функции scale_features
с ожидаемым результатом, используя утверждение self.assertEqual
.
2. Модульный тест модели обучения: Вот пример модульного теста для функции обучения модели:
импортировать unittest
из sklearn.datasets импортировать make_classification
из sklearn.linear_model импортировать LogisticRegression
def train_model(X, y):
model = LogisticRegression()
model.fit(X, y)
возвращаемая модель
class TestModelTraining(unittest.TestCase):
def test_model_accuracy(self):
X, y = make_classification(n_samples=100, n_features=10, random_state=42)
model = train_model(X, y)
точность = model.score(X, y)
self.assertGreaterEqual(точность, 0,9)
если __name__ == ‘__main__’:
unittest.main()
В этом примере мы определяем функцию train_model
, которая принимает входные функции X
и метки y
и обучает модель логистической регрессии с помощью scikit-learn. Класс TestModelTraining
содержит метод test_model_accuracy
, который создает синтетический набор данных классификации, обучает модель и проверяет, что точность больше или равна 0,9, используя утверждение self.assertGreaterEqual
.
3. Модульный тест оценки модели. Вот пример модульного теста для функции оценки модели:
импортировать unittest
из sklearn.datasets; импортировать make_classification
из sklearn.linear_model; импортировать LogisticRegression
из sklearn.metrics;
def Assessment_model(model, X, y):
y_pred = model.predict(X)
Precision = Precision_score(y, y_pred)
Recall = Recall_score(y, y_pred)
вернуть точность, вспомнить
class TestModelEvaluation(unittest.TestCase):
def test_precision_and_recall(self):
X, y = make_classification(n_samples=100, n_features=10, random_state=42)
model = LogisticRegression()< br /> model.fit(X, y)
точность, отзыв = оценка_модель (модель, X, y)
self.assertGreaterEqual(точность, 0,8)
self.assertGreaterEqual(отзыв, 0,8 )
Таким образом, создание модульных тестов в приложении ML является неотъемлемой и важной частью для обеспечения бесперебойного прогнозирования ML без ошибок. Спасибо.
Счастливого обучения!