この記事は
3日目の記事です。
についての解説を載せて行きます。
このtutorialでは特徴量を自分で計算して作り出し、元の表に横からつけること(特徴量エンジニアリング)を行なっています。
tutorialの初めに
np.pi * ((0.5 * autos.bore) ** 2) * autos.stroke * autos.num_of_cylinders
という計算式が出てきます。どこからきたのか途方に暮れるかと思いますがこれは調べてみると車のエンジン排気量を計算するコードです。突然出てきたように感じられますが、おそらく自動車業界の方には馴染みがある数式なのでしょう。このようにある業界について特有の知識があるとkaggleで優位に戦えます。ドメイン知識というやつですね。今回我々は自動車エンジン業界に詳しくはなく、この先も同様と考えられますので、とりあえずこの数式を受け入れることで次に進めます。
また、このtutorialからsum(axis=1)というようにaxisを多用しています。この先も出て行きますので、ここで押さえておきましょう。pandas tutorialでも出てきますのでそこで確認するのも良いですね。
日本語の二次元配列は「行列」と言われますが、axisも同様にaxis=0 は行方向を指し、axis=1 は列方向を指しますので行→列となることを理解すると覚えやすいかと思います。
roadway_features = ["Amenity", "Bump", "Crossing", "GiveWay",
"Junction", "NoExit", "Railway", "Roundabout", "Station", "Stop",
"TrafficCalming", "TrafficSignal"]
accidents["RoadwayFeatures"] = accidents[roadway_features].sum(axis=1)
accidents[roadway_features + ["RoadwayFeatures"]].head(10)
はデータの roadway_features ラベルのデータを列方向に合計し、RoadwayFeatures という新しい列を作成する関数になります。
そのほか、
文字列を空白で区切って複数のラベルに変換(strとsplitはpythonの基本文法で学んでおきましょう)
文字列を結合 (+で結合なのはわかりますね)
が出てきます。
Group transformsの解説について
グループ変換は、カテゴリ別にグループ化された複数の行の情報を集計します。
groupby・・ときいて皆さんはDataScienceを連想しますか?
一般に広く使用されるExcelでこの機能は存在しています。
kaggleのtutorialよりExcelの解説ページを読む方がよほどわかりやすいのでそちらをお勧めします。
実際にデータを操作するのもexcel上で操作することのほうが視覚化もされわかりやすいのでまずそちらを試した上でpandasの機能に取り組んでみてください。なお、私もExcelで同じ会計項目のみをまとめる作業をした際に必要性などの納得を得られました。