Ejemplo n.º 1
0
        internal void parse_command_line(string[] argv)
        {
            int i;

            // eps: see setting below
            Parameter = new Parameter(SolverType.getById(SolverType.L2R_L2LOSS_SVC_DUAL), 1, Double.PositiveInfinity, 0.1);
            // default values
            Bias = -1;
            cross_validation = false;


            // parse options
            for (i = 0; i < argv.Length; i++) {
                if (argv[i][0] != '-') break;
                if (++i >= argv.Length) exit_with_help();
                switch (argv[i - 1][1]) {
                    case 's':
                        Parameter.solverType = SolverType.getById(Linear.atoi(argv[i]));
                        break;
                    case 'c':
                        Parameter.setC(Linear.atof(argv[i]));
                        break;
                    case 'p':
                        Parameter.setP(Linear.atof(argv[i]));
                        break;
                    case 'e':
                        Parameter.setEps(Linear.atof(argv[i]));
                        break;
                    case 'B':
                        Bias = Linear.atof(argv[i]);
                        break;
                    case 'w':
                        int weightLabel = int.Parse(argv[i - 1].Substring(2));
                        double weight = double.Parse(argv[i]);
                        Parameter.weightLabel = addToArray(Parameter.weightLabel, weightLabel);
                        Parameter.weight = addToArray(Parameter.weight, weight);
                        break;
                    case 'v':
                        cross_validation = true;
                        nr_fold = int.Parse(argv[i]);
                        if (nr_fold < 2) {
                            Console.Error.WriteLine("n-fold cross validation: n must >= 2");
                            exit_with_help();
                        }
                        break;
                    case 'q':
                        i--;
                        Linear.disableDebugOutput();
                        break;
                    default:
                        Console.Error.WriteLine("unknown option");
                        exit_with_help();
                        break;
                }
            }


            // determine filenames


            if (i >= argv.Length) exit_with_help();


            inputFilename = argv[i];


            if (i < argv.Length - 1)
                modelFilename = argv[i + 1];
            else {
                int p = argv[i].LastIndexOf('/');
                ++p; // whew...
                modelFilename = argv[i].Substring(p) + ".model";
            }


            if (Parameter.eps == Double.PositiveInfinity) {
                switch (Parameter.solverType.getId()) {
                    case SolverType.L2R_LR:
                    case SolverType.L2R_L2LOSS_SVC:
                        Parameter.setEps(0.01);
                        break;
                    case SolverType.L2R_L2LOSS_SVR:
                        Parameter.setEps(0.001);
                        break;
                    case SolverType.L2R_L2LOSS_SVC_DUAL:
                    case SolverType.L2R_L1LOSS_SVC_DUAL:
                    case SolverType.MCSVM_CS:
                    case SolverType.L2R_LR_DUAL:
                        Parameter.setEps(0.1);
                        break;
                    case SolverType.L1R_L2LOSS_SVC:
                    case SolverType.L1R_LR:
                        Parameter.setEps(0.01);
                        break;
                    case SolverType.L2R_L1LOSS_SVR_DUAL:
                    case SolverType.L2R_L2LOSS_SVR_DUAL:
                        Parameter.setEps(0.1);
                        break;
                    default:
                        throw new InvalidOperationException("unknown solver type: " + Parameter.solverType);
                }
            }
        }
Ejemplo n.º 2
0
        internal void parse_command_line(string[] argv)
        {
            int i;

            // eps: see setting below
            Parameter = new Parameter(SolverType.getById(SolverType.L2R_L2LOSS_SVC_DUAL), 1, Double.PositiveInfinity, 0.1);
            // default values
            Bias             = -1;
            cross_validation = false;


            // parse options
            for (i = 0; i < argv.Length; i++)
            {
                if (argv[i][0] != '-')
                {
                    break;
                }
                if (++i >= argv.Length)
                {
                    exit_with_help();
                }
                switch (argv[i - 1][1])
                {
                case 's':
                    Parameter.solverType = SolverType.getById(Linear.atoi(argv[i]));
                    break;

                case 'c':
                    Parameter.setC(Linear.atof(argv[i]));
                    break;

                case 'p':
                    Parameter.setP(Linear.atof(argv[i]));
                    break;

                case 'e':
                    Parameter.setEps(Linear.atof(argv[i]));
                    break;

                case 'B':
                    Bias = Linear.atof(argv[i]);
                    break;

                case 'w':
                    int    weightLabel = int.Parse(argv[i - 1].Substring(2));
                    double weight      = double.Parse(argv[i]);
                    Parameter.weightLabel = addToArray(Parameter.weightLabel, weightLabel);
                    Parameter.weight      = addToArray(Parameter.weight, weight);
                    break;

                case 'v':
                    cross_validation = true;
                    nr_fold          = int.Parse(argv[i]);
                    if (nr_fold < 2)
                    {
                        Console.Error.WriteLine("n-fold cross validation: n must >= 2");
                        exit_with_help();
                    }
                    break;

                case 'q':
                    i--;
                    Linear.disableDebugOutput();
                    break;

                default:
                    Console.Error.WriteLine("unknown option");
                    exit_with_help();
                    break;
                }
            }


            // determine filenames


            if (i >= argv.Length)
            {
                exit_with_help();
            }


            inputFilename = argv[i];


            if (i < argv.Length - 1)
            {
                modelFilename = argv[i + 1];
            }
            else
            {
                int p = argv[i].LastIndexOf('/');
                ++p; // whew...
                modelFilename = argv[i].Substring(p) + ".model";
            }


            if (Parameter.eps == Double.PositiveInfinity)
            {
                switch (Parameter.solverType.getId())
                {
                case SolverType.L2R_LR:
                case SolverType.L2R_L2LOSS_SVC:
                    Parameter.setEps(0.01);
                    break;

                case SolverType.L2R_L2LOSS_SVR:
                    Parameter.setEps(0.001);
                    break;

                case SolverType.L2R_L2LOSS_SVC_DUAL:
                case SolverType.L2R_L1LOSS_SVC_DUAL:
                case SolverType.MCSVM_CS:
                case SolverType.L2R_LR_DUAL:
                    Parameter.setEps(0.1);
                    break;

                case SolverType.L1R_L2LOSS_SVC:
                case SolverType.L1R_LR:
                    Parameter.setEps(0.01);
                    break;

                case SolverType.L2R_L1LOSS_SVR_DUAL:
                case SolverType.L2R_L2LOSS_SVR_DUAL:
                    Parameter.setEps(0.1);
                    break;

                default:
                    throw new InvalidOperationException("unknown solver type: " + Parameter.solverType);
                }
            }
        }