Choosing the right estimator — scikit-learn 1.2.0 documentationを元にMermaidでまとめた。

flowchart TD
	A((Start))--> B{50サンプル以上?}
    B -->|Yes| B1{カテゴリの\n予測?}
    B -->|No| B2((データを収集))
    B1 -->|Yes| C1{正解ラベルあり?}
    C1 -->|Yes| Z3((分類)):::terminal
    C1 -->|No| Z4((クラスタリング)):::terminal
    B1 -->|No| C2{数量の予測?}
    C2 -->|Yes| Z1((回帰)):::terminal
    C2 -->|No| H((次元削除)):::terminal
    classDef terminal fill:#69F

分類

flowchart TD
    Z3((分類)):::terminal -->  I1{10万サンプル以下?}
	I1 -->|Yes| I11[線形SVC]
    I1 -->|No| I21[SDG Classifier]:::method
    I21 -->|うまくいかない| I22[kernel approximation\nGBDT]:::method
    I11 -->|うまくいかない| I12{テキストデータ?}
    I12 -->|Yes| I122[ネイティブベイズ]:::method
    I12 -->|No| I13[K近傍法]:::method 
    I13 -->|うまくいかない| I131[SVC\nランダムフォレスト]:::method 
    classDef terminal fill:#69F
    classDef method fill:#f9f,stroke:#333,stroke-width:4px

クラスタリング

flowchart TD
    Z4((クラスタリング)):::terminal --> J1{カテゴリ数は既知?}
	J1 -->|Yes| J11{<10万サンプル以下?}
    J11 -->|Yes| J12[KMeans]:::method
    J12 -->|うまくいかない| J13[スペクトラルクラスタリング\nGMM]:::method
    J11 -->|No| J21[MiniBatch\nKMeans]:::method
    J1 -->|No| J3{<10K samples}
    J3 -->|Yes| J31[MeanShift\nVGBMM]:::method 
    J3 -->|No| J34((不運))
    classDef terminal fill:#69F
    classDef method fill:#f9f,stroke:#333,stroke-width:4px

回帰

flowchart TD
    Z1((回帰)):::terminal --> D1{10万サンプル以下?}
    D1 -->|No| E1[SGD回帰分析]:::method
    D1 -->|Yes| E2{説明変数xの一部が重要?}
    E2 -->|Yes| F1[Lasso\nElasticNet]:::method
    E2 -->|No| F2[Ridge\n線形SVR]:::method
    F2 -->|うまくいかない| F3[SVR Kernel='rbf'\nEnsembleRegressors]:::method
    classDef terminal fill:#69F
    classDef method fill:#f9f,stroke:#333,stroke-width:4px

次元削除

flowchart TD
    Z((次元削除)):::terminal --> H[Randomized PCA]:::method
	H -->|うまくいかない| H11{10万サンプル以下?}
    H11 -->|Yes| H22[Isomap\nSpectral Embedding]:::method
    H11 -->|No| H3[kernel\napproximation]:::method
    H22 -->|うまくいかない| H4[LLE]:::method
    classDef terminal fill:#69F
    classDef method fill:#f9f,stroke:#333,stroke-width:4px