質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

NameError: name 'y_test' is not definedとなり,変数が定義されてない理由

kouji_39
kouji_39

総合スコア87

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0評価

0クリップ

173閲覧

投稿2022/05/06 14:53

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

import xgboost as xgb import numpy as np from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score """XGBoost で二値分類するサンプルコード""" def main(): # 乳がんデータセットを読み込む dataset = datasets.load_breast_cancer() X, y = dataset.data, dataset.target # データセットを学習用と検証用に分割する X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, shuffle=True, random_state=42, stratify=y) # XGBoost が扱うデータセットの形式に直す dtrain = xgb.DMatrix(X_train, label=y_train) dtest = xgb.DMatrix(X_test, label=y_test) # 学習用のパラメータ xgb_params = { # 二値分類問題 'objective': 'binary:logistic', # 評価指標 'eval_metric': 'logloss', } # モデルを学習する bst = xgb.train(xgb_params, dtrain, num_boost_round=100, # 学習ラウンド数は適当 ) # 検証用データが各クラスに分類される確率を計算する y_pred_proba = bst.predict(dtest) # しきい値 0.5 で 0, 1 に丸める y_pred = np.where(y_pred_proba > 0.5, 1, 0) # 精度 (Accuracy) を検証する acc = accuracy_score(y_test, y_pred) print('Accuracy:', acc) if __name__ == '__main__': main() #y_testの値を確認 y_test###ここまでで、コード実行してエラー発生## #提出用ファイル作成 import pandas as pd import csv, os, time df = pd.DataFrame({'y_test':y_test,'y_pred':y_pred}) #pandas.DataFrameは二次元の表形式のデータ(テーブルデータ)を表す、pandasの基本的な型。 print(df) #ファイルの書き出し filename ='test.csv' df.to_csv(filename,index=False) !ls !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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

meg_

2022/05/06 15:28

インデントは質問のコードで合ってますか?
meg_

2022/05/06 16:22 編集

そもそも質問のコードは「#y_testの値を確認」のところでSyntaxErrorになるので質問の状態は再現できませんでした。実際に実行したコードに差し替えてもらえないでしょうか?

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。