TypeError при отладке scikit-learn GridSearchCV в коде Visual Studio - PullRequest
0 голосов
/ 18 марта 2020

При попытке отладки кода python в Visual Studio появляется следующая ошибка. Удивительно, но код работает нормально, когда я запускаю код без отладки. Любые подсказки?

TypeError: необязательный метод new_CreateProcess () должен вызываться с экземпляром _winapi в качестве первого аргумента (вместо этого получен экземпляр str) PS C: \ GitHub \ Project>

Вот кусок кода, вызывающий ошибку. Это стандартная инициализация поиска по сетке в scikit-learn. Я не уверен, что мне не хватает. Я использую Python 2.7.

from sklearn.model_selection import GridSearchCV
clf = GridSearchCV(estimator=model, param_grid=p_grid, scoring='roc_auc', n_jobs=4, cv=inner_cv, refit=True, return_train_score=True)
clf.fit(x, y)

В строке clf.fit () происходит ошибка. Вот полная трассировка для вышеуказанного кода:

import pandas as pd
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import cross_validate
from sklearn.preprocessing import StandardScaler

df = pd.read_csv([some file])
x = df.iloc[:,3:-1]
y = df.loc[:, 'Label']
colNames = x.columns

scaler = MinMaxScaler()
for i in range(2,x.shape[1]):
   columnName = x.columns[i]
   x[columnName] = scaler.fit_transform(x[columnName].values.reshape(-1,1))

p_grid = {'n_estimators' : list(range(10,101,10)),
         'max_features' : list(range(6,30,5))}
model = RandomForestClassifier()

numTrials = 30

non_nested_scores = np.zeros(numTrials)
nested_scores = []
scores = {'auc': 'roc_auc', 'f1': 'f1', 'precision':'precision', 'recall':'recall', 'accuracy':'accuracy'}
resultsLog = pd.DataFrame(columns=['trial','auc','f1','precision','recall','accuracy'])
for i in range(numTrials):

    n = 5
    inner_cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=i)
    outer_cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=i)

    # Non_nested parameter search and scoring
    clf = GridSearchCV(estimator=model, param_grid=p_grid, scoring='roc_auc', n_jobs=-1, cv=inner_cv, refit=True, return_train_score=True)
    clf = clf.fit(x,y)
    non_nested_scores[i] = clf.best_score_

    # Nested CV with parameter optimization
    nested_score = cross_validate(clf,
                                   X=x,
                                   y=y,
                                   scoring=scores,
                                   cv=outer_cv,
                                   n_jobs=-1)
m1 = np.mean(nested_score['test_auc'])
m2 = np.mean(nested_score['test_f1'])
m3 = np.mean(nested_score['test_precision'])
m4 = np.mean(nested_score['test_recall'])
m5 = np.mean(nested_score['test_accuracy'])
newRow = pd.DataFrame({'trial':[i], 'auc':[m1], 'f1':[m2], 'precision':[m3], 'recall':[m4], 'accuracy':[m5]})
resultsLog = pd.concat([resultsLog, newRow], ignore_index=True)
nested_scores.append(nested_score)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...