古いコードをsklearnを使用してKeras実装に変換しようとしています。同じ操作方法を維持することが重要であるため、正しく実行しているかどうかを理解したいと思います。
ほとんどのコードは既に変換しましたが、sklearn.svm SVC分類器の変換に問題があります。これが今どのように見えるかです:
from sklearn.svm import SVC
model = SVC(kernel='linear', probability=True)
model.fit(X, Y_labels)
とても簡単です。しかし、KerasでSVC分類器の類似物を見つけることができませんでした。だから、私が試したのはこれです:
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='softmax'))
model.compile(loss='squared_hinge',
optimizer='adadelta',
metrics=['accuracy'])
model.fit(X, Y_labels)
でも、どうしても正しくないと思います。 KerasのsklearnからSVC分類子の代替を見つけるのを手伝ってくれませんか?
ありがとうございました。
分類子を作成する場合は、squared_hinge
とregularizer
、ご覧のように完全なSVM損失関数を取得するには here。 したがって、アクティベーションを実行する前に最後のレイヤーを分割して正則化パラメーターを追加する必要があります。ここにコードを追加しました。
これらの変更はあなたに出力を与えるはずです
from keras.regularizers import l2
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(64, activation='relu'))
model.add(Dense(1), W_regularizer=l2(0.01))
model.add(activation('softmax'))
model.compile(loss='squared_hinge',
optimizer='adadelta',
metrics=['accuracy'])
model.fit(X, Y_labels)
また、hinge
はバイナリ分類のケラスに実装されているため、バイナリ分類モデルで作業している場合は、以下のコードを使用します。
from keras.regularizers import l2
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(64, activation='relu'))
model.add(Dense(1), W_regularizer=l2(0.01))
model.add(activation('linear'))
model.compile(loss='hinge',
optimizer='adadelta',
metrics=['accuracy'])
model.fit(X, Y_labels)
記事を理解できない場合やコードに問題がある場合は、遠慮なくコメントしてください。私はしばらく前に同じ問題を抱えていました、そしてこのGitHubスレッドは私が理解するのに役立ちました、おそらくそれも通過します、ここのアイデアのいくつかはここから直接です https://github.com/keras-team/keras/ issues/2588