Qulacs-Osaka / scikit-qulacs

scikit-qulacs is a library for quantum neural network. This library is based on qulacs and named after scikit-learn.
https://qulacs-osaka.github.io/scikit-qulacs/index.html
MIT License
21 stars 6 forks source link

出力の内部表現について #199

Open ikanago opened 2 years ago

ikanago commented 2 years ago

以前 #149 で複数個の分類をやめるときに出力を one-hot ベクトルで持つのを止めたと思うんですが、今の実装だとラベルが 0-indexed の自然数で 0, 1, 2, ... というふうについていないとうまく実行できないはずです. これは以下の実装により言えます: https://github.com/Qulacs-Osaka/scikit-qulacs/blob/1f972ca7ff0ef7d4c7019752d36043c3f9b2766a/skqulacs/qnn/classifier.py#L124 https://github.com/Qulacs-Osaka/scikit-qulacs/blob/1f972ca7ff0ef7d4c7019752d36043c3f9b2766a/skqulacs/qnn/classifier.py#L167-L170

iris dataset はこれで問題ないのですが、1-indexed なラベルや文字列のラベルも考えられ,そういったラベルに対応するにはどこかでなんらかの変換を噛ませる必要があります. ユーザに 0, 1, 2, ... からなるラベルを用意してもらう(例えば LabelEncoder を使えばできます)か,そうでなければこのライブラリ側で変換することになります.

個人的には QNNClassifier 側で one-hot encoding する(OneHotEncoder でできます)と勾配計算の部分も numpy で配列の引き算をするだけになり,実装を単純にできていいと思います. 一方で LabelEncoder0, 1, 2, ... のラベルに変換するので,こちらを使えば内部実装は今と同じで OK なはずです.