<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_counts( n_samples=1000, n_features=100, n_informative=2, scale=1.0, chunks=100, random_state=None, ):
 """ Generate a dummy dataset for modeling count data. Parameters n_samples : int number of rows in the output array n_features : int number of columns (features) in the output array n_informative : int number of features that are correlated with the outcome scale : float Scale the true coefficient array by this chunks : int Number of rows per dask array block. random_state : int, RandomState instance or None (default) Determines random number generation for dataset creation. Pass an int for reproducible output across multiple function calls. See :term:`Glossary <random_state>`. Returns ------- X : dask.array, size ``(n_samples, n_features)`` y : dask.array, size ``(n_samples,)`` array of non-negative integer-valued data Examples -------- """

    rng = dask_ml.utils.check_random_state(random_state)

    X = rng.normal(0, 1, size=(n_samples, n_features), chunks=(chunks, n_features))
    informative_idx = rng.choice(n_features, n_informative, chunks=n_informative)
    beta = (rng.random(n_features, chunks=n_features) - 1) * scale

    informative_idx, beta = dask.compute(informative_idx, beta)

    z0 = X[:, informative_idx].dot(beta[informative_idx])
    rate = da.exp(z0)
    y = rng.poisson(rate, size=1, chunks=(chunks,))
    return X, y