code: def test_copy(self):
      # train model #1
      metric = Metric({"name": "logloss"})
      nn = MLPAlgorithm(self.params)
      nn.fit(self.X, self.y)
      y_predicted = nn.predict(self.X)
      loss = metric(self.y, y_predicted)
      # create model #2
      nn2 = MLPAlgorithm(self.params)
      # do a copy and use it for predictions
      nn2 = nn.copy()
      self.assertEqual(type(nn), type(nn2))
      y_predicted = nn2.predict(self.X)
      loss2 = metric(self.y, y_predicted)
      self.assertEqual(loss, loss2)
  
      # the loss of model #2 should not change
      y_predicted = nn2.predict(self.X)
      loss4 = metric(self.y, y_predicted)
      assert_almost_equal(loss2, loss4)
  
imports: import unittest
  import tempfile
  import json
  import numpy
  import pandas
  import os
  from numpy.testing import assert_almost_equal
  from sklearn import datasets
  from sklearn import preprocessing
  from supervised.algorithms.nn import MLPAlgorithm, MLPRegressorAlgorithm
  from supervised.utils.metric import Metric
label_desc: Use image node_id 3 for calling the MLPAlgorithmTest obj's underlying member method code with example usage: obj.test_copy() without return types