逻辑回归网格搜索调参代码
时间: 2023-09-12 16:10:03 浏览: 165
以下是逻辑回归网格搜索调参的代码,具体的参数范围需要根据实际情况进行调整:
```python
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import accuracy_score
# 定义逻辑回归模型
lr = LogisticRegression()
# 定义参数范围
param_grid = {
'penalty': ['l1', 'l2'],
'C': [0.01, 0.1, 1, 10, 100]
}
# 定义网格搜索
grid_search = GridSearchCV(lr, param_grid=param_grid, cv=5)
# 训练模型
grid_search.fit(X_train, y_train)
# 输出最优参数
print("Best parameters: ", grid_search.best_params_)
# 使用最优参数预测
y_pred = grid_search.predict(X_test)
# 输出准确率
print("Accuracy: ", accuracy_score(y_test, y_pred))
```
在代码中,我们首先定义了逻辑回归模型,然后定义了参数范围,接着使用网格搜索进行调参。训练完成后,输出最优参数和准确率。
相关问题
机器学习用网格搜索对逻辑回归调参写代码
在使用机器学习的逻辑回归模型时,我们可以使用网格搜索来调节超参数,使得模型在验证集上的表现最优。
首先,我们需要准备好超参数的取值范围。在逻辑回归中,常见的超参数包括正则化系数和优化器的参数。
然后,我们可以使用 Python 的网格搜索工具 `GridSearchCV` 来实现网格搜索。首先,我们需要定义一个 `LogisticRegression` 的估计器,并为其指定超参数的取值范围。然后,我们可以使用 `GridSearchCV` 对超参数进行网格搜索。
例如:
```python
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GridSearchCV
# 定义逻辑回归估计器
logistic_regression = LogisticRegression()
# 定义超参数的取值范围
param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100], 'solver': ['lbfgs', 'liblinear', 'sag', 'saga']}
# 使用网格搜索进行调参
grid_search = GridSearchCV(logistic_regression, param_grid, cv=5, scoring='accuracy', return_train_score=True)
# 在训练集上训练模型
grid_search.fit(X_train, y_train)
# 打印最优的超参数
print("Best parameters: {}".format(grid_search.best_params_))
# 打印在验证集上的最优分数
print("Best cross-validation score: {:.2f}".format(grid_search.best_score_))
# 在测试集上评估模型
test_score
逻辑回归模型如何调参,python示例
逻辑回归模型常用的调参方法有网格搜索和随机搜索。
网格搜索是通过指定多个参数的取值范围,对所有可能的参数组合进行尝试,选择效果最好的一组参数。示例代码如下:
```python
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
param_grid = {
'C': [0.001, 0.01, 0.1, 1, 10, 100],
'penalty': ['l1', 'l2']
}
grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5)
grid_search.fit(X, y)
print("Best parameters: ", grid_search.best_params_)
print("Best score: ", grid_search.best_score_)
```
随机搜索是随机选择指定参数范围内的参数组合进行尝试,可以通过设置迭代次数或时间来控制搜索的范围。示例代码如下:
```python
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import RandomizedSearchCV
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
param_dist = {
'C': [0.001, 0.01, 0.1, 1, 10, 100],
'penalty': ['l1', 'l2']
}
random_search = RandomizedSearchCV(LogisticRegression(), param_distributions=param_dist, n_iter=10, cv=5)
random_search.fit(X, y)
print("Best parameters: ", random_search.best_params_)
print("Best score: ", random_search.best_score_)
```
以上代码示例中,使用了 scikit-learn 库中的 GridSearchCV 和 RandomizedSearchCV 来进行模型的参数调优。其中 GridSearchCV 是通过指定参数网格进行穷举搜索,随机搜索则是通过指定参数的分布范围进行随机采样。
阅读全文