Open ikanago opened 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
0, 1, 2, ...
iris dataset はこれで問題ないのですが、1-indexed なラベルや文字列のラベルも考えられ,そういったラベルに対応するにはどこかでなんらかの変換を噛ませる必要があります. ユーザに 0, 1, 2, ... からなるラベルを用意してもらう(例えば LabelEncoder を使えばできます)か,そうでなければこのライブラリ側で変換することになります.
LabelEncoder
個人的には QNNClassifier 側で one-hot encoding する(OneHotEncoder でできます)と勾配計算の部分も numpy で配列の引き算をするだけになり,実装を単純にできていいと思います. 一方で LabelEncoder は 0, 1, 2, ... のラベルに変換するので,こちらを使えば内部実装は今と同じで OK なはずです.
QNNClassifier
OneHotEncoder
以前 #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-L170iris dataset はこれで問題ないのですが、1-indexed なラベルや文字列のラベルも考えられ,そういったラベルに対応するにはどこかでなんらかの変換を噛ませる必要があります. ユーザに
0, 1, 2, ...
からなるラベルを用意してもらう(例えばLabelEncoder
を使えばできます)か,そうでなければこのライブラリ側で変換することになります.個人的には
QNNClassifier
側で one-hot encoding する(OneHotEncoder
でできます)と勾配計算の部分も numpy で配列の引き算をするだけになり,実装を単純にできていいと思います. 一方でLabelEncoder
は0, 1, 2, ...
のラベルに変換するので,こちらを使えば内部実装は今と同じで OK なはずです.