【超基礎編】データをpythonのpanndasで分析する(データの前処理_2)

スポンサーリンク
Python

scikit-learnにあるデータセットを使った、pandasでのデータの整理を解説していきます。

コピペのコードを少しずつ変化させていくことが、コードの理解を深めるための近道です。

データの扱い方(前処理)はデータサイエンスの仕事の80%といわれています。
つまり、このデータを自由自在に扱うことが、データ分析、データサイエンティストに必須のスキルといえます。

今回は、分類問題で使われるcancerデータセットを使って、データの扱い方やそのためのコードを学んでいきたいと思います。

データを説明変数であるXと、目的変数であるyに分けるところまで実際に行っていきましょう。

環境構築は、

【2021年最新】WindowsでAnacondaをインストールする方法、初心者がPythonの環境を構築する
Pythonの環境構築におすすめなのが、「anaconda」です。anacondaのなかにある、Jupyter Labはデータ解析や機械学習に非常に相性がいいです。理由は、コードを実行すると結果を返してくれます。その結果をみて、新たなコード
M1 mac でanacondaをインストールし、Pythonを動作確認
M1 mac miniを購入したので、anacondaのインストールし、Pythonの動作を確認しました。 以前はWindowsでのanacondaのインストール方法を提示しました。 macでのイ...

データの形であるdataフレームが分からない場合は以下の記事を参照して下さい。

【超重要】はじめてのデータ収集方法
あなたは、勤めている会社を良くしようと、データ解析を行うことになりました。そのためには、まずデータを収集しないといけません。そこには、さまざまな落とし穴が数多く存在します。データ解析の前段階として、データ収集の方法が間違...

データの読み込み

【超基礎編】データをpythonのpanndasで分析する(データの読み込みまで)
データ分析や機械学習をするためには、自身のデータの管理や保存方法から、Pyhtonで分析するためのデータの読み込みが必要です。 始めてPyhtonを使う方にとっては、これらのことも結構難しく感じると思います。わたし...

必要なライブラリをインポートする

import pandas as pd
from sklearn.datasets import load_breast_cancer

コードの説明:

cancerデータセットをデータフレームにする

cancer = load_breast_cancer()
df = pd.DataFrame(data=cancer.data,columns=cancer.feature_names)
df['cancer'] = cancer.target
df

出力:

569行✕31列のデータフレームが出来上がった

コードの説明:

「cancer」のデータセットを詳しくみてみよう。

cancer.data

cancer.data

出力:

よく分からない数値がいっぱい並んでいますね。
これは、上のdf(データフレーム)の説明変数のみの数値を示しています。
下のコードで、「cancer.data」の行数と列数が分かります。

cancer.data.shape

出力:
(569, 30)

つまり、569行、30列です。
df(データフレーム)の行数が同じで、列数が1つ少ないですね。dfの目的変数の1列以外の、説明変数のみの数値であるということです。

cancer.feature_names

cancer.feature_names

出力:

これは、説明変数の列名(columns)を示しています。説明変数の数は30列でした。説明変数の列名も30個あるはずです。確認してみましょう。

len(cancer.feature_names)

出力:
30

思った通り、30でしたね。
このコードは、「cnacer.feature_names」の個数(len())を出力させます。

次に、目的変数を確認してみましょう。

cancer.target

cancer.target

出力:

0と1の数値がいっぱいありますね。cancerは悪性が0、良性が1の二値分類になっていることが確認できます。
データの数を確認してみましょう。

cancer.target.shape

出力:
(569,)

569個の数値があるということですね。
この目的変数の名前も確認します。

cancer.target_names

出力:

これは、数値の0がmalignant(悪性)、数値の1がbenign(良性)ということを示しています。

目的変数と説明変数に分割する

X = df.iloc[:,:-1]   # 説明変数(特徴量)
y = df.iloc[:,-1]    # 目的変数(ターゲット)

コードの説明:

では、説明変数(特徴量)と目的変数(ターゲット)のなかみを確認してみよう

説明変数(特徴量)

X

出力:
569行✕30列のデータフレームが出来上がった
なくなった1列は、データフレームの一番最後の列である「cancer」の列である。

目的変数(ターゲット)

y

出力:

データフレーム(df)の最後の列の「cancer」のみの数値が取り出されている。

ここで、どうやって数値を選択したかを確認してみましょう。
コードの詳細は、コードを少し変化させると分かってきます。

コードの変化させて、理解を深める

df.iloc[1,1]

出力:
17.77

このコードの意味は、
dfの1行目の1列目の数値を指定しています。
つまり、下の赤枠です。

df.iloc[0,3]

出力:
1001.0

これは、dfの0行目の3列目の数値を指定しています。[ , ]内のはじめの数が行数、あとの数が列数を表しています。
つまり、黄色枠です。

さらに、

df.iloc[:,0]

出力:

さきほどの法則にしたがえば、[ , ]内のはじめの数である行数が : となっています。: は「すべての」という意味です。つまり、すべての行の0列目を指定しています。
なので、dfの0列目である「mean radius」のすべての数値が出力されているということです。
ちなみに、

df.iloc[:,-31]

このコードも同じ出力がされます。
これは、すべての行で、列は後ろから31列目を指定しています。
dfは31列なので、後ろから31列目は0列目のことで、上の出力と同じになります。
また、

df.iloc[:,:5]

出力:

これは、すべての行数の0から5列目(:5)を指定しています。
青線で示した行です。

ここまでくれば、「目的変数と説明変数に分割するためのコード」は理解できるはずです。振り返って、コードを確認してみましょう。

データの前処理はこちらをご覧下さい。

実際のデータ分析の流れは、

機械学習の始め方(概要編)

【重要】データの扱い方(Amazonセールアプリ編)





コメント

タイトルとURLをコピーしました