質問: iris.target) / len(iris.target) ```
回答: > > Pythonで決定木打つとき、入力データにNoneが入っていたら使えないんでしょうか? > > > 決定木に限らず、ほとんどのアルゴリズムでは欠損値がデータに含まれていると、数値上は NaN と扱われ、正しく計算できないと思います。 NaN と数値の四則演算の結果は NaN になってしまうため、そのあとの計算が実行できなくなります。 numpy や pandas を使っていれば、NaN がデータにある場合は簡単に取り除けます。 サンプルコード ======= (N, M) の numpy 配列から nan が含まれる行を除くサンプルコード ``` # ライブラリ読み込み from sklearn.datasets import load_iris from sklearn import tree # データ読み込み iris = load_iris() # 意図的にNoneを挿入 iris.data[0][0] = None mask = np.isnan(iris.data).any(axis=1) # nan が含まれる行 data_wo_nan = iris.data[~mask] # nan が含まれていない行だけ残す labels_wo_nan = iris.target[~mask] # nan が含まれていない行だけ残す # 決定木のモデル構築 clf = tree.DecisionTreeClassifier(max_depth=3) clf = clf.fit(data_wo_nan, labels_wo_nan) predicted = clf.predict(data_wo_nan) ```