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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

1回答

2205閲覧

Python重回帰分析のエラーを解決したい

Shin_go

総合スコア19

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/10/20 09:54

編集2021/10/20 15:44

Pythonで、重回帰分析を行う際に、説明変数を決めて、プログラムを実行しましたら、
添付のエラーが出てしまいました。

変数を数字にしていることがよくないのでしょうか?
解決方法がわかるかたいらっしゃればご教示いただければ幸いです。

<以下はエラーの表記です。>
イメージ説明

<以下は、回帰分析をするためのデータフレームです>

イメージ説明

<データフレームの右側に、数字の変数が並んでいます。>
イメージ説明

<エラーのコードです>

python

1# 目的変数と説明変数に分割 2 3columnList =['city_code','region_code','emailer_for_promotion','homepage_featured','TYPE_B','TYPE_C','Biryani','Desert','Extras',\ 4 'Fish','Other Snacks','Pasta','Pizza','Rice Bowl','Salad','Sandwich','Seafood','Soup','Starters','Indian','Italian','Thai'\ 5 '1.9','2.0','2.4','2.7','2.8','2.9','3.0','3.2','3.4','3.5','3.6','3.7','3.8','3.9','4.0','4.1','4.2','4.4','4.5',\ 6 '4.6','4.7','4.8','5.0','5.1','5.3','5.6','6.3','6.7','7.0'] 7 8X = train_query.loc[:,columnList] 9y = train_query.loc[:, ['num_rank']] 10 11# モデル構築用データ、モデル検証用データに分割(80:20に分割) 12X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 13 14print(X_train.shape) 15print(X_test.shape) 16 17print(y_train.shape) 18print(y_test.shape)

<エラー表記です。>

Python

