как выполнить случайный поиск без использования sklearn - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь выполнить перекрестную проверку в k-кратном порядке для randomsearchcv, но мой код не является обобщенным c для каждого раза, так как я написал код для 3 раз. Может ли кто-нибудь объяснить мне, как выполнить перекрестную проверку K-кратности без использования sklearn для случайного поиска ниже мой код

from sklearn.metrics import accuracy_score
def randomly_select_60_percent_indices_in_range_from_1_to_len(x_train):
return random.sample(range(0, len(x_train)), int(0.6*len(x_train)))

def RandomSearchCV(x_train,y_train,classifier, params, folds):
trainscores = []
testscores  = []
for k in tqdm(params):
    trainscores_folds = []
    testscores_folds  = []
    for j in range(0, folds):
        # check this out: https://stackoverflow.com/a/9755548/4084039
        train_indices = randomly_select_60_percent_indices_in_range_from_1_to_len(x_train)
        test_indices  = list(set(list(range(1, len(x_train)))) - set(train_indices))
        X_train = x_train[train_indices]
        Y_train = y_train[train_indices]
        X_test  = x_train[test_indices]
        Y_test  = y_train[test_indices]

        classifier.params = k
        classifier.fit(X_train,Y_train)

        Y_predicted = classifier.predict(X_test)
        testscores_folds.append(accuracy_score(Y_test, Y_predicted))

        Y_predicted = classifier.predict(X_train)
        trainscores_folds.append(accuracy_score(Y_train, Y_predicted))
    trainscores.append(np.mean(np.array(trainscores_folds)))
    testscores.append(np.mean(np.array(testscores_folds)))

return trainscores,testscores

from sklearn.metrics import accuracy_score
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
import random
import warnings
warnings.filterwarnings("ignore")


neigh = KNeighborsClassifier()

len(X_train))])

folds=3
params1=[]
sorted_train=[]
sorte_test=[]

params=np.random.uniform(low=1,high=50,size=10)

trainscores,testscores =  RandomSearchCV(X_train, y_train, neigh,params ,folds)
params.sort()
plt.plot(params,trainscores, label='train cruve')
plt.plot(params,testscores, label='test cruve')
plt.title('Hyper-parameter VS accuracy plot')
plt.legend()
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...