🐷
from sklearn.datasets import load_bostonが使えない
背景
scikit-learn
のバージョン1.2以降では、load_boston()
が削除されました。
ImportError:
`load_boston` has been removed from scikit-learn since version 1.2.
これは、ボストン住宅価格データセットに倫理的な問題があったため、公式に廃止されました。
解決策
load_boston()
を自作する
1. 代替関数 load_boston()
を使えれば問題がないので、同じデータを取得できる関数を自作 すれば解決できます。
以下の関数を定義することで、load_boston()
の代わりに同じデータを取得できます。
import pandas as pd
import numpy as np
from sklearn.utils import Bunch
def load_boston():
"""ボストン住宅価格データセットを読み込む"""
data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
target = raw_df.values[1::2, 2]
feature_names = [
"CRIM", "ZN", "INDUS", "CHAS", "NOX", "RM", "AGE", "DIS", "RAD",
"TAX", "PTRATIO", "B", "LSTAT"
]
return Bunch(data=data, target=target, feature_names=feature_names)
2. 使い方
関数を定義した後、以下のように load_boston()
を呼び出すことで、元の load_boston()
と同様のデータを取得できます。
# ボストン住宅価格データセットをロード
boston = load_boston()
# データの確認
print("データの形状:", boston.data.shape)
print("ターゲットの形状:", boston.target.shape)
print("特徴量名:", boston.feature_names)
これで、scikit-learn 1.2以降でも load_boston()
の機能を再現できる ようになります。
まとめ
-
scikit-learn 1.2
以降、load_boston()
は削除された。 - 代わりに、
Bunch
を使ってload_boston()
を自作 すれば同じ結果を得られる。
これで、scikit-learn
のバージョンに関わらず load_boston()
を使えるようになります。
Discussion