#optuna 調整用の関数 def tyousei(autoscaled_x_train, autoscaled_y_train, autoscaled_x_test, autoscaled_y_test): def Gini(y_true, y_pred): assert y_true.shape == y_pred.shape n_samples = y_true.shape[0] arr = np.array([y_true, y_pred]).transpose() true_order = arr[arr[:, 0].argsort()][::-1, 0] pred_order = arr[arr[:, 1].argsort()][::-1, 0] L_true = np.cumsum(true_order) * 1. / np.sum(true_order) L_pred = np.cumsum(pred_order) * 1. / np.sum(pred_order) L_ones = np.linspace(1 / n_samples, 1, n_samples) G_true = np.sum(L_ones - L_true) G_pred = np.sum(L_ones - L_pred) return G_pred * 1. / G_true def objectives(trial): params = { 'objective': 'regression', 'max_bin': trial.suggest_int('max_bin', 1, 200), 'learning_rate': trial.suggest_int('learning_rate', 0.05, 0.9), 'max_depth': -1, # 木の数 (負の値で無制限) 'num_leaves': trial.suggest_int('num_leaves', 2, 10), 'metric': ('mean_absolute_error', 'mean_squared_error', 'rmse'), 'min_child_samples':trial.suggest_int('min_child_samples', 1, 5), } lgb_train = lgb.Dataset(autoscaled_x_train, autoscaled_y_train) lgb_eval = lgb.Dataset(autoscaled_x_test, autoscaled_y_test, reference=lgb_train) model = lgb.train(params, lgb_train,valid_sets=[lgb_train, lgb_eval],verbose_eval=10,num_boost_round=1000,early_stopping_rounds=10) y_pred_valid = model.predict(autoscaled_x_test, num_iteration=model.best_iteration)* y_train.std() + y_train.mean() score=Gini(y_test, y_pred_valid) return score study = optuna.create_study(sampler=optuna.samplers.RandomSampler(seed=0)) study.optimize(objectives, n_trials=200) study.best_params print("study.best_params",study.best_params) print("study.best_value",study.best_value) return study.best_value
python プログラムで、メインのプログラムと、関数のプログラムをファイルを別にして書いています。
メインのプログラム中で関数を書いて実行すると動作するのですが、動作確認済みの関数を関数をまとめているファイルに移して実行すると下記エラーが発生してしまいます。
SyntaxError: invalid or missing encoding declaration
原因をご教示頂けたら幸いです。
動作させたいプログラムは、LightGBMをopentunaを用いてハイパーパラメータを調節するものです。
実行環境は、jupiternotebook 又は、 google colaboColaboratoryを使用しています。
宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー