gpt4 book ai didi

python-3.x - 通过网格搜索调整模型

转载 作者:行者123 更新时间:2023-11-30 09:30:56 25 4
gpt4 key购买 nike

我遇到了一个关于在管道中使用 TfidfVectorizer() 通过网格搜索和文本数据调整参数的示例。据我所知,当我们调用 grid_search.fit(X_train, y_train) 时,它将转换数据,然后按照字典中的描述拟合模型。然而在评估过程中,我对测试数据集有点困惑,因为当我们调用 grid_search.predict(X_test) 时,我不知道 TfidfVectorizer() 是否/(如何)应用于此测试 block 。

谢谢

大卫

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model.logistic import LogisticRegression
from sklearn.grid_search import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.cross_validation import train_test_split
from sklearn.metrics import precision_score, recall_score, accuracy_
score
pipeline = Pipeline([
('vect', TfidfVectorizer(stop_words='english')),
('clf', LogisticRegression())
])
parameters = {
'vect__max_df': (0.25, 0.5, 0.75),
'vect__stop_words': ('english', None),
'vect__max_features': (2500, 5000, 10000, None),
'vect__ngram_range': ((1, 1), (1, 2)),
'vect__use_idf': (True, False),
'vect__norm': ('l1', 'l2'),
'clf__penalty': ('l1', 'l2'),
'clf__C': (0.01, 0.1, 1, 10),
}

if __name__ == "__main__":
grid_search = GridSearchCV(pipeline, parameters, n_jobs=-1,
verbose=1, scoring='accuracy', cv=3)
df = pd.read_csv('data/sms.csv')
X, y, = df['message'], df['label']
X_train, X_test, y_train, y_test = train_test_split(X, y)
grid_search.fit(X_train, y_train)
print 'Best score: %0.3f' % grid_search.best_score_
print 'Best parameters set:'
best_parameters = grid_search.best_estimator_.get_params()
for param_name in sorted(parameters.keys()):
print '\t%s: %r' % (param_name, best_parameters[param_name])
predictions = grid_search.predict(X_test)
print 'Accuracy:', accuracy_score(y_test, predictions)
print 'Precision:', precision_score(y_test, predictions)
print 'Recall:', recall_score(y_test, predictions)

最佳答案

这是 scikit-learn 管道魔法的一个示例。它的工作原理如下:

  1. 首先,您使用 Pipeline 构造函数定义管道的元素 - 所有数据,无论是在训练阶段还是测试(预测)阶段,都将通过所有定义的步骤进行处理- 在本例中通过 TfidfVectorizer,然后输出将传递给 LogisticRegression 模型。
  2. 将定义的管道传递给 GridSearchCV 构造函数允许您使用 fit 方法,该方法不仅执行网格搜索,还可以在内部设置 TfidfVectorizer和 LogisticRegression 到最佳找到的参数,因此稍后运行 predict 会在最佳找到的模型上执行此操作。

您可以在scikit-learn documentation中找到有关创建管道的更多信息.

关于python-3.x - 通过网格搜索调整模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58367139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com