python LIBLINEARのパラメータ(成本,偏见)のグリッドサーチを行うスクリプト。ソルバーも复数から最适なものを选択できる。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python LIBLINEARのパラメータ(成本,偏见)のグリッドサーチを行うスクリプト。ソルバーも复数から最适なものを选択できる。相关的知识,希望对你有一定的参考价值。

#! /usr/bin/python
# -*- coding: utf-8 -*-

###############################################################################
# LIBLINEARのパラメータのグリッドサーチを行い,Accuracyが高かったパラメータTop10を表示.
# 内部でLIBSVMに付属されているgrid.pyを呼び出しているので,用意した上でディレクトリの
# パスを37行目のGRID_DIRPATHに記述しておくこと.
# (grid.pyの使い方は付属のREADMEを参照するか,ググってください)
#
# 次のコマンドで実行できる.
# 	$ python grid_with_bias_and_solver.py [options]
# 		[options]
# 		-g grid_option: grid.pyに渡すoption
# 		-i file: 学習データのファイル.
#       -s solver: 利用するsolverの番号.カンマ区切りで複数指定可.(例:1,3,10)
#       -b bias: 走査するbiasの範囲.「begin,end,step」という形式で書く.
#
# biasに関しては,例えば 0.0001,10,1 と入力すると,0.0001, 0.001, 0.01, ..., 10
# と走査する.
#
# 入力ファイルのフォーマットはLIBSVMの学習データのフォーマットと同様.
#
# 上記オプションのデフォルト値をこのファイル内に指定しておくことも可能.
#
# LIBSVM
# http://www.csie.ntu.edu.tw/~cjlin/libsvm/
# LIBLINEAR
# http://www.csie.ntu.edu.tw/~cjlin/liblinear/
##############################################################################

import argparse
import os
import sys
import operator

# grid.pyが存在するディレクトリのパス
GRID_DIRPATH = ''
# デフォルトの学習データ
INPUT_PATH = ''
# デフォルトのgrid.pyに渡すoption
GRID_OPTION = '-log2c -10,10,1 -log2g null -svmtrain train'
# デフォルトのソルバー
SOLVER = '0,6,7'
# デフォルトのバイアス
BIAS = '0.0001,10,1'


def exec_argparse():
    '''
    引数をパースした結果を連想配列で返す.
    '''
    parser = argparse.ArgumentParser(description='')
    parser.add_argument(
        '-g', '--grid', help='grid.pyに渡すoption.', default=GRID_OPTION)
    parser.add_argument(
        '-i', '--input_file', help='学習データのファイル.', default=INPUT_PATH)
    parser.add_argument(
        '-s', '--solver', help='利用するsolverの番号.カンマ区切りで複数指定可.', default=SOLVER)
    parser.add_argument(
        '-b', '--bias', help='走査するbiasの範囲.「begin,end,step」という形式で書く.', default=BIAS)

    return parser.parse_args()


def grid_with_bias_and_solver(grid_option, input_file, solvers, bias):
    '''
    ソルバー,バイアスも含めたグリッドサーチを行う.
    トップ10を標準出力に表示.
    また,ソート済みの結果リストを返す.
    '''
    # grid.py読み込み
    sys.path.append(GRID_DIRPATH)
    import grid

    # ソルバー,バイアス読み込み
    solvers = solvers.split(',')
    bias = bias.split(',')
    b_min = float(bias[0])
    b_max = float(bias[1])

    # 結果格納配列
    results = []

    # ソルバー毎にgrid.pyを回す
    for solver in solvers:
        # bias毎にgrid.pyを回す
        b = b_min
        while b < b_max:
            accuracy, param = grid.find_parameters(
                input_file, grid_option + ' -s ' + solver + ' -B ' + str(b))
            results.append((solver, b, param['c'], accuracy))
            b *= 10

    # Accuracyでソート
    results = sorted(results, key=operator.itemgetter(3), reverse=True)

    # トップ10を表示
    print '======= Results (Top10) ======='
    print '(solver, bias, cost, accuracy)'
    for i in range(0, 9):
        print results[i]

    return results


def main():
    # 引数をパースしてargsに格納
    args = exec_argparse()

    # グリッドサーチ
    grid_with_bias_and_solver(
        args.grid, args.input_file, args.solver, args.bias)


if __name__ == "__main__":
    main()

以上是关于python LIBLINEARのパラメータ(成本,偏见)のグリッドサーチを行うスクリプト。ソルバーも复数から最适なものを选択できる。的主要内容,如果未能解决你的问题,请参考以下文章

python GET·POSTパラメータ取得2

python GET·POSTパラメータ取得1

php パラメーターで分岐

json パラメータ付きアンカースクロール判别

その他トランザクションコード

html 谷歌検索にキーワードをパラメータで渡す