ライブラリの読み込み

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で削除された。倫理上の問題だって