рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдШрдВрдЯреЛрдВ рдЦреЛрдЬ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реВрдВ:
clf = GridSearchCV( sk.LogisticRegression(),
tuned_parameters,
cv = N_folds_validation,
pre_dispatch='6*n_jobs',
n_jobs=4,
verbose = 1,
scoring=metrics.make_scorer(metrics.scorer.f1_score, average="macro")
)
рдпрд╣ рд╕реНрдирд┐рдкреЗрдЯ рд╕реНрдХреЛрд░рд┐рдВрдЧ=metrics.make_scorer(metrics.scorer.f1_score, рдФрд╕рдд="рдореИрдХреНрд░реЛ") рдХреЗ рдХрд╛рд░рдг рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдореАрдЯреНрд░рд┐рдХ sklearn.metrics рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рд╕реНрдХреЛрд░рд┐рдВрдЧ = ... рд▓рд╛рдЗрди рдХреЛ рд░рджреНрдж рдХрд░ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдкрджреНрдзрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ f1 рд╕реНрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ n_jobs = 1 рд╕реЗрдЯ рдХрд░рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░рджреНрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрднрд╛рд╡рдирд╛ рдЦреЛрдП рдмрд┐рдирд╛ рдореИрдВ рдПрдХ рдФрд░ рд╕реНрдХреЛрд░ рд╡рд┐рдзрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдзрдиреНрдпрд╡рд╛рдж
рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИ!
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
import platform; platform.platform()
)рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореЗрд░реА рдорд╢реАрди рдХреЛ рд╕реНрдХреЗрд▓реЗрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЗрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд╕рд╛рде рдЖрдИрд░рд┐рд╕ рдлрд┐рдЯ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж рдЖрдкрдХреЗ рд╢реАрдШреНрд░ рдкреНрд░рддрд┐рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдПред
рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рд╕реЗ рдореЗрд░рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорддрд▓рдм рдардВрдб рд╕реЗ рд╣реИред рдпрд╣ рдЕрдм рдФрд░ рдЬрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рдЯрд╛рд╕реНрдХ рдореИрдиреЗрдЬрд░ рдХреА рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдФрд░ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрднреА рднреА рд╣реИрдВ рдФрд░ рд░реИрдо рдХреА рдирд┐рд░рдВрддрд░ рдорд╛рддреНрд░рд╛ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдпрд╣ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рд╡рд░реНрдЬрди 0.14 рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдВрддрд┐рдо рдмрд╛рд░ рдПрдирдереЙрдЯ рдХреИрдиреЛрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ред
рдореИрдВ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо "рд╡рд┐рдВрдбреЛрдЬ-7-6.1.7601-рдПрд╕рдкреА1" рдкрд░ рд╣реВрдВред
рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЬрд╛рдКрдВрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЧреНрд░рд┐рдбрд╕рд░реНрдЪрд╕реАрд╡реА рдХреЛ рд▓реВрдк рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рд╣реИред (рдЕрдкрдирд╛ рдЕрдзрд┐рдХ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╢рд╛рдпрдж рд░рди_рдЯреНрдпреВрди_рдкреНрд░реЛрд╕реЗрд╕() рд╡рд┐рдзрд┐ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдХреЛрдб рдХреЗ рдиреАрдЪреЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд▓реВрдк рдореЗрдВ рдЧреНрд░рд┐рдбрд╕рд░реНрдЪрд╕реАрд╡реА() рдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ)
import sklearn.metrics as metrics
from sklearn.grid_search import GridSearchCV
import numpy as np
import os
from sklearn import datasets
from sklearn import svm as sk
def tune_hyperparameters(trainingData, period):
allDataTrain = trainingData
# Define hyperparameters and construct a dictionary of them
amount_kernels = 2
kernels = ['rbf','linear']
gamma_range = 10. ** np.arange(-5, 5)
C_range = 10. ** np.arange(-5, 5)
tuned_parameters = [
{'kernel': ['rbf'], 'gamma': gamma_range , 'C': C_range},
{'kernel': ['linear'], 'C': C_range}
]
print("Tuning hyper-parameters on period = " + str(period) + "\n")
clf = GridSearchCV( sk.SVC(),
tuned_parameters,
cv=5,
pre_dispatch='4*n_jobs',
n_jobs=2,
verbose = 1,
scoring=metrics.make_scorer(metrics.scorer.f1_score, average="macro")
)
clf.fit(allDataTrain[:,1:], allDataTrain[:,0:1].ravel())
# other code will output some data to files, graphs and will save the optimal model with joblib package
# Eventually we will return the optimal model
return clf
def run_tune_process(hyperparam_tuning_method,trainingData, testData):
for period in np.arange(0,100,10):
clf = hyperparam_tuning_method(trainingData,period)
y_real = testData[:,0:1].ravel()
y_pred = clf.predict(testData[:,1:])
# import some data to play with
iris = datasets.load_iris()
X_training = iris.data[0:100,:]
Y_training = (iris.target[0:100]).reshape(100,1)
trainingset = np.hstack((Y_training, X_training))
X_test = iris.data[100:150,:]
Y_test = (iris.target[100:150]).reshape(50,1)
testset = np.hstack((Y_test, X_test))
run_tune_process(tune_hyperparameters,trainingset,testset)
рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдпрд╣ рдХреЛрдб рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореИрдВ n_jobs рдХреЛ 1 рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ рдпрд╛ рдЬрдм рдореИрдВ рд╕реНрдХреЛрд░рд┐рдВрдЧ = рддрд░реНрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред
рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ
рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВ рдЗрд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рдореАрдЯреНрд░рд┐рдХ рдХреЗ рд╕рд╛рде рд╕рд╣рд╕рдВрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣рд╛рдБ рд╣реИ
0.14 рдореЗрдВ рдФрд╕рдд = рдореИрдХреНрд░реЛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдФрд╕рдд (рднрд╛рд░рд┐рдд) рд╕реЗ рд▓рдЯрдХрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдкрд░
рд╕рд┐рд░, рдпрд╣ рдореЗрд░реА рдореИрдХрдмреБрдХ рдкрд░ 11s рдореЗрдВ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ 7s рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 0.14 . рдкрд░ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ
(рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ!)
рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛
рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ?
реирел рдлрд░рд╡рд░реА реирежрезрек рдХреЛ реиреж:рекреж рдХреЛ, рдПрдбрд╡рд░рд▓реА рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдзрдиреНрдпрд╡рд╛рдж рдЖрдкрдХреЗ рд╢реАрдШреНрд░ рдкреНрд░рддрд┐рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдПред
рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рд╕реЗ рдореЗрд░рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорддрд▓рдм рдардВрдб рд╕реЗ рд╣реИред рдпрд╣ рдЕрдм рдФрд░ рдЬрд╛рд░реА рдирд╣реАрдВ рд╣реИ
рдХреА рдЕрдЬрдЧрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рднреА рдирд╣реАрдВ рд╣реИ
рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХред рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрднреА рднреА рд╣реИрдВ рдФрд░ рдЙрдкрднреЛрдЧ рдХрд░реЗрдВ a
RAM рдХреА рдирд┐рд░рдВрддрд░ рдорд╛рддреНрд░рд╛ рд▓реЗрдХрд┐рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИредрдпрд╣ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рд╡рд░реНрдЬрди 0.14 рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдВрддрд┐рдо рдмрд╛рд░ рдПрдирдереЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛
рдЪрдВрджрд╡рд╛редрдореИрдВ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо "рд╡рд┐рдВрдбреЛрдЬ-7-6.1.7601-рдПрд╕рдкреА1" рдкрд░ рд╣реВрдВред
рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЬрд╛рдКрдВрдЧрд╛ред рдореИрдВ
рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЧреНрд░рд┐рдбрд╕рд░реНрдЪрд╕реАрд╡реА рдХреЛ рд▓реВрдк рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рд╣реИред (рдкреНрд░рддрд┐
рдЕрдкрдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░реЗрдВ, рдЖрдкрдХреЛ рд╢рд╛рдпрдж рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
run_tune_process() рд╡рд┐рдзрд┐ рдЬрд┐рд╕реЗ рдХреЛрдб рдХреЗ рдиреАрдЪреЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ
рдФрд░ рд▓реВрдк рдореЗрдВ GridSearchCV() рдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ)
рдХреЛрдб:sklearn.metrics рдХреЛ рдореАрдЯреНрд░рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ
sklearn.grid_search рд╕реЗ рдЖрдпрд╛рдд GridSearchCV
np . рдХреЗ рд░реВрдк рдореЗрдВ numpy рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдЖрдпрд╛рдд рдУрдПрд╕
рд╕реНрдХреЗрд▓реЗрд░ рдЖрдпрд╛рдд рдбреЗрдЯрд╛рд╕реЗрдЯ рд╕реЗ
sklearn рдЖрдпрд╛рдд svm рд╕реЗ sk . рдХреЗ рд░реВрдк рдореЗрдВdef рдЯреНрдпреВрди_рд╣рд╛рдЗрдкрд░рдкреИрд░рд╛рдореАрдЯрд░ (рдкреНрд░рд╢рд┐рдХреНрд╖рдгрдбреЗрдЯрд╛, рдЕрд╡рдзрд┐):
рдСрд▓рдбрд╛рдЯрд╛рдЯреНрд░реЗрди = рдЯреНрд░реЗрдирд┐рдВрдЧрдбрд╛рдЯрд╛# Define hyperparameters and construct a dictionary of them amount_kernels = 2 kernels = ['rbf','linear'] gamma_range = 10. ** np.arange(-5, 5) C_range = 10. ** np.arange(-5, 5) tuned_parameters = [ {'kernel': ['rbf'], 'gamma': gamma_range , 'C': C_range}, {'kernel': ['linear'], 'C': C_range} ] print("Tuning hyper-parameters on period = " + str(period) + "\n") clf = GridSearchCV( sk.SVC(), tuned_parameters, cv=5, pre_dispatch='4*n_jobs', n_jobs=2, verbose = 1, scoring=metrics.make_scorer(metrics.scorer.f1_score, average="macro") ) clf.fit(allDataTrain[:,1:], allDataTrain[:,0:1].ravel()) # other code will output some data to files, graphs and will save the optimal model with joblib package # Eventually we will return the optimal model return clf
def run_tune_process(hyperparam_tuning_method,trainingData,testData):
рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП np.arange(0,100,10) рдореЗрдВ:
clf = hyperparam_tuning_method (рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛, рдЕрд╡рдзрд┐)y_real = testData[:,0:1].ravel() y_pred = clf.predict(testData[:,1:])
рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдЖрдИрд░рд┐рд╕ = рдбреЗрдЯрд╛рд╕реЗрдЯред рд▓реЛрдб_рдЖрдИрд░рд┐рд╕ ()
X_training = рдЖрдИрд░рд┐рд╕.рдбреЗрдЯрд╛ [0:100,:]
Y_training = (iris.target[0:100]).reshape(100,1)
рдЯреНрд░реЗрдирд┐рдВрдЧрд╕реЗрдЯ = np.hstack ((Y_training, X_training))X_test = рдЖрдИрд░рд┐рд╕.рдбреЗрдЯрд╛ [резрежреж:резрелреж,:]
Y_test = (рдЖрдИрд░рд┐рд╕.рдЯрд╛рд░рдЧреЗрдЯ[резрежреж:резрелреж]).reshape(релреж,рез)
рдЯреЗрд╕реНрдЯрд╕реЗрдЯ = np.hstack ((Y_test, X_test))run_tune_process(tune_hyperparameters,trainingset,testset)
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ Gi tHub рдкрд░ рджреЗрдЦреЗрдВhttps://github.com/scikit-learn/scikit-learn/issues/2889#issuecomment -35990430
.
(рдПрдХ рд╕рд╛рдЗрдб рдкреЙрдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, @ogrisel , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬреЙрдмрд▓рд┐рдм рд▓рдЧрддрд╛ рд╣реИ)
рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╕рдорд╛рдВрддрд░рддрд╛ рдУрд╡рд░рд╣реЗрдб - рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рдХрдо рд╕реЗ рдХрдо - рд╡рд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдерд╛
0.14 рдореЗрдВ...)
25 рдлрд░рд╡рд░реА 2014 21:52 рдХреЛ, рдЬреЛрдПрд▓ рдиреЛрдердореИрди [email protected] рд▓рд┐рдЦрд╛ :
рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ
рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВ рдЗрд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рдореАрдЯреНрд░рд┐рдХ рдХреЗ рд╕рд╛рде рд╕рд╣рд╕рдВрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣рд╛рдБ рд╣реИ
0.14 рдореЗрдВ рдФрд╕рдд = рдореИрдХреНрд░реЛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдФрд╕рдд (рднрд╛рд░рд┐рдд) рд╕реЗ рд▓рдЯрдХрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдкрд░
рд╕рд┐рд░, рдпрд╣ рдореЗрд░реА рдореИрдХрдмреБрдХ рдкрд░ 11s рдореЗрдВ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ 7s рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 0.14 . рдкрд░ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ
(рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ!)рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛
рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ?реирел рдлрд░рд╡рд░реА реирежрезрек рдХреЛ реиреж:рекреж рдХреЛ, рдПрдбрд╡рд░рд▓реА рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдзрдиреНрдпрд╡рд╛рдж рдЖрдкрдХреЗ рд╢реАрдШреНрд░ рдкреНрд░рддрд┐рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдПред
рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рд╕реЗ рдореЗрд░рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорддрд▓рдм рдардВрдб рд╕реЗ рд╣реИред рдпрд╣ рдЕрдм рдФрд░ рдЬрд╛рд░реА рдирд╣реАрдВ рд╣реИ
рдХреА рдЕрдЬрдЧрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рднреА рдирд╣реАрдВ рд╣реИ
рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХред рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрднреА рднреА рд╣реИрдВ рдФрд░ рдЙрдкрднреЛрдЧ рдХрд░реЗрдВ a
RAM рдХреА рдирд┐рд░рдВрддрд░ рдорд╛рддреНрд░рд╛ рд▓реЗрдХрд┐рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИредрдпрд╣ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рд╡рд░реНрдЬрди 0.14 рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдВрддрд┐рдо рдмрд╛рд░ рдПрдирдереЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛
рдЪрдВрджрд╡рд╛редрдореИрдВ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо "рд╡рд┐рдВрдбреЛрдЬ-7-6.1.7601-рдПрд╕рдкреА1" рдкрд░ рд╣реВрдВред
рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЬрд╛рдКрдВрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЧреНрд░рд┐рдбрд╕рд░реНрдЪрд╕реАрд╡реА рдХреЛ рд▓реВрдк рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рд╣реИред (рдкреНрд░рддрд┐
рдЕрдкрдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░реЗрдВ, рдЖрдкрдХреЛ рд╢рд╛рдпрдж рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
run_tune_process() рд╡рд┐рдзрд┐ рдЬрд┐рд╕реЗ рдХреЛрдб рдХреЗ рдиреАрдЪреЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ
рдФрд░ рд▓реВрдк рдореЗрдВ GridSearchCV() рдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ)
рдХреЛрдб:sklearn.metrics рдХреЛ рдореАрдЯреНрд░рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ
sklearn.grid_search рд╕реЗ рдЖрдпрд╛рдд GridSearchCV
np . рдХреЗ рд░реВрдк рдореЗрдВ numpy рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдЖрдпрд╛рдд рдУрдПрд╕
рд╕реНрдХреЗрд▓реЗрд░ рдЖрдпрд╛рдд рдбреЗрдЯрд╛рд╕реЗрдЯ рд╕реЗ
sklearn рдЖрдпрд╛рдд svm рд╕реЗ sk . рдХреЗ рд░реВрдк рдореЗрдВdef рдЯреНрдпреВрди_рд╣рд╛рдЗрдкрд░рдкреИрд░рд╛рдореАрдЯрд░ (рдкреНрд░рд╢рд┐рдХреНрд╖рдгрдбреЗрдЯрд╛, рдЕрд╡рдзрд┐):
рдСрд▓рдбрд╛рдЯрд╛рдЯреНрд░реЗрди = рдЯреНрд░реЗрдирд┐рдВрдЧрдбрд╛рдЯрд╛# Define hyperparameters and construct a dictionary of them amount_kernels = 2 kernels = ['rbf','linear'] gamma_range = 10. ** np.arange(-5, 5) C_range = 10. ** np.arange(-5, 5) tuned_parameters = [ {'kernel': ['rbf'], 'gamma': gamma_range , 'C': C_range}, {'kernel': ['linear'], 'C': C_range} ] print("Tuning hyper-parameters on period = " + str(period) + "\n") clf = GridSearchCV( sk.SVC(), tuned_parameters, cv=5, pre_dispatch='4*n_jobs', n_jobs=2, verbose = 1, scoring=metrics.make_scorer(metrics.scorer.f1_score, average="macro") ) clf.fit(allDataTrain[:,1:], allDataTrain[:,0:1].ravel()) # other code will output some data to files, graphs and will save the optimal model with joblib package # Eventually we will return the optimal model return clf
def run_tune_process(hyperparam_tuning_method,trainingData,testData):
рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП np.arange(0,100,10) рдореЗрдВ:
clf = hyperparam_tuning_method (рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛, рдЕрд╡рдзрд┐)y_real = testData[:,0:1].ravel() y_pred = clf.predict(testData[:,1:])
рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдЖрдИрд░рд┐рд╕ = рдбреЗрдЯрд╛рд╕реЗрдЯред рд▓реЛрдб_рдЖрдИрд░рд┐рд╕ ()
X_training = рдЖрдИрд░рд┐рд╕.рдбреЗрдЯрд╛ [0:100,:]
Y_training = (iris.target[0:100]).reshape(100,1)
рдЯреНрд░реЗрдирд┐рдВрдЧрд╕реЗрдЯ = np.hstack ((Y_training, X_training))X_test = рдЖрдИрд░рд┐рд╕.рдбреЗрдЯрд╛ [резрежреж:резрелреж,:]
Y_test = (рдЖрдИрд░рд┐рд╕.рдЯрд╛рд░рдЧреЗрдЯ[резрежреж:резрелреж]).reshape(релреж,рез)
рдЯреЗрд╕реНрдЯрд╕реЗрдЯ = np.hstack ((Y_test, X_test))run_tune_process(tune_hyperparameters,trainingset,testset)
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ Gi tHub рдкрд░ рджреЗрдЦреЗрдВhttps://github.com/scikit-learn/scikit-learn/issues/2889#issuecomment -35990430
.
рдЗрд╕рдХрд╛ рдХрд╕реНрдЯрдо рд╕реНрдХреЛрд░рд░ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдкрд╛рдпрдерди рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ: рдЖрдкрдХреЛ n_jobs=-1
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЛ if __name__ == '__main__'
рдмреНрд▓реЙрдХ рдореЗрдВ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЖрдкрдХреЛ рдлреНрд░реАрдЬ/рдХреНрд░реИрд╢ рдорд┐рд▓реЗрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдХрд╣реАрдВ рдкреНрд░рдореБрдЦ рд░реВрдк рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░реАрдбрдореЗ рдореЗрдВ?
рдЖрдкрдХреЛ рд╡рд╣ рд╕рдм рдХреБрдЫ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ n_jobs= -1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдирд╛рдо == . рдореЗрдВ
' рдореБрдЦреНрдп ' рдмреНрд▓реЙрдХ рдпрд╛ рдЖрдкрдХреЛ рдлрд╝реНрд░реАрдЬрд╝/рдХреНрд░реИрд╢ рдорд┐рд▓реЗрдВрдЧреЗред
рдЦреИрд░, рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдЬрдХрд▓ рдЬреЙрдмрд▓рд┐рдм рдПрдХ рд╕рд╛рд░реНрдердХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ
рдлреЛрд░реНрдХ рдмрдо рдХреЗ рдмрдЬрд╛рдп рдРрд╕реА рджреБрд░реНрдШрдЯрдирд╛ рдкрд░ рд╕рдВрджреЗрд╢ред
@GaelVaroquaux рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдЬреНрдЮрд╛рди-рд╕реАрдЦрдирд╛ рдЙрд╕ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рджреЗрддрд╛ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, IMHOред
@GaelVaroquaux рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдЬреНрдЮрд╛рди-рд╕реАрдЦрдирд╛ рдЙрд╕ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рджреЗрддрд╛ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ
рдореБрджреНрджрд╛ рддрдп рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, IMHOред
рдпрд╣ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдЬрд╛рдВрдЪрдирд╛ рд╣реИред рдореИрдВ рд╕рд╣реА рдЪрд▓ рд░рд╣рд╛ рд╣реВрдБ
рдЕрднреА, рдФрд░ рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Windows VM рдХреЛ рдмреВрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬрд╝ рдирд╣реАрдВ рдХрд░рддрд╛ :)
рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬрд╝ рдордд рдХрд░реЛ :)
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдВрдбреЛрдЬ рд╡реАрдПрдо рд╣реИред рдореИрдВ рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЦреЛрдЬрдиреЗ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдордп рд╣реИред
@ рд▓рд╛рд░реНрд╕рдореИрди , рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИрдВред рдХрд╕реНрдЯрдо рд╕реНрдХреЛрд░рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрд░реА рдЧрд▓рддреА рдереА, рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рд╣реИред рдореИрдВрдиреЗ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЗрд╕реА рдХреЛрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред
рдореБрдЭреЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдмрд╕ рдХреЛрдИ рд╕рд╛рд░реНрдердХ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
@adverley рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ Windows рдмреЙрдХреНрд╕ рдкрд░ GitHub рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ
рдлреАрд╕рдмреИрдХ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдмрдВрдж рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рдЬреНрдЮрд╛рдд рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдирдП рдЬреЙрдмрд▓рд┐рдм рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ, рдХрд╕реНрдЯрдо рд╕реНрдХреЛрд░рд░ рдЕрднреА рднреА рдЬрдо рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ Google рдкрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - рд╕реНрдХреЛрд░рд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдФрд░ рдЧреНрд░рд┐рдб рдЦреЛрдЬ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЬрдм рдпрд╣ рдЬрдо рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред 3 рдЕрдЬрдЧрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рднреА рдкреИрджрд╛ рд╣реБрдИ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ n_jobs=3 рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рднреА рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП CPU рдЙрдкрдпреЛрдЧ 0 рд░рд╣рддрд╛ рд╣реИред рдореИрдВ рдЖрдИрдкреАрдерди рдиреЛрдЯрдмреБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдХреНрдпрд╛ рдЖрдк рд╕реНрдХреЛрд░рд░ рдХрд╛ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдкрдХрд╛ рд╕реНрдХреЛрд░рд░ рдХрд╣реАрдВ рднреА joblib / n_jobs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЙрдмрд▓рд┐рдм рдХреЛ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рдЬрд╝рд░реВрд░ - рдпрд╣рд╛рдБ рдкреВрд░рд╛ рдХреЛрдб рд╣реИ - http://pastebin.com/yUE26SNs
рд╕реНрдХреЛрд░рд░ рдлрд╝рдВрдХреНрд╢рди "рд╕реНрдХреЛрд░_рдореЙрдбрд▓" рд╣реИ, рдпрд╣ рдЬреЙрдмрд▓рд┐рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди IPython рдиреЛрдЯрдмреБрдХ рд╕реЗ рдирд╣реАрдВред рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИ -
AttributeError: Can't get attribute 'score_model' on <module '__main__' (built-in)>;
рддрдм IPython рдФрд░ рд╕рднреА рдЙрддреНрдкрдиреНрди рдЕрдЬрдЧрд░ рдЙрджрд╛рд╣рд░рдг рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ - рдЪреБрдкрдЪрд╛рдк - рдФрд░ рдЬрдм рддрдХ рдореИрдВ рдЗрд╕реЗ рдкреБрдирдГ рдЖрд░рдВрдн рдирд╣реАрдВ рдХрд░рддрд╛ рддрдм рддрдХ рдХрд┐рд╕реА рднреА рдЕрдЬрдЧрд░ рдХреЛрдб рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ред
рд╡рд┐рд╢реЗрд╖рддрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░реЗрдВ, рдлрд┐рд░ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдХреНрдпрд╛ рдЖрдк IPython рдиреЛрдЯрдмреБрдХ рдореЗрдВ pylab рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ? рдирд╣реАрдВ рддреЛ рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЦреИрд░, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ ... рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЬреЙрдмрд▓рд┐рдмреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ _it рдХреЗрд╡рд▓ рддрднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм n_jobs 1_ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ, n_jobs=1
рд╕рд╛рде рдареАрдХ рдЪрд▓рддрд╛ рд╣реИред
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╡рд╛рд░реНрддрд╛ score_model
рд╕реЗ рд▓рд╛рдкрддрд╛ __main__
, рдпрд╛ рдирд╣реАрдВ, рдореИрдВ рдПрдХ if __name__ == '__main__'
IPython рдиреЛрдЯрдмреБрдХ рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВред
(рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рддреНрд░реБрдЯрд┐ рд░реЗрдЦрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдКрдкрд░ рдЪрд┐рдкрдХрд╛рдИ рдЧрдИ рдереА - рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рд╣реИред)
рдореИрдВ рдкрд╛рдЗрд▓реИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред
рдпрд╣рд╛рдБ рдкреВрд░реНрдг рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИ - http://pastebin.com/23y5uHT2
рд╣рдо, рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдореБрджреНрджреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╢рд╛рдпрдж @GaelVaroquaux рдпрд╛ @ogrisel рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдиреЛрдЯрдмреБрдХ __name__ == "__main__"
ред
рдореАрдЯреНрд░рд┐рдХ рдХреЛ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдФрд░ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреЗрдЧрд╛ред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ GridSearchCV рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬрд╝ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ, IPython рдиреЛрдЯрдмреБрдХ рдФрд░ рдЬреЙрдмрд▓рд┐рдм рдХреЗ рдмреАрдЪ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддрдЪреАрдд рд╣реИред
рджреЛрд╕реНрддреЛрдВ... рд╕реВрддреНрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╡реИрд╕реЗ рднреА рдореБрдЭреЗ рдкрд╣рд▓реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдереА, рдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рел рдШрдВрдЯреЗ рдХрд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд┐рдпрд╛ред рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж :)
рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП: рдпрд╣ рдЕрднреА рднреА рдЬрдо рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬрдм рдореЗрд░реЗ рдЕрдкрдиреЗ рдореЗрдХ_рд╕реНрдХреЛрд░ рд▓рд╛рдЧрдд рдлрд╝рдВрдХреНрд╢рди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ..рдореЗрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдЬрдордиреЗ рд▓рдЧрддрд╛ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдХрд╕реНрдЯрдо рд▓рд╛рдЧрдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрди рдлреНрд░реАрдЬ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рдЗрди 5 рдШрдВрдЯреЛрдВ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
рдореИрдВ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдХреНрд░реЙрд╕-рд╕рддреНрдпрд╛рдкрди рдФрд░ n_jobs = -1 рдХреЗ рднреАрддрд░ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдХреЛрд░рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рдЬреНрдпреВрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╡рд┐рдВрдбреЛрдЬ 10 рдкрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ AttributeError: Can't get attribute 'custom_scorer' on <module '__main__' (built-in)>;
рд╕рдВрджреЗрд╢ рдорд┐рд▓ рд░рд╣рд╛ рдерд╛ред
рдЬреИрд╕рд╛ рдХрд┐ @amueller рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛, рдХрд╕реНрдЯрдо рд╕реНрдХреЛрд░рд░ рдХреЛ рдиреЛрдЯрдмреБрдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЖрдпрд╛рдд рдХрд░рдирд╛ред
рдореБрдЭреЗ OSX 10.10.5 . рдкрд░ рдареАрдХ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ
рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред
рдУрдПрд╕рдПрдХреНрд╕ 10.12.5
рдХреГрдкрдпрд╛ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдВред рд╣рдо рдЗрд╕рдХреА рддрд╣ рддрдХ рдЬрд╛рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред рдбреЗрдЯрд╛ рд╕рд╣рд┐рдд рдХреЛрдб рдХреЗ рдмрд┐рдирд╛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдмрд╕ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдЕрдЬрдЧрд░ рдЦреЛрд▓ рдореЗрдВ рдЪрд▓рд╛рдПрдБ
import numpy as np
from sklearn.decomposition import PCA
from sklearn.svm import SVC
from sklearn.preprocessing import RobustScaler
from sklearn.metrics import classification_report
from sklearn.pipeline import Pipeline
from sklearn.model_selection import cross_val_predict
np.random.seed(1234)
X = np.random.sample((1000, 100))
Y = np.random.sample((1000)) > 0.5
svc_pipeline = Pipeline([('pca', PCA(n_components=95)), ('svc', SVC())])
predictions = cross_val_predict(svc_pipeline, X, Y, cv=30, n_jobs=-1)
print classification_report(Y, predictions)
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреАрд╕реАрдП рдЪрд░рдг рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдФрд░ рдЬрд╛рдирдХрд╛рд░реА:
рдбрд╛рд░реНрд╡рд┐рди-16.6.0-x86_64-i386-64bit
('рдкрд╛рдпрдерди', '2.7.13 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 4 рдЕрдкреНрд░реИрд▓ 2017, 08:47:57) \n[GCC 4.2.1 рд╕рдВрдЧрдд Apple LLVM 8.1.0 (clang-802.0.38)]')
('NumPy', '1.12.1')
('SciPy', '0.19.1')
('рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди', '0.18.2')
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдХреЛрд░рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рд╣рдореЗрдВ рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ a
рдЕрд▓рдЧ рдореБрджреНрджрд╛?
8 рдЕрдЧрд╕реНрдд 2017 6:15 рдмрдЬреЗ, "boazsh" [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:
рдмрд╕ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдЕрдЬрдЧрд░ рдЦреЛрд▓ рдореЗрдВ рдЪрд▓рд╛рдПрдБ
sklearn.decomposition рдЖрдпрд╛рдд PCAрд╕реЗ sklearn.svm sklearn рд╕реЗ SVC рдЖрдпрд╛рдд рдХрд░реЗрдВред
рдПрдХреНрд╕ = рдПрдирдкреА.рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирдореВрдирд╛ ((1000, 100))
рд╡рд╛рдИ = рдПрдирдкреАред рдпрд╛рджреГрдЪреНрдЫрд┐рдХред рдирдореВрдирд╛ ((1000))> 0.5
svc_pipeline = рдкрд╛рдЗрдкрд▓рд╛рдЗрди ([('рдкреАрд╕реАрдП', рдкреАрд╕реАрдП (n_components = 95)), ('svc', SVC ())])
рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ = cross_val_predict(svc_pipeline, X, Y, cv=30, n_jobs=-1)рдкреНрд░рд┐рдВрдЯ рд╡рд░реНрдЧреАрдХрд░рдг_рд░рд┐рдкреЛрд░реНрдЯ(Y, рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ)рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреАрд╕реАрдП рдЪрд░рдг рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдФрд░ рдЬрд╛рдирдХрд╛рд░реА:
рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди ==0.18.2
scipy==0.19.1
рд╕реБрдиреНрди == 1.12.1-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/scikit-learn/scikit-learn/issues/2889#issuecomment-320885103 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAEz6-6Klhc67b5kZ17fFTxc8RfZQ_BWks5sWBkLgaJpZM4BkiD9
.
рдЬрдм рдореБрдЭреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рддреЛ рдореИрдВ рдХрд╕реНрдЯрдо рд╕реНрдХреЛрд░рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрд╕реНрдЯрдо рд╕реНрдХреЛрд░рд░ рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдореЗрд░реА рдорд╢реАрди рдкрд░ред рд╕реНрдХреЛрд░рд░ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рднреА рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реАред рд╡реИрд╕реЗ рднреА, рд▓рдХреНрд╖рдг рд╕рдорд╛рди рджрд┐рдЦрддреЗ рд╣реИрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдЧ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ CPU рдЙрдкрдпреЛрдЧ рдХрдо рд╣реЛрддрд╛ рд╣реИред
@boazsh рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд┐рдпрддрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП np.random.RandomState
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░рди рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рд╣реЛрддреА рд╣реИред
рдпрджрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/scikit-learn/scikit-learn/issues/5115#issuecomment -187683383 рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рдП рдЧрдП рдкрд╛рдпрдерди 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ рдХрд╛рд░реНрдп-рдЖрд╕рдкрд╛рд╕ рднреА рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдордп OSX рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рджрд┐рдиреЛрдВ рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред
рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдХреБрдЫ рдЕрдВрд╢ (рдмрд╕ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЬреЛ рдХрдореА рд╣реИ рдЙрд╕реЗ рдЬреЛрдбрд╝реЗрдВ https://github.com/scikit-learn/scikit-learn/issues/2889#issuecomment-320885103):
import platform; print(platform.platform())
import sys; print("Python", sys.version)
import numpy; print("NumPy", numpy.__version__)
import scipy; print("SciPy", scipy.__version__)
import sklearn; print("Scikit-Learn", sklearn.__version__)
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдиреЗ рдУрдПрд╕рдПрдХреНрд╕ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ (рдХрд╛рдврд╝рд╛, рдЖрджрд┐ ...) рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде, рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде, рдХреЛрдВрдбрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛?
рд╕реНрдирд┐рдкреЗрдЯ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ (np.random.seed рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛)
рдбрд╛рд░реНрд╡рд┐рди-16.6.0-x86_64-i386-64bit
('рдкрд╛рдпрдерди', '2.7.13 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 4 рдЕрдкреНрд░реИрд▓ 2017, 08:47:57) \n[GCC 4.2.1 рд╕рдВрдЧрдд Apple LLVM 8.1.0 (clang-802.0.38)]')
('NumPy', '1.12.1')
('SciPy', '0.19.1')
('рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди', '0.18.2')
рд╕реНрдирд┐рдкреЗрдЯ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ (np.random.seed рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛)
рдмрдврд┐рдпрд╛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдиреЗ рдУрдПрд╕рдПрдХреНрд╕ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ (рдХрд╛рдврд╝рд╛, рдЖрджрд┐ ...) рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде, рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде, рдХреЛрдВрдбрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛?
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЖрдкрдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ...
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЪреВрдХ рдЧрдпрд╛ - рдкрд┐рдкред
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореБрдЭреЗ рдЙрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ:
рдЖрдпрд╛рдд рдордВрдЪ; рдкреНрд░рд┐рдВрдЯ (рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо.рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо ())
рдбрд╛рд░реНрд╡рд┐рди-16.7.0-x86_64-i386-64bit
рдЖрдпрд╛рдд рдкреНрд░рдгрд╛рд▓реА; рдкреНрд░рд┐рдВрдЯ ("рдкрд╛рдпрдерди", sys.version)
рдкрд╛рдпрдерди 2.7.12 |Continuum Analytics, Inc.| (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 2 рдЬреБрд▓рд╛рдИ 2016, 17:43:17)
[рдЬреАрд╕реАрд╕реА рек.реи.рез (рдПрдкреНрдкрд▓ рдЗрдВрдХ. рдмрд┐рд▓реНрдб релремрелрео рдкрд░ рдЖрдзрд╛рд░рд┐рдд) (рдПрд▓рдПрд▓рд╡реАрдПрдо рдмрд┐рд▓реНрдб реирейрейрем.резрез.режреж)]
рдЖрдпрд╛рдд рд╕реБрдиреНрди; рдкреНрд░рд┐рдВрдЯ ("NumPy", numpy.__version__)
рдиреНрдпреВрдордкреА 1.13.1
рдЖрдпрд╛рдд scipy; рдкреНрд░рд┐рдВрдЯ ("SciPy", scipy.__version__)
рд╡рд┐рдЬреНрдЮрд╛рдирдкреА 0.19.1
рдЖрдпрд╛рдд рд╕реНрдХреЗрд▓реЗрд░; рдкреНрд░рд┐рдВрдЯ ("рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди", рд╕реНрдХреЗрд▓реЗрд░реНрди.__рд╕рдВрд╕реНрдХрд░рдг__)
рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди 0.18.2
рдХреНрдпрд╛ рдЖрдк рд╡рд░реНрдмреЛрдЬрд╝=10 рдХреЛ cross_val_predict рдореЗрдВ рднреА рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╣рдо рд╢рд╛рдпрдж
рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рдЯреВрдЯрддрд╛ рд╣реИ?
8 22:59 рдЕрдЧрд╕реНрдд 2017, boazsh [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЪреВрдХ рдЧрдпрд╛ - рдкрд┐рдкред
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/scikit-learn/scikit-learn/issues/2889#issuecomment-320948362 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAEz67S64KIXUGvARGjvxBOw_4aCAdqhks5sWFu0gaJpZM4BkiD9
.
@jnothman рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдВрдбрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдПрдордХреЗрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рди рдХрд┐ рддреЗрдЬред рдпрд╣ рдардВрдб рдХреА рд╕рдорд╕реНрдпрд╛ рдПрдХреНрд╕реЗрд▓реЗрд░реЗрдЯ рдФрд░ рдкрд╛рдпрдерди рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред http://scikit-learn.org/stable/faq.html#why -do-i-sometime-get-a-crash-freeze-with-n-jobs-1-under-osx-or-linux рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП .
рджреВрд╕рд░реА рдУрд░ pip рдЙрди рдкрд╣рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдЬреЛ Accelerate (рд▓реЗрдЦрди рдХреЗ рд╕рдордп) рдХреЗ рд╕рд╛рде рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдмрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб (JOBLIB_START_METHOD рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдПрдордХреЗрдПрд▓ (рдЬреИрд╕реЗ рдХреЛрдВрдбрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдпрд╛ рдУрдкрдирдмреАрдПрд▓рдПрдПрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдВрдбрд╛-рдлреЛрд░реНрдЬ рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдХреБрдЫ рднреА рдирд╣реАрдВ рдЫрд╛рдкрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ...
@jnothman рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдВрдбрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдПрдордХреЗрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рди рдХрд┐ рддреЗрдЬред
@jnothman рдпрджрд┐ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ
conda create -n test-env python=3 nomkl scikit-learn ipython
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ рдореИрдВ рдЕрдкрдиреЗ рдУрдПрд╕ рдПрдХреНрд╕ рд╡реАрдПрдо рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВрдиреЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ @boazsh рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:
Darwin-16.1.0-x86_64-i386-64bit
('Python', '2.7.13 |Continuum Analytics, Inc.| (default, Dec 20 2016, 23:05:08) \n[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]')
('NumPy', '1.12.1')
('SciPy', '0.19.1')
('Scikit-Learn', '0.18.2')
рд╣рдореНрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рд╕реНрдирд┐рдкреЗрдЯ рдкреВрд░реНрдг рдкреБрдирд░реБрддреНрдкрд╛рджрдХ рдирд╣реАрдВ рдерд╛ред рдпрд╣рд╛рдБ рдПрдХ рдЕрджреНрдпрддрди рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:
import numpy as np
from sklearn.decomposition import PCA
from sklearn.svm import SVC
from sklearn.preprocessing import RobustScaler
from sklearn.metrics import classification_report
from sklearn.pipeline import Pipeline
from sklearn.model_selection import cross_val_predict
np.random.seed(1234)
X = np.random.sample((1000, 100))
Y = np.random.sample((1000)) > 0.5
svc_pipeline = Pipeline([('pca', PCA(n_components=95)), ('svc', SVC())])
PCA(n_components=95).fit(X, Y) # this line is required to reproduce the freeze
predictions = cross_val_predict(svc_pipeline, X, Y, cv=30, n_jobs=-1)
print(classification_report(Y, predictions))
рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ Accelerate рдФрд░ Python рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рдХреА рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╢рд╛рдпрдж рдХреЛрдВрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдордХреЗрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рди рдХрд┐ рдПрдХреНрд╕реАрд▓рд░реЗрдЯ рдХрд░реЗрдВред
рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ (рд╢рд╛рдпрдж scikit-learn 0.20) рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЬреЙрдмрд▓рд┐рдм рдХреЗ рд▓рд┐рдП рдирдП рд▓реЛрдХреА рдмреИрдХрдПрдВрдб рджреНрд╡рд╛рд░рд╛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: https://github.com/scikit-learn/scikit-learn/issues/7650
рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рд╡рд░реНрдЬрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рд╡реЗрдВрдбрд░рд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд▓рдХреНрд╖рдг рд╣реИ ....
рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рд╡рд░реНрдЬрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рд╡реЗрдВрдбрд░рд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд▓рдХреНрд╖рдг рд╣реИ ....
рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдврд╝рд╛, рдЬреЛ рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрд╛:
https://lwn.net/Articles/730630/rss
рдореЗрд░реЗ рдкрд╛рд╕ RandomizedSearchCV рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ; рдпрд╣ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рд▓рдЯрдХрд╛ рд░рд╣рддрд╛ рд╣реИред рдореИрдВ 3 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рдореИрдХрдмреБрдХ рдкреНрд░реЛ, 16GB рд░реИрдо рдФрд░ рдХреЛрд░ i7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рд╡рд░реНрдЬрди 0.19 рд╣реИред
рд╣реИрд░рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╢реБрдХреНрд░рд╡рд╛рд░ рдХреЛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ !!! рд╕реЛрдорд╡рд╛рд░ рдХреА рд╕реБрдмрд╣, рдореИрдВ рд╡рд╛рдкрд╕ рдЬрд╛рддрд╛ рд╣реВрдВ рдФрд░ рджреМрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЬрдо рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдкрд┐рдЫрд▓реЗ рд░рдиреЛрдВ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдЦрддреНрдо рд╣реЛрдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ ремреж рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рд▓рдВрдмрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реБрдЖ, рдпрд╣ рдмрд╕ рд╣реИрдВрдЧ рд╣реЛ рдЧрдпрд╛, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ, рдХреБрдЫ рднреА рдирд╣реАрдВ рдФрд░ рдореЗрд░рд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдЧрд░реНрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд┐рдЬрд▓реА рдЪреВрд╕рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд▓ рдирд╣реАрдВ рд╣реИред рдиреАрдЪреЗ рдХреЛрдбред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж n_iter рдХреЛ 2 рдФрд░ n_jobs=1 рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред рддреЛ рдЗрд╕рдХрд╛ n_jobs=-1 рд╕реЗ рдХреБрдЫ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдЗрд╕ рдХреЛрдб рдиреЗ рдкрд┐рдЫрд▓реЗ рд╢реБрдХреНрд░рд╡рд╛рд░ рдХреЛ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛! рдпрд╣ рд╕рд┐рд░реНрдл рд╕реЛрдорд╡рд╛рд░ рд╕реЗ рдирдлрд░рдд рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рд╣реИ рдХрд┐ 20k рдЙрджрд╛рд╣рд░рдг рдЖрдпрд╛рдореАрддрд╛ рдХреЗ рд╕рд╛рде <100..
from sklearn.metrics import make_scorer
from sklearn.cross_validation import cross_val_score
from sklearn.grid_search import RandomizedSearchCV
import sklearn_crfsuite
crf = sklearn_crfsuite.CRF(
algorithm='lbfgs',
max_iterations=100,
all_possible_transitions=True
)
params_space = {
'c1': scipy.stats.expon(scale=0.5),
'c2': scipy.stats.expon(scale=0.05),
}
f1_scorer = make_scorer(metrics.flat_f1_score,
average='weighted', labels=labels)
rs = RandomizedSearchCV(crf, params_space,
cv=3,
verbose=1,
n_jobs=-1,
n_iter=50,
scoring=f1_scorer)
rs.fit(X_train, y_train) # THIS IS WHERE IT FREEZES
рд╕реАрдЖрд░рдПрдл рдХреНрдпрд╛ рд╣реИ? рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╡рд╛рдкрд╕реА_рдЯреНрд░реЗрди_рд╕реНрдХреЛрд░=рдЧрд▓рдд?
рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ @KaisJM рдХреА рд╕рдорд╕реНрдпрд╛ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рддреНрд╡рд░рдг рдкрд░ рдкреНрд░рд╕рд┐рджреНрдз рд╕реАрдорд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рд╣рдорд╛рд░реЗ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рджреЗрдЦреЗрдВред
рдЖрдкрдиреЗ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛?
рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
import platform; print(platform.platform())
import sys; print("Python", sys.version)
import numpy; print("NumPy", numpy.__version__)
import scipy; print("SciPy", scipy.__version__)
import sklearn; print("Scikit-Learn", sklearn.__version__)
рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╢реБрдХреНрд░рд╡рд╛рд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ !! рдореИрдВрдиреЗ рддрдм рд╕реЗ рдХреБрдЫ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдЬреНрдЮрд╛рди рд╕реАрдЦрдирд╛ рдПрдирд╛рдХреЛрдВрдбрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╛рдЗрдк (рдкрд╛рдЗрдк рдЗрдВрд╕реНрдЯреЙрд▓ - рдЕрдкрдЧреНрд░реЗрдб рд╕реНрдХреЗрд▓реЗрд░) рдХреЗ рд╕рд╛рде рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реА .. рдореИрдВрдиреЗ 0.19 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рдареАрдХ рдЪрд▓рд╛рдпрд╛ред
рдпрд╣рд╛рдБ рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рд┐рдВрдЯреЛрдВ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ:
Darwin-15.6.0-x86_64-i386-64bit
('Python', '2.7.12 |Continuum Analytics, Inc.| (default, Jul 2 2016, 17:43:17) \n[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)]')
('NumPy', '1.13.1')
('SciPy', '0.19.1')
('Scikit-Learn', '0.19.0')
@jnothman : рдореИрдВ sklearn.grid_search рд╕реЗ RandomizedSearchCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ return_train_score рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ sklearn.grid_search рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ .. рдореИрдВ sklearn.model_selection рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдЯреАрдХ рдореБрджреНрджрд╛ рд╣реЛрдЧрд╛)ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдореВрд▓ рдЯрд┐рдкреНрдкрдгреАред
рдХреНрдпрд╛ рдЖрдк conda list | grep numpy
рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреНрдЮрд╛рди-рд╕реАрдЦрдиреЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдЖрдкрдиреЗ рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде рднреА numpy рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдиреБрдХреАрд▓реЗ рдкрд╣рд┐рдпреЗ рдорд┐рд▓ рдЧрдП рд╣реИрдВ рдЬреЛ рддреНрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реАрдорд╛ рд╣реИред
рд╕рд▓рд╛рд╣ рдХрд╛ рдЫреЛрдЯрд╛ рд╢рдмреНрдж:
pip install --update
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк pip install --update --no-deps
ред рдЕрдиреНрдпрдерд╛ рдпрджрд┐ рдХреЛрдИ рдкреИрдХреЗрдЬ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ numpy рдкрд░ рдХрд╣реЗрдВ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╡реАрдирддрдо numpy рдирд╣реАрдВ рд╣реИ, numpy рдХреЛ pip рдХреЗ рд╕рд╛рде рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВредрдЕрд░реЗ рд╣рд╛рдБ рдФрд░ BTW, sklearn.grid_search рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ рдЖрдк рд╢рд╛рдпрдж sklearn.model_selection рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдбрд╝рдХ рд╕реЗ рдмрд╣реБрдд рдиреАрдЪреЗ рдирд╣реАрдВ рд╣реИред
рдЕрдЪреНрдЫреА рд╕рд▓рд╛рд╣, рдзрдиреНрдпрд╡рд╛рджред рддреЛ рдХреНрдпрд╛ numpy рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ? рдЖрдк рдХрд┐рд╕ рд╕реАрдорд╛ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдКрдкрд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рд▓рд┐рдВрдХ? рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрдврд╝рд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд╕рд╛рдорд╛рди рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ (рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдЕрд╣рдВрдХрд╛рд░реА рдЖрджрдореА рд╣реВрдБ :))ред
conda list | grep numpy
рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ
рд╕реБрдиреНрди 1.12.0
рд╕реБрдиреНрди 1.12.0 py27_0
рд╕реБрдиреНрди 1.13.1
numpydoc 0.7.0
рд╡рд╛рд╣ рддреАрди numpy рд╕реНрдерд╛рдкрд┐рдд рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рджреЛ рджреЗрдЦрд╛ рд▓реЗрдХрд┐рди рддреАрди рдХрднреА рдирд╣реАрдВ ... рд╡реИрд╕реЗ рднреА рдпрд╣ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣рд╛ рдерд╛, рдпрд╛рдиреА рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдорд┐рд╢реНрд░рд┐рдд рдкрд╛рдЗрдк рдФрд░ рдХреЛрдВрдбрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред
pip uninstall -y # maybe a few times to make sure you have removed pip installed packages
conda install numpy -f
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдПрдХрд▓ рдЕрдВрдХ рд╣реЛрдЧрд╛ рдЬреЛ рдПрдордХреЗрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЕрдЧрд░ рдореИрдВ рдЖрдк рд╣реЛрддреЗ рддреЛ рдореИрдВ рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рдХрд┐ рдЖрдкрдХреЛ рдЕрдиреНрдп рдореБрдЦреНрдп рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ scipy, рдЖрджрд┐ ...
рдХреБрдЫ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВ рдкрд╛рдЗрдк рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдВрдбрд╛ рдореЗрдВ рдХреБрдЫ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдВрдбрд╛ рдХреЗ рд╕рд╛рде рдкрд╛рдЗрдк рдорд┐рд▓рд╛рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЕрдЧрд▓реА рдмрд╛рд░ рдРрд╕рд╛ рд╣реЛрдиреЗ рдкрд░ рдореИрдВ --no-deps рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛ред
рдПрдХ рдмрд╛рдд рдЬреЛ рдореБрдЭреЗ рдмрддрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдереА, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЬрд┐рд╕ рдЕрдЬрдЧрд░ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЙрд╕рдХреЗ рднреАрддрд░ рдореИрдВрдиреЗ рд╕реНрдкрд╛рдЗрдбрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рд╕реНрдкрд╛рдЗрдбрд░ рдФрд░ рдЬреБрдкрд┐рдЯрд░ рджреЛрдиреЛрдВ рдореЗрдВ, рд╕реНрдкрд╛рдЗрдбрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рдореИрдВрдиреЗ рд╕реНрдкрд╛рдЗрдбрд░ рдФрд░ рдКрдкрд░ рдХреЗ numpys рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛, рдХреЛрдВрдбрд╛ рдХреЗ рд╕рд╛рде рдКрдмрдбрд╝-рдЦрд╛рдмрдбрд╝ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ (рдЬреЛ рдХрд┐ рд╕реНрдХрд┐рдХрд┐рдЯ рдХреЛ 0.19 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдФрд░ рдлрд┐рд░ рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рд╕реНрдкрд╛рдЗрдбрд░ рдЗрдВрд╕реНрдЯрд╛рд▓ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рд╣реБрдЖ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдПрдХ рджрд┐рди рдХрд╛рдо рдХреНрдпреЛрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЕрдЪрд╛рдирдХ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ ??
рдареАрдХ рд╣реИ, рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ !! рдХреНрдпрд╛ рдореБрдЭреЗ рдмрд╕ рдПрдХ рдирдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреЛрдВрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдФрд░ рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдпрд╣ рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдпрд╛ рдЗрд╕реЗ рдФрд░ рдЦрд░рд╛рдм рдХрд░ рджреЗрдЧрд╛?
рдПрдХ рдХреЛрд╢рд┐рд╢ рдХреЗ рдХрд╛рдмрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ!
рдПрдХ рдирдпрд╛ env рдмрдирд╛рдпрд╛ рдФрд░ рдХреЛрдВрдбрд╛ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛, рдлрд┐рд░ рднреА рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рдЬрдорд╛ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдЖрджрд┐ рдХреА рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рддрд┐ред
n_jobs=1 рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд▓реЗрддрд╛ рд╣реИ (рдпрд╣ рдкрд┐рдЫрд▓реЗ env рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред n_jobs=-1 рд╡рд╣ рд╣реИ рдЬреЛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рдЬрдо рдЬрд╛рддрд╛ рд╣реИред
conda list | grep numpy
numpy 1.13.1 py27hd567e90_2
Darwin-15.6.0-x86_64-i386-64bit
('Python', '2.7.13 |Continuum Analytics, Inc.| (default, Dec 20 2016, 23:05:08) \n[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]')
('NumPy', '1.13.1')
('SciPy', '0.19.1')
('Scikit-Learn', '0.19.0')
рддрдм рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╕реНрдирд┐рдкреЗрдЯ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдЖрдИрдкреАрдерди рд╕рддреНрд░ рдореЗрдВ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдПрдХ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред
рдореИрдВрдиреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ "рддреНрд╡рд░рд┐рдд" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдкрдврд╝рд╛ рд╣реИ .. рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕рд╕реЗ рдЬреЛ рд▓рд┐рдпрд╛ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рдВрдЯрд╛() рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдирд╣реАрдВ() рдХреЙрд▓ рдЦрд░рд╛рдм рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдХреБрдЫ рдЧреБрдЧрд▓ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рддрдХ рдХреБрдЫ рднреА рдХрд╛рдордХрд╛рдЬ рдкрд░ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА? рдзрдиреНрдпрд╡рд╛рдж,
рдЗрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдВ (https://github.com/numpy/numpy/issues/4776 рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛):
import multiprocessing as mp
import numpy as np
def compute(n):
print('Enter')
np.dot(np.eye(n), np.eye(n))
print('Exit')
print('\nWithout multiprocessing:')
compute(1000)
print('\nWith multiprocessing:')
workers = mp.Pool(1)
results = workers.map(compute, (1000, 1000))
рдиреНрдпреВрдирддрдо рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
Without multiprocessing:
Enter
Exit
With multiprocessing:
Enter
Exit
Enter
Exit
@GaelVaroquaux scikit-learn рдПрдХ рдРрдк рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдПрдХ рд╕рдореГрджреНрдз рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рдЕрдЧрд░ рд╣рд░ рдХреЛрдИ рд╡рд╣реА рдХрд░рддрд╛ рдЬреЛ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдФрд░ рдРрд╕реЗ рдХрдИ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИрдВ рдЬрд╣рд╛рдВ рдЙрд╕ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рд╡рд┐рдкрд░реАрдд рд╕рддреНрдп рд╣реИред
рдореИрдВрдиреЗ Google рдХреНрд▓рд╛рдЙрдб рдХрдВрдкреНрдпреВрдЯ рдЗрдВрдЬрди рдореЗрдВ рдПрдХ ubuntu рд╡рд░реНрдЪреБрдЕрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ (рдЙрдмрдбрд╝-рдЦрд╛рдмрдбрд╝, рдорд╕рд╛рд▓реЗрджрд╛рд░, рд╕реНрдХрд┐рдХрд┐рдЯ рдЖрджрд┐ рд╕рдмрд╕реЗ рдЕрджреНрдпрддрд┐рдд рдирд╣реАрдВ рдереЗ)ред рдХреЛрдб рдареАрдХ рдЪрд▓рд╛ред рдлрд┐рд░ рдореИрдВрдиреЗ рдЬреЗрдирд╕рд┐рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕рдиреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП numpy рдФрд░ scipy рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд┐рдирдХреА рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (boto, bz2file рдФрд░ smart_open)ред рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЛрдб рдлреНрд░реАрдЬ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕реБрд░рд╛рдЧ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдлреНрд░реАрдЬ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИред
Gensim . рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж
numpy (1.10.4) рдХреЛ numpy (1.13.3) рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
scipy (0.16.1) рдХреЛ scipy рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ (0.19.1)
рдФрд░ рдЬрд╛рдирдХрд╛рд░реА:
рдХреБрдЫ рд╢реЛрдз рдХрд░рдиреЗ рдкрд░ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореЗрд░реЗ /usr/lib/ рд╕реЗ libblas, liblapack рдФрд░ liblapack_atlas рдЧрд╛рдпрдм рдереЗ, рд╕рд╛рде рд╣реА рдореИрдВрдиреЗ /usr/lib/atlas-base/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╣реАрдВ рджреЗрдЦреАред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡реЗ рд╡рд╣рд╛рдВ рдереЗ рдФрд░ рдЬреЗрдиреНрд╕рд┐рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ numpy рдЖрджрд┐ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдЬреЗрдиреНрд╕рд┐рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЙрдиреНрдирдд рд╕реНрдХрд┐рдХрд┐рдЯ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ sudo apt-get --yes install libatlas-base-dev
рдФрд░ "_update-alternatives_" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖ, рдХреЛрдб рдЕрднреА рднреА n_jobs=-1 рдХреЗ рд╕рд╛рде рдЬрдо рдЬрд╛рддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ numpy OpenBlas рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕реЗ рдПрдЯрд▓рд╕ рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗ рдФрд░ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
>>> import numpy as np
>>> np.__config__.show()
lapack_opt_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
blas_opt_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
openblas_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
openblas_lapack_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
blas_mkl_info:
NOT AVAILABLE
рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдареАрдХ рдЪрд▓рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдореИрдВ n_jobs=-1 рдирд╣реАрдВ рдбрд╛рд▓рддрд╛ред
from sklearn.metrics import fbeta_score
def f2_score(y_true, y_pred):
y_true, y_pred, = np.array(y_true), np.array(y_pred)
return fbeta_score(y_true, y_pred, beta=2, average='binary')
clf_rf = RandomForestClassifier()
grid_search = GridSearchCV(clf_rf, param_grid=param_grid, scoring=make_scorer(f2_score), cv=5)
grid_search.fit(X_train, y_train)
@paulaceccon ATLAS рдпрд╛ OpenBLAS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреЗ Numpy рдФрд░ Scipy рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╣реИрдВ?
рдЖрдкрдиреЗ рдЬреЛ @KaisJM рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдХрдард┐рди рд╣реИред рдПрдХ рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╣рдореЗрдВ рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдкрд╛рдпрдерди рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рд╣рдо рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрднреА рд╣рдо рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЬреЗрдиреНрд╕рд┐рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдкреВрд░реНрдг рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдПрдХ рдкрд╛рдпрдерди рд╡рд╛рддрд╛рд╡рд░рдг рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдмрдирд╛рдо рдкрд╛рдпрдерди рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХреА рдПрдХ рдирдЧрдгреНрдп рд░рд╛рд╢рд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрдиреНрдирдд рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░
@KaisJM рд╡реИрд╕реЗ, рдпрд╣ рдкреГрд╖реНрда рдкреБрд░рд╛рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдЬрдХрд▓ рдкрд╣рд┐рдП рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реНрд╡рдпрдВ рдХрд╛ OpenBLAS рд╣реИред рдпрджрд┐ рдЖрдк рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╛рд░реА рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк OpenBLAS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред
@lesteve рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдУрдкрдирдмреНрд▓рд╛рд╕ рдЕрдм рдлреНрд░реАрдЬ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?
@lesteve paula рдиреЗ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкреВрд░рд╛ рдХреЛрдб рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕реБрд░рд╛рдЧ рджреЗрдЧрд╛ред рдореИрдВ рдпрд╣рд╛рдВ рд╕реНрдирд┐рдкреЗрдЯ "рдкреВрд░реНрдг" рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ "рдкреБрд░рд╛рдирд╛" - рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ - рдирд┐рд░реНрджреЗрд╢ рдкреГрд╖реНрда рдЗрддрдирд╛ рдкреБрд░рд╛рдирд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ OpenBLAS рдЙрд╕ рдкреГрд╖реНрда рдореЗрдВ рдЬрд┐рд╕ рдлреАрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрд╕рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИред
рдпреЗ рдирд┐рд░реНрджреЗрд╢ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛред рдпрджрд┐ рдЖрдк рд╡рд┐рд╡рд░рдг рдореЗрдВ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ "рд▓реЗрдХрд┐рди OpenBLAS рд╕рдВрд╕реНрдХрд░рдг 0.2.8-4 рд╕реЗ рдкрд╣рд▓реЗ рдЬреЙрдмрд▓рд┐рдм/рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдлреНрд░реАрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИ"ред рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд╕реБрдиреНрди рдкрд╣рд┐рдпрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдФрд░ рдЗрд╕рдореЗрдВ OpenBLAS реж.реи.рео.резрео рд╣реИред рд╡реЗ рдЬрд┐рд╕ рдлреНрд░реАрдЬ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ https://github.com/scikit-learn/scikit-learn/issues/2889#issuecomment -334155175 рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкреВрд░рд╛ рдХреЛрдб рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕реБрд░рд╛рдЧ рджреЗрдЧрд╛
рдирд╣реАрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдирд╣реАрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ рдЬреЛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдардВрдб рдЕрднреА рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╣рдо AFAIK рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛рд░рдХреЛрдВ рдХреЗ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдореЗрдВ рд╣реЛрддреА рд╣реИред рдЬрдм рддрдХ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдХреБрдЫ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╣рдо рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдпрд╣рд╛рдВ рд╕реНрдирд┐рдкреЗрдЯ "рдкреВрд░реНрдг" рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ
рд╡рд╣ рдорд╣рд╛рди рд╣реЛрдЧрд╛ред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдРрд╕рд╛ рд╕реНрдирд┐рдкреЗрдЯ рдЕрднреА рднреА рдПрдХ рдЕрд▓рдЧ рдХреЛрдВрдбрд╛ рд╡рд╛рддрд╛рд╡рд░рдг (рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдЬреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлреНрд░реАрдЬ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ)ред
@lesteve @paulaceccon : рдореИрдВрдиреЗ рдкрд╛рдЙрд▓рд╛ рдХрд╛ рдЕрдВрд╢ рдХреЛрдб рд▓рд┐рдпрд╛ рдФрд░ рдПрдХ рдкреВрд░реНрдг рд░рди-рд╕рдХреНрд╖рдо рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдмрдирд╛рдпрд╛ред рдмрд╕ рдЗрд╕реЗ рдЬреНрдпреВрдкрд┐рдЯрд░ рд╕реЗрд▓ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВред рдкрд╛рдЙрд▓рд╛: рдореИрдВ рдЗрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рдлреНрд░реАрдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ n_jobs=-1 рдФрд░ рдареАрдХ рдЪрд▓рддрд╛ рд╣реИред рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝реНрд░реАрдЬрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк grid_search рдореЙрдбреНрдпреВрд▓ рдФрд░ model_selection рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рд░рд╣реЗред
import platform; print(platform.platform())
import sys; print("Python", sys.version)
import numpy as np; print("NumPy", np.__version__)
import scipy; print("SciPy", scipy.__version__)
import sklearn; print("Scikit-Learn", sklearn.__version__)
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
import scipy.stats
from sklearn.metrics import make_scorer
from sklearn.grid_search import RandomizedSearchCV
#from sklearn.model_selection import RandomizedSearchCV
#from sklearn.model_selection import GridSearchCV
from sklearn.metrics import fbeta_score
X, y = make_classification(n_samples=1000, n_features=4,
n_informative=2, n_redundant=0,
random_state=0, shuffle=False)
clf_rf = RandomForestClassifier(max_depth=2, random_state=0)
def f2_score(y_true, y_pred):
y_true, y_pred, = np.array(y_true), np.array(y_pred)
return fbeta_score(y_true, y_pred, beta=2, average='binary')
param_grid = {'max_depth':[2, 3, 4], 'random_state':[0, 3, 7, 17]}
grid_search = RandomizedSearchCV(clf_rf, param_grid, n_jobs=-1, scoring=make_scorer(f2_score), cv=5)
grid_search.fit(X, y)
@KaisJM рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдлреНрд░реАрдЬрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдХреЛ рд╕рд░рд▓ рдФрд░ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдлреНрд░реАрдЬ рдХрд░рддрд╛ рд╣реИред
@lesteve рд╕рд╣рдордд рд╣реБрдПред рдореИрдВрдиреЗ рдПрдХ рдирдпрд╛ рдкрд╛рдпрдерди 2 рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЬреЗрдиреНрд╕рд┐рдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдерд╛ред рдХреЛрдб рдареАрдХ рдЪрд▓рд╛, n_jobs = -1 рдХреЗ рд╕рд╛рде рдХреЛрдИ рдлреНрд░реАрдЬ рдирд╣реАрдВред рдХреНрдпрд╛ рдЕрдзрд┐рдХ рд╣реИ, Numpy OpenBLAS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ рдЬреЛ рдлрд╝реНрд░реАрдЬрд╝ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╡рд╣ рд╕реНрдерд╛рди рдЬрд╣рд╛рдБ Gensim рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдУрдкрдирдмреНрд▓рд╛рд╕ рдЗрд╕ рдлреНрд░реАрдЬ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред
bumpy.__config__.show()
lapack_opt_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
blas_opt_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
openblas_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
openblas_lapack_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
blas_mkl_info:
NOT AVAILABLE
@KaisJM рдореИрдВ рдпрд╣рд╛рдБ (рд╡рд┐рдВрдбреЛрдЬрд╝) рдПрдХ рд╣реА рд╕реНрдирд┐рдкреЗрдЯ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдпрд╣ рдЬрдо рдЬрд╛рддрд╛ рд╣реИред
from sklearn.datasets import make_classification
X, y = make_classification()
from sklearn.ensemble import RandomForestClassifier
clf_rf_params = {
'n_estimators': [400, 600, 800],
'min_samples_leaf' : [5, 10, 15],
'min_samples_split' : [10, 15, 20],
'criterion': ['gini', 'entropy'],
'class_weight': [{0: 0.51891309, 1: 13.71835531}]
}
import numpy as np
def ginic(actual, pred):
actual = np.asarray(actual) # In case, someone passes Series or list
n = len(actual)
a_s = actual[np.argsort(pred)]
a_c = a_s.cumsum()
giniSum = a_c.sum() / a_s.sum() - (n + 1) / 2.0
return giniSum / n
def gini_normalizedc(a, p):
if p.ndim == 2: # Required for sklearn wrapper
p = p[:,1] # If proba array contains proba for both 0 and 1 classes, just pick class 1
return ginic(a, p) / ginic(a, a)
from sklearn import metrics
gini_sklearn = metrics.make_scorer(gini_normalizedc, True, True)
from sklearn.model_selection import GridSearchCV
clf_rf = RandomForestClassifier()
grid = GridSearchCV(clf_rf, clf_rf_params, scoring=gini_sklearn, cv=3, verbose=1, n_jobs=-1)
grid.fit(X, y)
print (grid.best_params_)
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЬреАрдм рд╣реИ рд▓реЗрдХрд┐рди _custom_ рдореАрдЯреНрд░рд┐рдХ рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рдкрд░ рдпрд╣ рдЬрдорддрд╛ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдПрдХ рдРрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ рдПрдХ рд╣реА рдХреЛрдб рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдмрд╕ рдирдП рдорд╣реАрдиреЗ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдпрд╣ рдЪрд▓рдирд╛ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рдмреАрдЪ рд╕реНрдХреЗрд▓реЗрд░ рдХреЛ 0.19 . рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
рдПрдХ рд▓реВрдк рдореЗрдВ GridSearchCV рдпрд╛ RandomizedSearchCV рдЪрд▓рд╛рдирд╛ рдФрд░ n_jobs> 1 рдмреГрд╣рд╕реНрдкрддрд┐ рдФрд░ IntelliJ рдореЗрдВ рдЪреБрдкрдЪрд╛рдк рд▓рдЯрдХрд╛ рд░рд╣реЗрдЧрд╛:
for trial in tqdm(range(NUM_TRIALS)):
...
gscv = GridSearchCV(estimator=estimator, param_grid=param_grid,
scoring=scoring, cv=cv, verbose=1, n_jobs=-1)
gscv.fit(X_data, y_data)
...
@lesteve рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд numpy рд╣рдЯрд╛ рджрд┐рдпрд╛:
рдбрд╛рд░реНрд╡рд┐рди-16.6.0-x86_64-i386-64bit
рдкрд╛рдпрдерди 3.6.1 |рдПрдирд╛рдХреЛрдВрдбрд╛ рдХрд╕реНрдЯрдо (x86_64)| (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 11 рдордИ 2017, 13:04:09)
[рдЬреАрд╕реАрд╕реА рек.реи.рез рд╕рдВрдЧрдд рдПрдкреНрдкрд▓ рдПрд▓рдПрд▓рд╡реАрдПрдо рем.реж (рдХреНрд▓реИрдВрдЧ-ремрежреж.реж.релрен)]
рдиреНрдпреВрдордкреА 1.13.1
рд╡рд┐рдЬреНрдЮрд╛рдирдкреА 0.19.1
рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди 0.19.0
$conda рд╕реВрдЪреА | рдЧреНрд░реЗрдк рд╕реБрдиреНрди
рдЧрдирдореНрдкреА реж.реи рдкрд┐рдк
рд╕реБрдиреНрди 1.13.1 py36_0
рд╕реБрдиреНрди рез.резрей.рей рдкрд╛рдЗрдк
numpydoc 0.6.0 py36_0
$рдкрд╛рдЗрдк рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ numpy
$conda рд╕реВрдЪреА | рдЧреНрд░реЗрдк рд╕реБрдиреНрди
рдЧрдирдореНрдкреА реж.реи рдкрд┐рдк
рд╕реБрдиреНрди 1.13.1 py36_0
numpydoc 0.6.0 py36_0
$conda numpy -f рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ // рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ
$conda рд╕реВрдЪреА | рдЧреНрд░реЗрдк рд╕реБрдиреНрди
рдЧрдирдореНрдкреА реж.реи рдкрд┐рдк
рд╕реБрдиреНрди 1.13.1 py36_0
numpydoc 0.6.0 py36_0
рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред
@paulaceccon рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ
https://stackoverflow.com/questions/36533134/cant-get-attribute-abc-on-module-main-from-abc-h-py
рдпрджрд┐ рдЖрдк рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрд▓ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ред рдЖрджреЗрд╢ рдХреЛ рдЙрд▓рдЯ рджреЗрдВ рдФрд░ рдпрд╣ рдЕрдм рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдирд╣реАрдВ рдлреЗрдВрдХреЗрдЧрд╛ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдкрдХрд╛ рдХреЛрдб рдЪрд▓рд╛рдПрдЧрд╛:
import multiprocessing
if __name__ == '__main__':
multiprocessing.set_start_method('spawn')
from external import *
from sklearn.datasets import make_classification
X, y = make_classification()
from sklearn.ensemble import RandomForestClassifier
clf_rf_params = {
'n_estimators': [400, 600, 800],
'min_samples_leaf' : [5, 10, 15],
'min_samples_split' : [10, 15, 20],
'criterion': ['gini', 'entropy'],
'class_weight': [{0: 0.51891309, 1: 13.71835531}]
}
from sklearn.model_selection import GridSearchCV
clf_rf = RandomForestClassifier()
grid = GridSearchCV(clf_rf, clf_rf_params, scoring=gini_sklearn, cv=3, verbose=1, n_jobs=-1)
grid.fit(X, y)
print (grid.best_params_)
рдмрд╛рд╣рд░реА.py . рдХреЗ рд╕рд╛рде
import numpy as np
def ginic(actual, pred):
actual = np.asarray(actual) # In case, someone passes Series or list
n = len(actual)
a_s = actual[np.argsort(pred)]
a_c = a_s.cumsum()
giniSum = a_c.sum() / a_s.sum() - (n + 1) / 2.0
return giniSum / n
def gini_normalizedc(a, p):
if p.ndim == 2: # Required for sklearn wrapper
p = p[:,1] # If proba array contains proba for both 0 and 1 classes, just pick class 1
return ginic(a, p) / ginic(a, a)
from sklearn import metrics
gini_sklearn = metrics.make_scorer(gini_normalizedc, True, True)
8 рдХреЛрд░ рдкрд░ рдЪрд▓ рд░рд╣реЗ рдкрд░рд┐рдгрд╛рдо
релрек рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рей рдЧреБрдирд╛ рдлрд┐рдЯрд┐рдВрдЧ, рдХреБрд▓ резремреи рдлрд┐рдЯ
{'рд╡рд░реНрдЧ_рд╡рдЬрди': {0: 0.51891309, 1: 13.71835531}, 'рдорд╛рдирджрдВрдб': 'рдЧрд┐рдиреА', 'min_samples_leaf': 10, 'min_samples_split': 20, 'n_estimators': 400}
рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╣реИ рджреЛрд╕реНрддреЛрдВред рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдХреЛрд░рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЬрдм рдореИрдВ n_jobs рдХреЛ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЪрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИред рдЬрдм рдореИрдВ n_jobs рдмрд┐рд▓реНрдХреБрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рдпрд╣ рдЬрдо рдЬрд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ https://stackoverflow.com/help/mcve рдкрдврд╝реЗрдВред
рдЕрднреА рднреА рдПрдХ рд╣реА рдирдореВрдирд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред
рд╡рд┐рдВрдбреЛрдЬрд╝-10.0.15063-SP0
рдкрд╛рдпрдерди 3.6.4 |рдПрдирд╛рдХреЛрдВрдбрд╛ рдХрд╕реНрдЯрдо (64-рдмрд┐рдЯ)| (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рдЬрдирд╡рд░реА резрем 2018, резреж:реиреи:рейреи) [рдПрдордПрд╕рд╕реА v.резрепрежреж ремрек рдмрд┐рдЯ (рдПрдПрдордбреАремрек)]
рдиреНрдпреВрдордкреА 1.14.1
рд╡рд┐рдЬреНрдЮрд╛рдирдкреА 1.0.0
рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди 0.19.1
рдХреНрдпрд╛ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ https://stackoverflow.com/help/mcve рдкрдврд╝реЗрдВред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬрд╝ рдореБрджреНрджреЗ рдореЗрдВ рдпрд╣ рд╡рд╣реА рдкреБрд░рд╛рдиреА рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╣реИред рд╣рдорд╛рд░реЗ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рджреЗрдЦреЗрдВ
рдореИрдВрдиреЗ рдереЙрдореНрдмрд░реНрдЧ1 рдХреЗ https://github.com/scikit-learn/scikit-learn/issues/2889#issuecomment -337985212 рдореЗрдВ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред
рдУрдПрд╕: рд╡рд┐рдВрдбреЛрдЬ 10 x64 10.0.16299.309
рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ: WinPython-64bit-3.6.1
рд╕реБрдиреНрди (1.14.2)
рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди (0.19.1)
scipy (1.0.0)
рдЗрд╕рдиреЗ рдЬреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдФрд░ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред
рд╣рд╛рдп, рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдирдпрд╛ рдЦреЛрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬрд┐рд╕рд╕реЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рдзрд╛рдЧрд╛ рд╣реЛ рд╕рдХреЗред
-рдореИрдХ рдУрдПрд╕
-рдПрдирд╛рдХреЛрдВрдбрд╛
-рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди 0.19.1
-рд╕реНрдХрд┐рдкреА 1.0.1
-рд╕реБрдиреНрди 1.14.2
# MLP for Pima Indians Dataset with grid search via sklearn
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV
import numpy
# Function to create model, required for KerasClassifier
def create_model(optimizer='rmsprop', init='glorot_uniform'):
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, kernel_initializer=init, activation='relu'))
model.add(Dense(8, kernel_initializer=init, activation='relu'))
model.add(Dense(1, kernel_initializer=init, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])
return model
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# create model
model = KerasClassifier(build_fn=create_model, verbose=0)
# grid search epochs, batch size and optimizer
optimizers = ['rmsprop', 'adam']
init = ['glorot_uniform', 'normal', 'uniform']
epochs = [50, 100, 150]
batches = [5, 10, 20]
param_grid = dict(optimizer=optimizers, epochs=epochs, batch_size=batches, init=init)
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid_result = grid.fit(X, Y)
# summarize results
print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))
means = grid_result.cv_results_['mean_test_score']
stds = grid_result.cv_results_['std_test_score']
params = grid_result.cv_results_['params']
for mean, stdev, param in zip(means, stds, params):
print("%f (%f) with: %r" % (mean, stdev, param))
рдХреЛрдб рдПрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рд╣реИ: https://machinelearningmastery.com/use-keras-deep-learning-models-scikit-learn-python/
рдореИрдВрдиреЗ n_jobs рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ 1, -1 рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдХреЛрдИ рд╕рдВрдХреЗрдд?
рдпрд╣ рдЪрд▓рддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЖрдпрд╛рдд рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдЧрд░ рдХрдерди рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдореИрдВ рдХреЗрд░рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдирд╣реАрдВ рд╣реИ
import multiprocessing
if __name__ == '__main__':
# MLP for Pima Indians Dataset with grid search via sklearn
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV
import numpy
# Function to create model, required for KerasClassifier
def create_model(optimizer='rmsprop', init='glorot_uniform'):
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, kernel_initializer=init, activation='relu'))
model.add(Dense(8, kernel_initializer=init, activation='relu'))
model.add(Dense(1, kernel_initializer=init, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])
return model
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# create model
model = KerasClassifier(build_fn=create_model, verbose=0)
# grid search epochs, batch size and optimizer
optimizers = ['rmsprop', 'adam']
init = ['glorot_uniform', 'normal', 'uniform']
epochs = [5]
batches = [5, 10, 20]
param_grid = dict(optimizer=optimizers, epochs=epochs, batch_size=batches, init=init)
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=12, verbose=1)
grid_result = grid.fit(X, Y)
# summarize results
print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))
means = grid_result.cv_results_['mean_test_score']
stds = grid_result.cv_results_['std_test_score']
params = grid_result.cv_results_['params']
for mean, stdev, param in zip(means, stds, params):
print("%f (%f) with: %r" % (mean, stdev, param))
рд╕рд░реНрд╡реЛрддреНрддрдо: реж.ремренрелренреорез {'batch_size': 5, 'epochs': 5, 'init': 'glorot_uniform', 'optimizer': 'adam'} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░
реж.ремреирезрежрепрек (реж.режрейремреиреирел) рдЗрд╕рдХреЗ рд╕рд╛рде: {'рдмреИрдЪ_рд╕рд╛рдЗрдЬ': 5, 'рдПрдкреЛрдЪ': 5, 'рдЗрдирд┐рдЯ': 'рдЧреНрд▓реЛрд░реЛрдЯ_рдпреВрдирд┐рдлреЙрд░реНрдо', 'рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░': 'рдЖрд░рдПрдордПрд╕рдкреНрд░реЙрдк'}
реж.ремренрелренреорез (реж.режрежремрейренреп) рдХреЗ рд╕рд╛рде: {'рдмреИрдЪ_рд╕рд╛рдЗрдЬрд╝': 5, 'рдпреБрдЧ': 5, 'рдЗрдирд┐рдЯ': 'рдЧреНрд▓реЛрд░реЛрдЯ_рдпреВрдирд┐рдлрд╝реЙрд░реНрдо', 'рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░': 'рдПрдбрдо'}
...
реж.ремрелрезрежрекреи (реж.режреирелренреореж) рдХреЗ рд╕рд╛рде: {'рдмреИрдЪ_рд╕рд╛рдЗрдЬрд╝': 20, 'рдпреБрдЧ': 5, 'рдЗрдирд┐рдЯ': 'рдпреВрдирд┐рдлрд╝реЙрд░реНрдо', 'рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░': 'рдПрдбрдо'}
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА
sys 3.6.4 |рдПрдирд╛рдХреЛрдВрдбрд╛ рдХрд╕реНрдЯрдо (64-рдмрд┐рдЯ)| (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рдЬрдирд╡рд░реА резрем 2018, резреи:режрек:рейрей)
[рдЬреАрд╕реАрд╕реА 4.2.1 рд╕рдВрдЧрдд рдмрдЬрдирд╛ 4.0.1 (рдЯреИрдЧ/RELEASE_401/рдЕрдВрддрд┐рдо)]
рд╕реБрдиреНрди 1.14.2
рдкрд╛рдВрдбрд╛ 0.22.0
рд╕реНрдХреЗрд▓реЗрд░ 0.19.1
рдорд╢рд╛рд▓ 0.4.0a0+9692519
рдЖрдИрдкреАрдерди 6.2.1
рдХреЗрд░рд╕ 2.1.5
рдХрдВрдкрд╛рдЗрд▓рд░: рдЬреАрд╕реАрд╕реА 4.2.1 рд╕рдВрдЧрдд рдХреНрд▓реИрдВрдЧ 4.0.1 (рдЯреИрдЧ/RELEASE_401/рдлрд╛рдЗрдирд▓)
рдкреНрд░рдгрд╛рд▓реА: рдбрд╛рд░реНрд╡рд┐рди
рд░рд┐рд▓реАрдЬ: 17.5.0
рдорд╢реАрди: x86_64
рдкреНрд░реЛрд╕реЗрд╕рд░: i386
рд╕реАрдкреАрдпреВ рдХреЛрд░: 24
рджреБрднрд╛рд╖рд┐рдпрд╛: 64 рдмрд┐рдЯ
рдзрдиреНрдпрд╡рд╛рдж @ рдереЙрдореНрдмрд░реНрдЧрез , рд▓реЗрдХрд┐рди рдЬреЛрдбрд╝
import multiprocessing
if __name__ == '__main__':
рдХреЛрдИ рд╕рд╣рд╛рдпрддрд╛ рдирд╣реАрдВ рдХреАред рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╡рд╣реА рд╣реИ
GridsearchCV
рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕реНрдХреЛрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореЗрд░реА рдорд╢реАрди рдкрд░ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдЕрдЬрдЧрд░ 3.6.4,
рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди 0.19.1,
рд╡рд┐рдВрдбреЛрдЬ 10ред,
рд╕реАрдкреАрдпреВ рдХреЛрд░: 24
@byrony рдХреНрдпрд╛ рдЖрдк рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдкрдиреЗ if __name__ == "__main__"
?
рдореИрдВрдиреЗ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ n_jobs=-1
рдпрд╛ n_jobs=8
рдХреЛ GridsearchCV
рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреЛрд░рд░ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрдИ рдмрд╛рд░ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИред
рдпрд╣рд╛рдВ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛:
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import MinMaxScaler
from sklearn.decomposition import PCA
from sklearn.utils import shuffle
from sklearn.neural_network import MLPClassifier
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
def main():
df = pd.read_csv('../csvs/my_data.csv', nrows=4000000)
X = np.array(list(map(lambda a: np.fromstring(a[1:-1] , sep=','), df['X'])))
y = np.array(list(map(lambda a: np.fromstring(a[1:-1] , sep=','), df['y'])))
scalerX = MinMaxScaler()
scalerY = MinMaxScaler()
X = scalerX.fit_transform(X)
y = scalerY.fit_transform(y)
grid_params = {
'beta_1': [ .1, .2, .3, .4, .5, .6, .7, .8, .9 ],
'activation': ['identity', 'logistic', 'tanh', 'relu'],
'learning_rate_init': [0.01, 0.001, 0.0001]
}
estimator = MLPClassifier(random_state=1,
max_iter=1000,
verbose=10,
early_stopping=True)
gs = GridSearchCV(estimator,
grid_params,
cv=5,
verbose=10,
return_train_score=True,
n_jobs=8)
X, y = shuffle(X, y, random_state=0)
y = y.astype(np.int16)
gs.fit(X, y.ravel())
print("GridSearchCV Report \n\n")
print("best_estimator_ {}".format(gs.best_estimator_))
print("best_score_ {}".format(gs.best_score_))
print("best_params_ {}".format(gs.best_params_))
print("best_index_ {}".format(gs.best_index_))
print("scorer_ {}".format(gs.scorer_))
print("n_splits_ {}".format(gs.n_splits_))
print("Exporting")
results = pd.DataFrame(data=gs.cv_results_)
results.to_csv('../csvs/gs_results.csv')
if __name__ == '__main__':
main()
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрдбрд╝рд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ 2 рджрд┐рдиреЛрдВ рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд░рд╣рддреА рд╣реИ рд▓реЗрдХрд┐рди рд░реИрдо рдФрд░ рд╕реНрд╡реИрдк рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рднреА рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ)ред
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!
@amueller рдореИрдВрдиреЗ if __name__ == "__main__"
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдиреАрдЪреЗ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм n_jobs=1
def neg_mape(true, pred):
true, pred = np.array(true)+0.01, np.array(pred)
return -1*np.mean(np.absolute((true - pred)/true))
xgb_test1 = XGBRegressor(
#learning_rate =0.1,
n_estimators=150,
max_depth=3,
min_child_weight=1,
gamma=0,
subsample=0.8,
colsample_bytree=0.8,
objective= 'reg:linear',
nthread=4,
scale_pos_weight=1,
seed=123,
)
param_test1 = {
'learning_rate':[0.01, 0.05, 0.1, 0.2, 0.3],
}
gsearch1 = GridSearchCV(estimator = xgb_test1, param_grid = param_test1, scoring=neg_mape, n_jobs=4, cv = 5)
рдЖрдк XGBoost рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ if __name__
рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдорджрдж рдорд┐рд▓рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВ?
рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрднреА рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИред
@ Pazitos10 рдХреНрдпрд╛ рдЖрдк рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдбреЗрдЯрд╛ рдФрд░/рдпрд╛ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдФрд░ рдХрдо рд╕рдордп рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
@amueller рдареАрдХ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ 500k рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде
@amueller , 50k рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛ рд░рд╣реА рд╣реИ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореЗрд░рд╛ рдорддрд▓рдм 50k 500k рдирд╣реАрдВ рдерд╛):
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрд░реЗ рдкреВрд░реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд╣реЛрдВрдЧреЗ рдпрд╛ рдирд╣реАрдВред рдХреЛрдИ рд╕рд▓рд╛рд╣?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд░рд╛рдо рд╕реЗ рдмрд╛рд╣рд░ рднрд╛рдЧ рд░рд╣реЗ рд╣реИрдВред рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЗрд░рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдпрд╣ рд╕рдВрднрд╡рддрдГ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдЬрд╛рд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИред
@amueller рдУрд╣, рдареАрдХ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЗрд░рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж!
рдЗрд╕рдХрд╛ рдХрд╕реНрдЯрдо рд╕реНрдХреЛрд░рд░ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдкрд╛рдпрдерди рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ: рдЖрдкрдХреЛ
n_jobs=-1
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЛif __name__ == '__main__'
рдмреНрд▓реЙрдХ рдореЗрдВ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЖрдкрдХреЛ рдлреНрд░реАрдЬ/рдХреНрд░реИрд╢ рдорд┐рд▓реЗрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдХрд╣реАрдВ рдкреНрд░рдореБрдЦ рд░реВрдк рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░реАрдбрдореЗ рдореЗрдВ?
рдХреНрдпрд╛ рдпрд╣ рд╢рд╛рдпрдж рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдХрд┐ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП?
рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлреАрдб рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://docs.python.org/2/library/multiprocessing.html#windows
рдФрд░ рдпрд╣рд╛рдВ 3.6 рдХреЗ рд▓рд┐рдП: https://docs.python.org/3.6/library/multiprocessing.html#windows
@PGTBoos рдпрд╣ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди 0.20.0 . рдореЗрдВ рддрдп рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рдо, рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдореБрджреНрджреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╢рд╛рдпрдж @GaelVaroquaux рдпрд╛ @ogrisel рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдиреЛрдЯрдмреБрдХ
__name__ == "__main__"
редрдореАрдЯреНрд░рд┐рдХ рдХреЛ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдФрд░ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреЗрдЧрд╛ред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ GridSearchCV рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬрд╝ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ, IPython рдиреЛрдЯрдмреБрдХ рдФрд░ рдЬреЙрдмрд▓рд┐рдм рдХреЗ рдмреАрдЪ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддрдЪреАрдд рд╣реИред