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

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

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

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

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

機械学習

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

Q&A

1回答

311閲覧

機械学習のDataFrameのカラム差分の埋め方

ookawa443

総合スコア7

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

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

機械学習

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

0グッド

0クリップ

投稿2019/09/10 06:03

とあるDataFrameの前処理を行っています。

ダミー変数化を行った際、

trainX.shape (1721, 179)
testX.shape (313, 149)

となり差分カラムが30ありました。

解決したいこと
・30のカラムが何なのか?を一覧でしたいりたい
・30のカラムをtestXに追加し、0を挿入したい

です。

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

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

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

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

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

tiitoi

2019/09/10 06:11 編集

ダミー変数化は trainX, testX に分ける前に行うべきではないでしょうか 最初からデータが分かれている場合は一旦結合してダミー変数化してから、再度分割すればよいかと思います。
ookawa443

2019/09/10 06:33

元データで 学習用と検証用でデータありました。 結合部分(indexや行番号)(表現が間違っていたらすいません)を把握しておき、また分割する。 問題なければtrain_test_splitで分割処理をしてしまう。 とかでしょうか?
tiitoi

2019/09/10 06:36

それでいいと思います。 未加工の状態であれば、列の数は同じはずなので、pd.concat で行方向に結合してからダミー変数化し、再度 train_test_split で分割すればよいかと思います。 http://sinhrks.hatenablog.com/entry/2015/01/28/073327
ookawa443

2019/09/10 06:44

初期スタートを間違えた感じですね・・・ ありがとうございます。
ookawa443

2019/09/10 06:46

コメントが「回答」でないけど大丈夫でしょうか?
tiitoi

2019/09/10 07:00

回答のほうにサンプルコードを記載しました。
guest

回答1

0

結合してからダミー変数化して、再度分割するサンプルを以下に記載しました。

コード

python

1import pandas as pd 2from sklearn.model_selection import train_test_split 3 4train = pd.DataFrame({"A": [1, 2, 3], "B": ["x", "y", "z"]}) 5test = pd.DataFrame({"A": [1, 2, 3], "B": ["x", "y", "t"]}) 6 7# 行方向で結合する。 8merged = pd.concat([train, test]) 9print(merged) 10# A B 11# 0 1 x 12# 1 2 y 13# 2 3 z 14# 0 1 x 15# 1 2 y 16# 2 3 t 17 18# 列 B をダミー変数化 19merged = pd.get_dummies(merged, columns=["B"]) 20print(merged) 21# A B_t B_x B_y B_z 22# 0 1 0 1 0 0 23# 1 2 0 0 1 0 24# 2 3 0 0 0 1 25# 0 1 0 1 0 0 26# 1 2 0 0 1 0 27# 2 3 1 0 0 0 28 29# 学習データ、テストデータに分ける。 30train, test = train_test_split(merged, test_size=0.2) 31print(train) 32# A B_t B_x B_y B_z 33# 2 3 0 0 0 1 34# 1 2 0 0 1 0 35# 0 1 0 1 0 0 36# 1 2 0 0 1 0 37print(test) 38# A B_t B_x B_y B_z 39# 0 1 0 1 0 0 40# 2 3 1 0 0 0

参考文献

投稿2019/09/10 07:00

tiitoi

総合スコア21956

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問