python机器学习-乳腺癌细胞挖掘(四)

python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制):http://dwz.date/bwey

模型调参
调参是一门黑箱技术,需要经验丰富的机器学习工程师才能做到。幸运的是sklearn有调参的包,入门级学者也可尝试调参。
如果参数不多,可以手动写函数调参,如果参数太多可以用GridSearchCV调参,如果参数多的占用时间太长,可以用randomSizeCV调参,节约调参时间
GridSearchCV
如果参数太多可以用GridSearchCV调参

(1)单参数调参

(2)多参数调参
因为有n_neighbors和weights两个参数,因此诞生了60个结果
因为有两个参数,所以得到最佳模型:weight=distance,n_neighbor=12

RandomSizeSearchCV
randomSizeCV调参类似于GridSearchCV的抽样
如果参数多的占用时间太长,可以用randomSizeCV调参,节约调参时间。
randomSizeCV调参准确率会略低于GridSearchCV,但可以节约大量时间。


randomSizeCV是随机调参方法,精确度没有gridsearchcv高,但可以节约大量时间,其调参代码如下:
# -*- coding: utf-8 -*-
"""
Created on Sat Jun 16 19:54:25 2018
微信公众号:pythonEducation
@author: 231469242@qq.com
"""
from
sklearn.grid_search
import
RandomizedSearchCV
import
matplotlib.pyplot as plt
#交叉验证
from
sklearn.cross_validation
import
cross_val_score
from
sklearn.datasets
import
load_breast_cancer
from
sklearn.neighbors
import
KNeighborsClassifier
#导入数据
cancer
=
load_breast_cancer()
x
=
cancer.data
y
=
cancer.target
#调参knn的邻近指数n
k_range
=
list
(
range
(
1
,
31
))
weight_options
=
[
'uniform'
,
'distance'
]
param_dist
=
dict
(n_neighbors
=
k_range,weights
=
weight_options)
knn
=
KNeighborsClassifier()
#n_iter为随机生成个数
rand
=
RandomizedSearchCV(knn,param_dist,cv
=
10
,scoring
=
'accuracy'
,
n_iter
=
10
,random_state
=
5
)
rand.fit(x,y)
rand.grid_scores_
print
(
'best score:'
,rand.best_score_)
print
(
'best params:'
,rand.best_params_)
模型调参知识为大家讲解到这里,欢迎各位同学报名我的python机器学习生物信息学系列课,网址如下:http://dwz.date/b9vw
