analysis)はデータから数値を予測するのに利用されます。その日の最高気温とビールの売上げのデータを分析して、明日の予想最高気温からビールの売上げを予測する、といったときには回帰分析が役に立ちます。回帰分析をする方法を学んでいきましょう。learning)のひとつです。回帰分析は以下の手順で行います。何を分析するかを決めるデータを集めるデータの分析と前処理をする分析アルゴリズムを選ぶモデルの実装とトレーニングをするモデルの評価をするすでにデータがあり、そのデータから何を分析するかを決める、といったように手順が逆になることもあります。実際には上から順にスムーズに進むことは稀で、手順を行ったり来たりします。この記事では手順3まで、手順4以降は次回に続きます。何を分析するかを決めるボストンの住宅価格データセットでは、部屋数や犯罪発生率などのデータから住宅価格の予測を行います。機械学習の用語で表現すると、部屋数や犯罪発生率が説明変数(特徴量)、住宅価格が目的変数です。データを集めるすでにデータがあるのでこの手順は不要ですが、実際のプロジェクトではデータを集める必要があります。データの分析と前処理をするさて、ここからが本題です。機械学習モデルは入力データをもとに学習(トレーニング)を行います。そのためデータの品質が十分でなかったり、手当たり次第に放り込んだりすると、精度の低いモデルになってしまいます。機械学習モデルのトレーニングをする前に、データをよく分析することが重要です。前処理とは?機械学習ではデータの品質がとても重要です。記入漏れやミスだらけのデータでは、どんなに優れたアルゴリズムを使っても良い結果は得られません。機械学習のアルゴリズムにデータを入力する前にデータを精査して、アルゴリズムに入力できるよう、あらかじめデータの修正・削除・変換などを行います。これを前処理と呼びます。以下のライブラリを使用します。インストールしておきましょう。動作を確認しています。よって収集された、ボストン近郊の住宅情報に関するデータセットです。有名なデータセットなので、データサイエンスや機械学習の教科書・書籍で一度は目にしたことがあるかもしれません。関数により読み込むことができます。表示すると、データセットの概要が表示されます。冒頭箇所データ数(サンプルサイズ)は506件。予測に使う13個の属性(下表のCRIMからLSTATまで)、目的となる1個の属性(下表のMEDV)からなるデータセットです。各属性についての日本語訳すると、以下のようになるかと思います(訳は適当です、すみません・・・)。BKは町ごとの黒人の割合。どのようにデータを集めたかを調べるとはっきりするかと思います。筆者はそこまでは調べていないので・・・あくまで推測です。よりデータの精査や前処理を行うのが一般的です。dataset.target下準備は完了です。データの精査を行っていきましょう。実際にどのようなデータが入っているかをまずチェックしましょう。より最初の5行を確認できます。ように行数を指定することも可能です。使うと最後の5行を確認できます。イメージがわきやすいかもしれません。下図はボストンの住宅価格CSVファイルをエクセルで開いたときのスクリーンショットです。その下に実測値が506行記入された表にすぎません。いう2つのメソッドがあります。df.info()どの属性も506件、float64型のデータということがわかります。ボストンの住宅価格は理想的なデータですが、実際のデータでは記入漏れ(欠損値)はつきものです。本来数値が記入される項目に文字列が記入されている、といったことは日常茶飯事です。よりデータの型や件数をざっと確認しましょう。df.describe()わずか1行のコードで、属性ごとにデータの平均値や標準偏差といった要約統計量をまとめて確認できます。いう処理がよく使われます。覚えておくとよいでしょう。結果は有益ですが、それだけでデータの特徴を把握するのは至難の技です。図やグラフなど、何かしらの可視化を行って分析をするのが一般的です。ここでは、よく使われる2つの方法を紹介します。散布図とヒストグラムをまとめて確認することができます。言葉で説明するより見てもらうのが手取り早いでしょう。デフォルトのスタイルを適用sns.set()sns.pairplot(df)plt.show()ペアプロット図(散布図行列)変数が多いため、とても壮大な図ですね・・・。3つに絞って見やすくしてみましょう。'MEDV']])plt.show()ペアプロット図(散布図行列)一番下の段だけ簡単に見てみましょう。正の相関が見てとれます。どことなく直線的な関係に見えます。減少する、つまり、負の相関が見てとれます。右端の盛り上がりはあるものの、山なりの形をしていて、正規分布に近いように見えます。このように視覚化すると、データの特徴が見えてきます。散布図やヒストグラムを1つずつ表示したい場合は以下のようにします。ヒストグラムsns.distplot(df['MEDV'])plt.show()相関行列のヒートマップペアプロット図とあわせて、相関行列のヒートマップを利用すると属性間の相関関係をより明確に把握できます。引数として渡せば、ヒートマップを描くことができます。近い場合は相関関係がないと判断できます。正の相関があると判断できます。負の相関があると判断できます。相関係数の値だけでは相関を判断できないこともあります。相関係数についての詳細はWikipedia相関係数を参照ください。いう高い値になっていることです。説明変数間に強い相関がある場合、アルゴリズムによっては分析結果に悪い影響を及ぼすことがあるので注意が必要です。詳しくは多重共線性というキーワードで検索してみてください。事前のデータ分析については、ひとまず以上です。データ分析手法のほんの一部にすぎませんが、プログラミングに加えて数学の知識も必要だったりと、相当難しかったのではないでしょうか。入れて、あれこれ調べるのだな、それだけでもAIや機械学習について何も知らない状態からは大きな前進かと思います。次回はボストンの住宅価格データセットに対して、実際に機械学習を行います。コメントをキャンセルメールアドレスが公開されることはありません。