Python进行参数调优GridSearchCV和RandomizedSearchCV

# -*- coding: utf-8 -*-
"""
Created on Wed Sep  6 14:30:24 2017

@author: 飘的心
"""

from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn import metrics

data=load_digits()
x=data.data
y=data.target
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=0,test_size=0.25,
                                              stratify=y)
#采用暴力搜索,所有参数进行组合,然后选择最好的参数
tuned_parameters=[{'penalty':['l1','l2'],
                   'C':[0.01,0.05,0.1,0.5,1,5,10,50,100],
                    'solver':['liblinear'],
                    'multi_class':['ovr']},
                {'penalty':['l2'],
                 'C':[0.01,0.05,0.1,0.5,1,5,10,50,100],
                'solver':['lbfgs'],
                'multi_class':['ovr','multinomial']}]

clf=GridSearchCV(LogisticRegression(tol=1e-6),tuned_parameters,cv=10)
clf.fit(x_train,y_train)
print('Best parameters set found:',clf.best_params_)

print(classification_report(y_test,clf.predict(x_test)))
print(metrics.confusion_matrix(y_test,clf.predict(x_test)))


from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import RandomizedSearchCV
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
import scipy

digits=load_digits()
x=digits.data
y=digits.target

x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=0,test_size=0.25,
                                               stratify=y)
#采用随机搜索,给参数一个范围,然后系统随机选择参数,进行检验,然后选择最好的
tuned_parameters={'C':scipy.stats.expon(scale=100),
                  'multi_class':['ovr','multinomial']}
clf=RandomizedSearchCV(LogisticRegression(penalty='l2',solver='lbfgs',tol=1e-6),
                   tuned_parameters,cv=10,scoring='accuracy',n_iter=100)

clf.fit(x_train,y_train)
print('best parameters:',clf.best_estimator_)
print(classification_report(y_test,clf.predict(x_test)))
print(metrics.confusion_matrix(y_test,clf.predict(x_test)))

你可能感兴趣的:(机器学习,Python)