woodwork.datacolumn.DataColumnをpandas.core.series.Seriesに変換してpandas.core.frame.DataFrameに結合する方法
背景
AutoMLライブラリのEvalMLを使ってみようと思ったことがあります。
EvalMLを使ってみて、テストデータから予測を試みたときに「結果として出力される型がwoodwork.datacolumn.DataColumn
でpandas.core.frame.DataFrame
に結合できない」という壁に直面しました。
そして、EvalMLやwoodwork.datacolumn.DataColumn
のドキュメント、EvalMLの利用例などを調査したのですが、解決策は見当たりませんでした。最終的に解決策は見つかったのですが、同じように悩む人もいるかと思い、この記事を公開します。
前提
Kaggleにおけるタイタニック号の生存者予測を例として挙げます。下記の手順でEvalMLによるテストデータからの予測が実現できます。
import pandas as pd
from evalml.automl import AutoMLSearch
train = pd.read_csv('../input/titanic/train.csv')
test = pd.read_csv('../input/titanic/test.csv')
submission = pd.read_csv('../input/titanic/gender_submission.csv')
label = 'Survived'
X_train = train.drop(columns=[label])
y_train = train[label]
automl = AutoMLSearch(X_train=X_train, y_train=y_train, problem_type='binary')
automl.search()
automl.rankings
pipeline = automl.best_pipeline
pipeline.fit(X_train,y_train)
prediction = pipeline.predict(test)
しかし予測結果として出力されたであろうprediction
を意図したとおりにデータフレームに結合できません。以下のように各データの予測結果が出力されてほしい部分に<DataColumn: Survived (Physical Type = Int64) ...
というものが入ってしまっています。
submission[label] = prediction
submission.head()
PassengerId Survived
0 892 <DataColumn: Survived (Physical Type = Int64) ...
1 893 <DataColumn: Survived (Physical Type = Int64) ...
2 894 <DataColumn: Survived (Physical Type = Int64) ...
3 895 <DataColumn: Survived (Physical Type = Int64) ...
4 896 <DataColumn: Survived (Physical Type = Int64) ...
以下のように、出力されたprediction
の型はwoodwork.datacolumn.DataColumn
でした。
type(prediction)
woodwork.datacolumn.DataColumn
結果
以下のように解決できました。
submission[label] = prediction.to_series()
submission.head()
PassengerId Survived
0 892 0
1 893 0
2 894 0
3 895 0
4 896 1
以下のように、出力されたprediction
の型をpandas.core.series.Series
に変換しています。
type(prediction.to_series())
pandas.core.series.Series
EvalMLのテストにヒントがありました。
IDE使ってたらこんな悩みもなくなるのでしょうか…?これにより、woodwork.datacolumn.DataColumn
をpandas.core.series.Series
に変換してpandas.core.frame.DataFrame
に結合し、EvalMLを使ってテストデータから予測ができました。おかげで、Kaggleにおいて、EvalMLを使って以下のようにsubmitまでできました。
よいEvalMLライフを!(※EvalML、オススメです!)
Author And Source
この問題について(woodwork.datacolumn.DataColumnをpandas.core.series.Seriesに変換してpandas.core.frame.DataFrameに結合する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/daikikatsuragawa/items/9972e57df30c1256ff68著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .