# python svm超参数_grid search 超参数寻优

http://scikit-learn.org/stable/modules/grid_search.html

1. 超参数寻优方法 gridsearchCV 和  RandomizedSearchCV

2. 参数寻优的技巧进阶

2.1. Specifying an objective metric

By default, parameter search uses the score function of the estimator to evaluate a parameter setting. These are thesklearn.metrics.accuracy_score for classification and sklearn.metrics.r2_score for regression.

2.2 Specifying multiple metrics for evaluation

Multimetric scoring can either be specified as a list of strings of predefined scores names or a dict mapping the scorer name to the scorer function and/or the predefined scorer name(s).

http://scikit-learn.org/stable/modules/model_evaluation.html#multimetric-scoring

2.3 Composite estimators and parameter spaces  。pipeline 方法

http://scikit-learn.org/stable/modules/pipeline.html#pipeline

>>> from sklearn.pipeline import Pipeline

>>> from sklearn.svm import SVC

>>> from sklearn.decomposition import PCA

>>> estimators = [('reduce_dim', PCA()), ('clf', SVC())]

>>> pipe = Pipeline(estimators)

>>> pipe # check pipe

Pipeline(memory=None,

steps=[('reduce_dim', PCA(copy=True,...)),

('clf', SVC(C=1.0,...))])

>>> from sklearn.pipeline import make_pipeline

>>> from sklearn.naive_bayes import MultinomialNB

>>> from sklearn.preprocessing import Binarizer

>>> make_pipeline(Binarizer(), MultinomialNB())

Pipeline(memory=None,

steps=[('binarizer', Binarizer(copy=True, threshold=0.0)),

('multinomialnb', MultinomialNB(alpha=1.0,

class_prior=None,

fit_prior=True))])

>>> pipe.set_params(clf__C=10) # 给clf 设定参数

>>> from sklearn.model_selection import GridSearchCV

>>> param_grid = dict(reduce_dim__n_components=[2, 5, 10],

... clf__C=[0.1, 10, 100])

>>> grid_search = GridSearchCV(pipe, param_grid=param_grid)

#!/usr/bin/env python2

# -*- coding: utf-8 -*-

"""

Created on Tue Sep 5 10:22:07 2017

@author: xinpingbao

"""

import numpy as np

from sklearn import datasets

from sklearn.linear_model import Ridge

from sklearn.model_selection import GridSearchCV

from sklearn.metrics import make_scorer

X = dataset.data

y = dataset.target

# prepare a range of alpha values to test

alphas = np.array([1,0.1,0.01,0.001,0.0001,0])

# create and fit a ridge regression model, testing each alpha

model = Ridge()

grid = GridSearchCV(estimator=model, param_grid=dict(alpha=alphas)) # defaulting: sklearn.metrics.r2_score

# grid = GridSearchCV(estimator=model, param_grid=dict(alpha=alphas), scoring = 'metrics.mean_squared_error') # defaulting: sklearn.metrics.r2_score

grid.fit(X, y)

print(grid)

# summarize the results of the grid search

print(grid.best_score_)

print(grid.best_estimator_.alpha)

############################ 自定义error score函数 ############################

model = Ridge()

alphas = np.array([1,0.1,0.01,0.001,0.0001,0])

param_grid1 = dict(alpha=alphas)

def my_mse_error(real, pred):

w_high = 1.0

w_low = 1.0

weight = w_high * (real - pred < 0.0) + w_low * (real - pred >= 0.0)

mse = (np.sum((real - pred)**2 * weight) / float(len(real)))

return mse

def my_r2_score(y_true, y_pred):

nume = sum((y_true - y_pred) ** 2)

deno= sum((y_true - np.average(y_true, axis=0)) ** 2)

r2_score = 1 - (nume/deno)

return r2_score

error_score1 = make_scorer(my_mse_error, greater_is_better=False) # error less is better.

error_score2 = make_scorer(my_r2_score, greater_is_better=True) # error less is better.

#custom_scoring = {'weighted_MSE' : salesError}

grid_search = GridSearchCV(model, param_grid = param_grid1, scoring= error_score2, n_jobs=-1) #neg_mean_absolute_error

grid_result = grid_search.fit(X,y)

# summarize results

print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_)) # learning_rate = 0.1

paper 36 ：&lbrack;教程&rsqb; 基于GridSearch的svm参数寻优

【深度学习篇】--神经网络中的调优一，超参数调优和Early&lowbar;Stopping

1.评价指标的局限性 问题1 准确性的局限性 准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷.比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率.所以,当 ...

Spark2&period;0机器学习系列之2：基于Pipeline、交叉验证、ParamMap的模型选择和超参数调优

Spark中的CrossValidation Spark中采用是k折交叉验证 (k-fold cross validation).举个例子,例如10折交叉验证(10-fold cross valida ...

【转载】AutoML--超参数调优之Bayesian Optimization

&lbrack;DeeplearningAI笔记&rsqb;02&lowbar;3&period;1-3&period;2超参数搜索技巧与对数标尺

Hyperparameter search 超参数搜索 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1 调试处理 需要调节的参数 级别一:$$\alpha$$学习率是最重要的需要调节的 ...

Deep Learning&period;ai学习笔记&lowbar;第二门课&lowbar;改善深层神经网络：超参数调试、正则化以及优化

DeepMind提出新型超参数最优化方法：性能超越手动调参和贝叶斯优化

DeepMind提出新型超参数最优化方法:性能超越手动调参和贝叶斯优化 2017年11月29日 06:40:37 机器之心V 阅读数 2183   版权声明:本文为博主原创文章,遵循CC 4.0 BY ...

OpenStack云计算快速入门之二：OpenStack安装与配置

Codeforces Round &num;136 &lpar;Div&period; 2&rpar;

A. Little Elephant and Function 逆推. B. Little Elephant and Numbers $$O(\sqrt n)$$枚举约数. C. Little Ele ...

Android 怎么使用Bitmap&plus;Canvas 自适应屏幕

Python基础：数据类型-字符串(7)

1.字符串基本操作 字符串是由字符组成的一串字符序列,字符串是有顺序的,从左到右,索引从0开始,依次递增. Python中字符串类型:str. Python中字符串的三种表示方式: (1)普通字符串: ...

Python代码分行问题

&lbrack;UE4&rsqb;name slot一个种应用技巧

linux 命令行选项

Linux 基础教程 31-tcpdump命令-3

• 0
点赞
• 0
收藏
• 打赏
• 0
评论
11-08 227
01-14 1090
05-01 2244
03-28 2万+
03-22
01-26 836
11-27 704
01-12 756

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

¥2 ¥4 ¥6 ¥10 ¥20

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