#python #python-3.x #scikit-learn
#python #python-3.x #scikit-learn
Вопрос:
У меня есть эта функция для прогнозирования результата для LinearSVM:
def predict(self, train_file: str, test_file: str, lower_case: bool) -> pd.DataFrame:
"Train model using sklearn pipeline"
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn import svm
from sklearn import preprocessing
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import LinearSVC
train_df = self.read_data(train_file, lower_case)
test_df = self.read_data(test_file, lower_case)
parameters = {
'vect__ngram_range': [(1, 1), (1, 2)],
'tfidf__use_idf': (True, False),
'clf__alpha': [0.0001, 0.001, 0.01, 1, 10, 100],
}
lr = SGDClassifier()
print(lr.get_params().keys())
gs_clf = GridSearchCV(self.pipeline, parameters, cv=5, n_jobs=-1)
gs_clf = gs_clf.fit(train_df['text'], train_df['truth'])
print(gs_clf.best_score_)
for param_name in sorted(parameters.keys()):
print("%s: %r" % (param_name, gs_clf.best_params_[param_name]))
#estimator_svm.best_score_
learner = self.pipeline.fit(train_df['text'], train_df['truth'])
# Fit the learner to the test data
test_df = self.read_data(test_file, lower_case)
test_df['pred'] = learner.predict(test_df['text'])
return test_df
Но когда я печатаю его, чтобы получить ключи, здесь, print(lr.get_params().keys())
, выводится, что имя не определено. Я хочу знать, как я должен называть другие параметры, чтобы также их протестировать.
Ответ №1:
Предполагая, что ваше сообщение об ошибке
NameError: name 'SGDClassifier' is not defined
В вашем коде вы должны добавить недостающий импорт для SGDClassifier:
from sklearn.linear_model import SGDClassifier
Тогда print(lr.get_params().keys())
должно сработать и вернуть следующий вывод:
dict_keys(['alpha', 'average', 'class_weight', 'early_stopping', 'epsilon', 'eta0', 'fit_intercept', 'l1_ratio', 'learning_rate', 'loss', 'max_iter', 'n_iter_no_change', 'n_jobs', 'penalty', 'power_t', 'random_state', 'shuffle', 'tol', 'validation_fraction', 'verbose', 'warm_start'])
Комментарии:
1. как получилось, что некоторых параметров нет в списке, но я все еще могу использовать?
2. Какие из них вы имеете в виду?