mask = np.random.choice([False, True], size=X.shape, p=[0.9, 0.1])
X[mask] = np.nan
Вот минимальный ipython
сеанс с вашим набором данных, если вы хотите посмотреть, как он работает
In [1]: import numpy as np
In [2]: from sklearn import datasets
In [3]: iris = datasets.load_iris()
In [4]: X = iris.data[:6]
In [5]: X
Out[5]:
array([[5.1, 3.5, 1.4, 0.2],
[4.9, 3. , 1.4, 0.2],
[4.7, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5. , 3.6, 1.4, 0.2],
[5.4, 3.9, 1.7, 0.4]])
In [6]: mask = np.random.choice([False, True], size=X.shape, p=[0.9, 0.1])
In [7]: mask.astype(int)
Out[7]:
array([[0, 0, 0, 0],
[1, 0, 0, 0],
[1, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 1, 0, 0]])
In [8]: X[mask] = np.nan
In [9]: X
Out[9]:
array([[5.1, 3.5, 1.4, 0.2],
[nan, 3. , 1.4, 0.2],
[nan, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5. , 3.6, 1.4, 0.2],
[5.4, nan, 1.7, 0.4]])