逻辑回归网格搜索调参代码
时间: 2023-09-12 12:10:03 浏览: 180
以下是逻辑回归网格搜索调参的代码,具体的参数范围需要根据实际情况进行调整:
```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))
```
在代码中,我们首先定义了逻辑回归模型,然后定义了参数范围,接着使用网格搜索进行调参。训练完成后,输出最优参数和准确率。
相关问题
逻辑回归和神经网络的交叉验证和网格搜索调参代码
逻辑回归和神经网络都常用交叉验证(Cross-validation)来进行模型评估和超参数调整。网格搜索(Grid Search)是一种常见的调参策略,它会在给定的参数范围内生成所有可能的组合,并通过交叉验证选择最优解。
对于逻辑回归:
```python
from sklearn.model_selection import GridSearchCV, cross_val_score
from sklearn.linear_model import LogisticRegression
# 假设我们有一个数据集 X_train, y_train 和一些参数范围
param_grid = {'C': [0.001, 0.01, 0.1, 1, 10], 'penalty': ['l1', 'l2']}
logreg = LogisticRegression()
# 使用GridSearchCV
grid_search = GridSearchCV(logreg, param_grid, cv=5) # 5折交叉验证
grid_search.fit(X_train, y_train)
# 最优参数
best_params = grid_search.best_params_
best_score = grid_search.best_score_
# 可以使用best_estimator_获取最优化的模型
optimized_logreg = grid_search.best_estimator_
# 交叉验证得分
scores = cross_val_score(optimized_logreg, X_train, y_train, cv=5)
```
对于神经网络(例如用Keras):
```python
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
def create_neural_network(optimizer='adam'):
model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=X_train.shape[1]))
model.add(Dense(units=32, activation='relu'))
model.add(Dense(units=1, activation='sigmoid')) # 如果是二分类任务
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])
return model
# 创建KerasClassifier包装器
nn = KerasClassifier(build_fn=create_neural_network, epochs=50, batch_size=32)
# 参数网格
param_grid = {'optimizer': ['SGD', 'RMSprop', 'Adam']}
# 开始网格搜索
grid_search = GridSearchCV(nn, param_grid, cv=5)
grid_search.fit(X_train, y_train)
# 获取最佳参数和模型
best_optimizer = grid_search.best_params_['optimizer']
best_nn = grid_search.best_estimator_
# 交叉验证得分
scores = cross_val_score(best_nn, X_train, y_train, cv=5)
```
机器学习用网格搜索对逻辑回归调参写代码
在使用机器学习的逻辑回归模型时,我们可以使用网格搜索来调节超参数,使得模型在验证集上的表现最优。
首先,我们需要准备好超参数的取值范围。在逻辑回归中,常见的超参数包括正则化系数和优化器的参数。
然后,我们可以使用 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
阅读全文