1.前提・実現したいこと
NameError: name 'y_test' is not definedとなり,変数が定義されてない理由が知りたい。
2.発生している問題・エラーメッセージ
NameError Traceback (most recent call last)
<ipython-input-3-81806d1e191e> in <module>()
1 if name == 'main':
2 main()
----> 3 y_test
NameError: name 'y_test' is not defined
3.該当のソースコード
python3
1import xgboost as xgb 2 3import numpy as np 4from sklearn import datasets 5from sklearn.model_selection import train_test_split 6from sklearn.metrics import accuracy_score 7 8"""XGBoost で二値分類するサンプルコード""" 9 10def main(): 11 # 乳がんデータセットを読み込む 12 dataset = datasets.load_breast_cancer() 13 X, y = dataset.data, dataset.target 14 # データセットを学習用と検証用に分割する 15 X_train, X_test, y_train, y_test = train_test_split(X, y, 16 test_size=0.3, 17 shuffle=True, 18 random_state=42, 19 stratify=y) 20 # XGBoost が扱うデータセットの形式に直す 21 dtrain = xgb.DMatrix(X_train, label=y_train) 22 dtest = xgb.DMatrix(X_test, label=y_test) 23 # 学習用のパラメータ 24 xgb_params = { 25 # 二値分類問題 26 'objective': 'binary:logistic', 27 # 評価指標 28 'eval_metric': 'logloss', 29 } 30 # モデルを学習する 31 bst = xgb.train(xgb_params, 32 dtrain, 33 num_boost_round=100, # 学習ラウンド数は適当 34 ) 35 # 検証用データが各クラスに分類される確率を計算する 36 y_pred_proba = bst.predict(dtest) 37 # しきい値 0.5 で 0, 1 に丸める 38 y_pred = np.where(y_pred_proba > 0.5, 1, 0) 39 # 精度 (Accuracy) を検証する 40 acc = accuracy_score(y_test, y_pred) 41 print('Accuracy:', acc) 42 43 44if __name__ == '__main__': 45 main() 46#y_testの値を確認 47y_test###ここまでで、コード実行してエラー発生## 48 49 50#提出用ファイル作成 51import pandas as pd 52import csv, os, time 53df = pd.DataFrame({'y_test':y_test,'y_pred':y_pred}) 54 55#pandas.DataFrameは二次元の表形式のデータ(テーブルデータ)を表す、pandasの基本的な型。 56print(df) 57#ファイルの書き出し 58filename ='test.csv' 59df.to_csv(filename,index=False) 60!ls 61!cp "./{filename}" ./drive/MyDrive/
4.自分で調べたことや試したこと
name 'y_test' is not definedについて、ネット検索した。
つまり、「y_testが定義されていない」ということであるが、
データセットを学習用と検証用に分割したコードで、y_test
が定義されていると思います。ちなみに、main()が実施されて、分割コード
が実施され、その下に「print(y_test)」については表記されています。
5.使っているツールのバージョンなど補足情報
開発環境:Google Colaboratory
プログラム言語:python3
OS:windows10 Home
CPU:Intel(R) Core(TM) i7-7500U CPU@2.70GHz 2.90GHz
回答1件
あなたの回答
tips
プレビュー