হতে পারে , তবে মনে রাখবেন যে এটি মেশিন লার্নিংয়ের উত্তর নয় এমন একটি ক্ষেত্রে । প্রকৃতপক্ষে, বগ স্ট্যান্ডার্ড নিয়ম-ভিত্তিক সমাধানগুলি দ্রুত, সহজ এবং কেবলমাত্র সাধারণভাবে সঠিক পছন্দ: এমন ক্ষেত্রে মেশিন শিখার চেষ্টা করার এবং ঝোঁক দেওয়ার প্রবণতা রয়েছে: পি
আপনি পারছেন বলে কেবল তার মানে নয় should
সম্পাদনা : আমি প্রথমে এটি "হ্যাঁ, তবে এটি মনে রাখবেন ..." হিসাবে লিখেছিলেন তবে তারপরে কখনই এটি দেখা যায়নি বলে নিজেকে সন্দেহ করতে শুরু করেছিলেন। আমি আজ বিকেলে এটি চেষ্টা করেছিলাম এবং এটি অবশ্যই করণীয়:
import numpy as np
from keras.models import Model
from keras.layers import Input, Dense, Dropout
from keras.utils import to_categorical
from sklearn.model_selection import train_test_split
from keras.callbacks import EarlyStopping
# Create an input array of 50,000 samples of 20 random numbers each
x = np.random.randint(0, 100, size=(50000, 20))
# And a one-hot encoded target denoting the index of the maximum of the inputs
y = to_categorical(np.argmax(x, axis=1), num_classes=20)
# Split into training and testing datasets
x_train, x_test, y_train, y_test = train_test_split(x, y)
# Build a network, probaly needlessly complicated since it needs a lot of dropout to
# perform even reasonably well.
i = Input(shape=(20, ))
a = Dense(1024, activation='relu')(i)
b = Dense(512, activation='relu')(a)
ba = Dropout(0.3)(b)
c = Dense(256, activation='relu')(ba)
d = Dense(128, activation='relu')(c)
o = Dense(20, activation='softmax')(d)
model = Model(inputs=i, outputs=o)
es = EarlyStopping(monitor='val_loss', patience=3)
model.compile(optimizer='adam', loss='categorical_crossentropy')
model.fit(x_train, y_train, epochs=15, batch_size=8, validation_data=[x_test, y_test], callbacks=[es])
print(np.where(np.argmax(model.predict(x_test), axis=1) == np.argmax(y_test, axis=1), 1, 0).mean())
আউটপুট 0.74576 হয়, সুতরাং এটি সঠিকভাবে সময় সর্বাধিক 74.5% সন্ধান করছে। এতে কোনও উন্নতি হতে পারে তাতে আমার সন্দেহ নেই, তবে আমি যেমন বলছি এটি ইউসকেস নয় আমি এমএল-এর জন্য প্রস্তাব করব।
সম্পাদনা 2 : আসলে আমি আজ সকালে স্কেলের্নের র্যান্ডমফোরেস্টক্ল্যাসিফায়ার ব্যবহার করে আবার দৌড়েছি এবং এটি উল্লেখযোগ্যভাবে আরও ভাল অভিনয় করেছে:
# instantiation of the arrays is identical
rfc = RandomForestClassifier(n_estimators=1000, verbose=1)
rfc.fit(x_train, y_train)
yhat_proba = rfc.predict_proba(x_test)
# We have some annoying transformations to do because this .predict_proba() call returns the data in a weird format of shape (20, 12500, 2).
for i in range(len(yhat_proba)):
yhat_proba[i] = yhat_proba[i][:, 1]
pyhat = np.reshape(np.ravel(yhat_proba), (12500,20), order='F')
print(np.where(np.argmax(pyhat, axis=1) == np.argmax(y_test, axis=1), 1, 0).mean())
এবং এখানে স্কোরটি 94.4% স্যাম্পলগুলির সর্বাধিক সঠিকভাবে চিহ্নিত হয়েছে, যা সত্যই বেশ ভাল।