任务3之磨刀霍霍向猪羊

任务3 调参大杀器

利用网格搜索打发+k折交叉验证来调参,一般模型调参基本上都这样用,但是查阅了一下资料,还有很多神仙操作,特此声明,本文仅仅用到了最简答的方法。。。捂脸。
上代码

#调包侠de日常
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn import metrics
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from xgboost import XGBClassifier
from lightgbm import  LGBMClassifier

#数据预处理
data_all = pd.read_csv('data_all.csv')
print('数据的行列',data_all.shape)
X = data_all.drop(['status'],axis=1)
y = data_all['status']
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=2018)
from sklearn import preprocessing
x_scaled = preprocessing.scale(x_train)
x_scaled_test = preprocessing.scale(x_test)

#录入模型
lr = LogisticRegression()
svc = SVC()
clfclf = DecisionTreeClassifier()
rfc = RandomForestClassifier()
gbc = GradientBoostingClassifier()
xgb = XGBClassifier(probability=True)
lgb = LGBMClassifier(probability=True)
#导入本次最终的包
from sklearn.model_selection import GridSearchCV
#开始表演
#lr回归
param_grid = {'C':[0.1,1,2,3],'penalty':['l1','l2']} 
grid=GridSearchCV(estimator=lr,param_grid=param_grid,cv=5,scoring='accuracy')
grid.fit(x_scaled,y_train)
print('网格搜索-最佳度量值:',grid.best_score_)  # 获取最佳度量值,
print('网格搜索-最佳参数:',grid.best_params_)  # 获取最佳度量值时的代定参数的值。是一个字典
print('网格搜索-最佳模型:',grid.best_estimator_)  # 获取最佳度量时的分类器模型

#svm
param_grid = {'C':[1,10,100],'kernel':['linear','sigmoid','rbf']}
grid=GridSearchCV(estimator=svc,param_grid=parameters,cv=5)
grid.fit(x_scaled,y_train)
print('网格搜索-最佳度量值:',grid.best_score_)  # 获取最佳度量值,
print('网格搜索-最佳参数:',grid.best_params_)  # 获取最佳度量值时的代定参数的值。是一个字典
print('网格搜索-最佳模型:',grid.best_estimator_)  # 获取最佳度量时的分类器模型

#Desicion Tree
param_grid =  {'criterion': ['gini', 'entropy'], 'max_depth': [1,2,3,4,5,6], 'splitter': ['best', 'random'],
            'max_features': ['log2', 'sqrt', 'auto']}
grid=GridSearchCV(estimator=clf,param_grid=param_grid,cv=5)
grid.fit(x_scaled,y_train)
print('网格搜索-最佳度量值:',grid.best_score_)  # 获取最佳度量值,
print('网格搜索-最佳参数:',grid.best_params_)  # 获取最佳度量值时的代定参数的值。是一个字典
print('网格搜索-最佳模型:',grid.best_estimator_)  # 获取最佳度量时的分类器模型

#Random Forest
param_grid = {'n_estimators': range(1,200), 'max_features': ['log2', 'sqrt', 'auto']}
grid=GridSearchCV(estimator=rfc,param_grid=param_grid,cv=5)
grid.fit(x_scaled,y_train)
print('网格搜索-最佳度量值:',grid.best_score_)  # 获取最佳度量值,
print('网格搜索-最佳参数:',grid.best_params_)  # 获取最佳度量值时的代定参数的值。是一个字典
print('网格搜索-最佳模型:',grid.best_estimator_)  # 获取最佳度量时的分类器模型

#GBDT
param_grid = {'n_estimators': range(1,100,10),'learning_rate': np.arange(0.1, 1, 0.1)}
grid=GridSearchCV(estimator=gbc,param_grid=param_grid,cv=5)
grid.fit(x_scaled,y_train)
print('网格搜索-最佳度量值:',grid.best_score_)  # 获取最佳度量值,
print('网格搜索-最佳参数:',grid.best_params_)  # 获取最佳度量值时的代定参数的值。是一个字典
print('网格搜索-最佳模型:',grid.best_estimator_)  # 获取最佳度量时的分类器模型

#XGB
param_grid = {'eta': np.arange(0.1, 1, 0.1), 'max_depth': range(1,6,1), 'min_child_weight': range(1,6,1)}
grid=GridSearchCV(estimator=xgb,param_grid=param_grid,cv=5)
grid.fit(x_scaled,y_train)
print('网格搜索-最佳度量值:',grid.best_score_)  # 获取最佳度量值,
print('网格搜索-最佳参数:',grid.best_params_)  # 获取最佳度量值时的代定参数的值。是一个字典
print('网格搜索-最佳模型:',grid.best_estimator_)  # 获取最佳度量时的分类器模型

#LGBM
param_grid = {'learning_rate': np.arange(0.1,0.5,0.1), 'max_depth': range(1,6,1), 'n_estimators':range(30,50,5)}
grid=GridSearchCV(estimator=lgb,param_grid=param_grid,cv=5)
grid.fit(x_scaled,y_train)
print('网格搜索-最佳度量值:',grid.best_score_)  # 获取最佳度量值,
print('网格搜索-最佳参数:',grid.best_params_)  # 获取最佳度量值时的代定参数的值。是一个字典
print('网格搜索-最佳模型:',grid.best_estimator_)  # 获取最佳度量时的分类器模型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值