1KeyError Traceback (most recent call last) 2<ipython-input-175-37e26af03518> in <module>() 3 18 columnList =['city_code','region_code','emailer_for_promotion','homepage_featured','TYPE_B','TYPE_C','Biryani','Desert','Extras', 'Fish','Other Snacks','Pasta','Pizza','Rice Bowl','Salad','Sandwich','Seafood','Soup','Starters','Indian','Italian','Thai' '1.9','2.0','2.4','2.7','2.8','2.9','3.0','3.2','3.4','3.5','3.6','3.7','3.8','3.9','4.0','4.1','4.2','4.4','4.5', '4.6','4.7','4.8','5.0','5.1','5.3'... 4 19 5---> 20 X = train_query.loc[:,columnList] 6 21 y = train_query.loc[:, ['num_rank']] 7 22 8 96 frames 10/usr/local/lib/python3.7/dist-packages/pandas/core/indexing.py in _validate_read_indexer(self, key, indexer, axis, raise_missing) 11 1314 with option_context("display.max_seq_items", 10, "display.width", 80): 12 1315 raise KeyError( 13-> 1316 "Passing list-likes to .loc or [] with any missing labels " 14 1317 "is no longer supported. " 15 1318 f"The following labels were missing: {not_found}. " 16 17KeyError: "Passing list-likes to .loc or [] with any missing labels is no longer supported. The following labels were missing: Index(['Thai1.9', '2.0', '2.4', '2.7', '2.8',\n ...\n '5.3', '5.6', '6.3', '6.7', '7.0'],\n dtype='object', length=29). See https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike"

<
<カンマを追記したコード>

# 目的変数と説明変数に分割 columnList =['city_code','region_code','emailer_for_promotion','homepage_featured','TYPE_B','TYPE_C','Biryani','Desert','Extras',\ 'Fish','Other Snacks','Pasta','Pizza','Rice Bowl','Salad','Sandwich','Seafood','Soup','Starters','Indian','Italian','Thai',\ '1.9','2.0','2.4','2.7','2.8','2.9','3.0','3.2','3.4','3.5','3.6','3.7','3.8','3.9','4.0','4.1','4.2','4.4','4.5',\ '4.6','4.7','4.8','5.0','5.1','5.3','5.6','6.3','6.7','7.0'] X = train_query.loc[:,columnList] y = train_query.loc[:, ['num_rank']] # モデル構築用データ、モデル検証用データに分割(80:20に分割) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) print(X_train.shape) print(X_test.shape) print(y_train.shape) print(y_test.shape)

<エラーコード>

KeyError Traceback (most recent call last) <ipython-input-106-09c4fefa540e> in <module>() 26 columnList =['city_code','region_code','emailer_for_promotion','homepage_featured','TYPE_B','TYPE_C','Biryani','Desert','Extras', 'Fish','Other Snacks','Pasta','Pizza','Rice Bowl','Salad','Sandwich','Seafood','Soup','Starters','Indian','Italian','Thai', '1.9','2.0','2.4','2.7','2.8','2.9','3.0','3.2','3.4','3.5','3.6','3.7','3.8','3.9','4.0','4.1','4.2','4.4','4.5', '4.6','4.7','4.8','5.0','5.1',... 27 ---> 28 X = train_query.loc[:,columnList] 29 y = train_query.loc[:, ['num_rank']] 30 6 frames /usr/local/lib/python3.7/dist-packages/pandas/core/indexing.py in _validate_read_indexer(self, key, indexer, axis, raise_missing) 1314 with option_context("display.max_seq_items", 10, "display.width", 80): 1315 raise KeyError( -> 1316 "Passing list-likes to .loc or [] with any missing labels " 1317 "is no longer supported. " 1318 f"The following labels were missing: {not_found}. " KeyError: "Passing list-likes to .loc or [] with any missing labels is no longer supported. The following labels were missing: Index(['1.9', '2.0', '2.4', '2.7', '2.8',\n ...\n '5.3', '5.6', '6.3', '6.7', '7.0'],\n dtype='object', length=29). See https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike"

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2021/10/20 11:11

関係ないかもですけど columList 定義の行末に \ がついてたりついてなかったりするのはどうなんしょ? コメントの例では全部ついてるようですが。
Shin_go

2021/10/20 11:19

ありがとうございます。 コードを直接貼り付けました。 もし解決方法がわかればご教示いただければ幸いです。 説明変数にfoat型が混じっていて、 float型をstr型に変える必要があるような気がしているのですが、 その変え方がわかりません。
jbpb0

2021/10/20 15:07 編集

> The following labels were missing: Index(['Thai1.9', '2.0',... 「Thai」と「1.9」がくっ付いてますね > ...'Italian','Thai'\ 「'Thai'」と「\」の間にカンマが要るのではないですかね
Shin_go

2021/10/20 15:22

ありがとうございます。カンマは要れてみましたが同じくエラー出てしまいました。 私も同じサイトに辿りつきて、データ型の変換を試みたのですが、やり方が間違えているのか、 同じエラーとなってしまいました。
jbpb0

2021/10/20 15:37

> カンマは要れてみましたが同じくエラー出てしまいました。 カンマを追加したら、 > The following labels were missing: Index(['Thai1.9', '2.0',... の「Thai」と「1.9」がくっ付いてるのは無くなるはずなので、エラーの内容は違うはずですから、その情報を出してください 別のエラーが出てるのなら、その原因は別にあるはずですが、エラー内容が分からないと原因も分かりません カンマを追加したコードと、それを実行した時のエラーを、質問を編集して追記してください
Shin_go

2021/10/20 15:44

追記いたしました。 申し上げととおり変わらないですよね。。エラーは。
jbpb0

2021/10/20 15:46

> Passing list-likes to .loc or [] with any missing labels is no longer supported. は、 https://qiita.com/chase0213/items/654f7feb06a1c650e36e に書いてあるように存在しないキーを参照してるエラーなので、「columnList =...」の内容とデータフレームが矛盾してないかを確認することです 「Thai」と「1.9」がくっ付いたら、それは当然存在してませんよね それを直してもまだ同じエラーが出てるのなら、おそらくまだどこかに矛盾が残ってるのです
jbpb0

2021/10/20 15:48

> 申し上げととおり変わらないですよね。。エラーは。 変わってますよね 「'Thai1.9'」は無くなってます
jbpb0

2021/10/20 16:25 編集

> 変数を数字にしていることがよくないのでしょうか? 内容が aaa,bbb,ccc,1.0,1.1,1.2 0,1,2,3,4,5 0,1,2,3,4,5 0,1,2,3,4,5 0,1,2,3,4,5 0,1,2,3,4,5 のCSVファイルを作って、下記のようにそれを読み込んで処理しても、エラー出ません import pandas as pd train_query = pd.read_csv('ttest.csv') columnList = ['aaa', 'bbb', '1.0', '1.1'] X = train_query.loc[:, columnList] 質問のコードのように、「columnList =...」の途中で改行しても、エラー出ません なので、質問者さんの環境では、「columnList =...」の内容とデータフレームの間に何か矛盾があるのだと思うのですが たとえば、データフレームのヘッダー(「1.9」とか)が、全角文字が含まれてたり、数字の前か後にスペースが付いてたり、何かそういうことありませんか? print(train_query['1.9']) は、エラー出ずに実行できますか? print(list(train_query)) を実行したらヘッダーが表示されるのですが、「columnList =...」と相違ありませんか?
guest

回答1

0

変数を数字にしていることがよくないのでしょうか?

内容が

csv

1aaa,bbb,ccc,1.0,1.1,1.2 20,1,2,3,4,5 30,1,2,3,4,5 40,1,2,3,4,5 50,1,2,3,4,5 60,1,2,3,4,5

のCSVファイルを作って、下記のようにそれを読み込んで処理しても、エラー出ません

python

1import pandas as pd 2train_query = pd.read_csv('ttest.csv') 3columnList = ['aaa', 'bbb', '1.0', '1.1'] 4X = train_query.loc[:, columnList]

質問のコードのように、「columnList =...」の途中で改行しても、エラー出ません
変数が数字でも、問題無いと思います

「columnList =...」の内容とデータフレームの間に何か矛盾があるかもしれません
たとえば、データフレームのヘッダー(「1.9」とか)が、全角文字が含まれてたり、数字の前か後にスペースが付いてたり、等
下記を実行したらヘッダーが表示されるので、「columnList =...」と相違無いか確認してみてください

python

1print(list(train_query))

投稿2021/10/28 06:09

jbpb0

総合スコア7651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問