ライブラリの読み込み
import sklearn from sklearn.preprocessing import StandardScaler, from sklearn.selection import train_test_split, kFold, stratifiedKFold, cross_validate, from sklearn.metrics import classification_report, confusion_matrix, from sklearn.decomposition import PCA,
基本
引数はnumpy.ndarrayが標準。引数に{}辞書型は入れられない。
## 交差検証時の注意点 KFold.split(X, y) StratifiedKFold.split(X, y) # 引数Xは、ndarray必須 ※clf.fit(X,y) の引数の X は Pandas の DataFrameでもよい ## StandardScalerを実行すると numpy.ndarray で出力されるので、エラーは起きない。 # StandardScalerを実行しない場合は、 X = np.array(df.drop(["目的変数"], axis=1))
scikit-learnにおけるデータセットの形式:Bunchクラスの扱い方【Python】
サンプルデータセット – scikit-learn①【Python】
# データ形式 type(data) # sklearn.utils._bunch.Bunch # データセットのロード(Irisを例に) from sklearn.datasets import load_iris data = load_iris() # データセット構造 data.keys() # dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module']) # iris データセットには frame が存在しない → frame が欲しいなら pd.concat() で合成する。 # カラムの中身を確認 data.feature_names # ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] data.data # array([[5.1, 3.5, 1.4, 0.2], [4.9, 3. , 1.4, 0.2], .... data.target # array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, .... print(data.items()) ※これだと ('frame', None) と中身が何となくわかる。 # dict_items([('data', array([[5.1, 3.5, 1.4, 0.2], [4.9, 3. , 1.4, 0.2],[・・・],[・・・],[・・・],,, # カラム毎のデータ型 type(data.target) # numpy.ndarray type(data.feature_names) # list type(data.frame) # NoneType # iris データセットには frame が存在しない → frame が欲しいなら pd.concat() で合成する。 ## DataFrameへの変換 # columns名は、data.feature_names から X = pd.DataFrame(data.data, columns=data.feature_names) X.head() # 説明変数(独立変数) 特徴量 feature # 元々 data.target にはcolumns名が存在しないので、必ず名付ける。 y = pd.DataFrame(data.target, columns=["Species"]) y.head() # 目的変数(従属変数) target # data.data と data.target を合成して、data.frame に相当するデータセットを作成 df = pd.concat([X, y], axis=1) df.head() # こんなpd.DataFrameの作り方もある iris = datasets.load_iris() df_iris = pd.DataFrame(data= np.c_[iris["data"], iris["target"]], columns= iris["feature_names"] + ["target"]) display(df_iris.head()) # ボストン住宅データセットはver1.2で削除された。倫理上の問題だって