code: def test_hard_voting_array(self):
      X, y = dask_ml.datasets.make_classification(chunks=25)
      clf = dask_ml.ensemble.BlockwiseVotingClassifier(
          sklearn.linear_model.LogisticRegression(solver="lbfgs"),
          classes=[0, 1],
      )
      clf.fit(X, y)
      assert len(clf.estimators_) == 4
  
      X2, y2 = dask_ml.datasets.make_classification(chunks=20)
  
      result = clf.predict(X2)
      assert isinstance(result, da.Array)
      assert result.dtype == np.dtype("int64")
      assert result.shape == (len(y),)
      assert result.numblocks == y2.numblocks
      result_ = result.compute()
      assert result_.dtype == result.dtype
      assert result_.shape == result.shape
  
      with pytest.raises(AttributeError, match="hard"):
          clf.predict_proba
  
      score = clf.score(X2, y2)
      assert isinstance(score, float)
  
      # ndarray
      X3, y3 = dask.compute(X2, y2)
      result2 = clf.predict(X3)
      assert isinstance(result2, np.ndarray)
      da.utils.assert_eq(result, result2)
      score2 = clf.score(X3, y3)
      assert score == score2
  
      _, y4 = dask_ml.datasets.make_classification(chunks=20)
      with pytest.raises(ValueError, match="4 != 5"):
          clf.fit(X, y4)
  
file_path: dask-ml/tests/ensemble/test_blockwise.py
imports: import dask
  import dask.array
  import dask.dataframe
  import numpy
  import pytest
  import sklearn.linear_model
  import dask_ml.datasets
  import dask_ml.ensemble
label_desc: Use image node_id 1 for calling the TestBlockwiseVotingClassifier obj's underlying member method code with example usage: obj.test_hard_voting_array() without return types