AutoTrainで多クラス分類【アヤメ】

# AutoTrain🚂🚂🚂とは

ノーコードでテキスト分類や要約や構造化データの機械学習などがstate-of-the-artできるサービスです。本日より構造化データもサポートされました🎉
AutoNLPだとググラビリティが低かったのではなく、構造化データもサポートしたかったから名称変更したようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/455f097f-30c1-c7f0-050f-5907ae43f968.png)

https://huggingface.co/autotrain

https://twitter.com/julsimon/status/1514630305293996041

# データ準備
アヤメの品種を花びらの長さやがくの幅から3品種に分類します。
CSVファイルをダウンロードしましょう。
```bash
wget https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07d5ae3/iris.csv
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/b88f3dfa-4387-ea72-d2ae-c0fa9e483e0e.png)


## プロジェクトの作成

**Tabular Data Classification (Binary)** を選択し、プロジェクトを作成します。

https://ui.autonlp.huggingface.co/new

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/d78cc023-96f9-cfd2-497a-a1cf91b14043.png)

## csvファイルをアップロード
jsonlでもアップロードできます。
今回はcsvファイルをドラッグ・アンド・ドロップし、`target:variety`カラムを選択し、プロジェクトに追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/c787388c-8535-c0d6-87e8-f9f2e9c3bc94.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/137dea11-cad9-46bf-9fc7-40efb523f57c.png)



**Go to trainings**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/9e585aa7-d715-3dbc-57c3-780996f4784b.png)

# 学習
**Start models trainings**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/d646fee5-2eb8-d0b1-f8c0-f98fe75492ff.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/f12eb3f6-4057-7b32-caae-40356509cca9.png)


# 推論
96%の精度で分類できました。modelをクリックし、model hubで推論できます。
AutoTrainは決定木を使っているのでxgboostと同じくらいの精度ですね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/3892f30e-aded-e353-53d5-b02c6f8d9402.png)

https://qiita.com/predora005/items/19aebcf3aa05946c7cf4

https://huggingface.co/vabadeh213/autotrain-iris-744122711


## モデルをダウンロード

モデルをダウンロードすることでオフラインで推論できます。

https://colab.research.google.com/drive/1dT1o0_73BqJ0ILMQL3rS8R1sVttoG05q?usp=sharing

### モデルをダウンロード
```python
!curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
!sudo apt-get -qq install git-lfs
!git lfs install
#!git clone "https://$USERNAME:$PASSWORD@huggingface.co/vabadeh213/autotrain-iris-744122711" # set username/password for private model
!git clone https://huggingface.co/vabadeh213/autotrain-iris-744122711
```

### joblibで推論

```python
import json
import joblib
import pandas as pd

model = joblib.load('model.joblib')
config = json.load(open('config.json'))

features = config['features']
df = pd.read_csv('iris.csv')
X = df[features]
X.columns = X.columns.map(lambda x: 'feat_' + x)

predictions = model.predict(X)  # or model.predict_proba(data)
df['predicted'] = [{v: k for k, v in config['target_mapping'].items()}[i] for i in predictions]
df
```
|   sepal.length |   sepal.width |   petal.length |   petal.width | variety    | predicted   |
|---------------:|--------------:|---------------:|--------------:|:-----------|:------------|
|            5.2 |           4.1 |            1.5 |           0.1 | Setosa     | Setosa      |
|            5.6 |           3   |            4.5 |           1.5 | Versicolor | Versicolor  |
|            5.3 |           3.7 |            1.5 |           0.2 | Setosa     | Setosa      |
|            6.5 |           3   |            5.8 |           2.2 | Virginica  | Virginica   |

# まとめ
- クレカ登録しない限り無料で使えてとても便利
- ノーコードで高性能なモデルを作れる