get_dummiesを使用して各値がどの分類に属するのかを0と1で表す
例えばキノコのデータの
http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.data
gill_colorというのは
black=k,
brown=n,
buff=b,
chocolate=h,
gray=g,
green=r,
orange=o,
pink=p,
purple=u,
red=e,
というようにそれぞれの色を表している
http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.data
のデータには左から10番目に色を表すアルファベットが入っている
一部省略されているので下の表では左から3番目
1 2 3 4 5 6 7 8 9 10 11 12 |
gill_spacing gill_size <span style="color: #ff0000;">gill_color</span> ... stalk_surface_below_ring \ 0 c n k ... s 1 c b k ... s 2 c b n ... s 3 c n n ... s 4 w b k ... s 5 c b n ... s 6 c b g ... s 7 c b n ... s 8 c n p ... s 9 c b g ... s 10 c b g ... s |
データを扱いやすくするため以下のように設定する
#urlを読み込む
mush_data_url = “http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.data”
s = requests.get(mush_data_url).content
#urlのデータをutf=8で読み込む
mush_data = pd.read_csv(io.StringIO(s.decode(“utf-8”)),header=None)
#データの一番上のカラムにそれぞれのアルファベットに対応した種類を割り当てる
mush_data.columns = [“classes”, “cap_shape”, “cap_surface”, “cap_color”, “odor”, “bruises”,
“gill_attachment”, “gill_spacing”, “gill_size”, “gill_color”, “stalk_shape”,
“stalk_root”, “stalk_surface_above_ring”, “stalk_surface_below_ring”,
“stalk_color_above_ring”, “stalk_color_below_ring”, “veil_type”, “veil_color”,
“ring_number”, “ring_type”, “spore_print_color”, “population”, “habitat”]
#gill_colorを対象とするのでmush_data_dummyにターゲットを絞る
mush_data_dummy = pd.get_dummies(
mush_data[[“gill_color”]])
#gill_colorがk,n,b,h,g,r,o,p,u,eの該当するものに1をそうでないものに0をつける
mush_data_dummy[“flg”] = mush_data[“classes”].map(
lambda x:1 if x == “p” else 0)
その結果、元のデータのgill_colorの項目でpに該当する8行目を対象にして
1 2 3 4 5 6 7 8 9 10 |
gill_spacing gill_size gill_color ... stalk_surface_below_ring \ 0 c n k ... s 1 c b k ... s 2 c b n ... s 3 c n n ... s 4 w b k ... s 5 c b n ... s 6 c b g ... s 7 c b n ... s 8 c n <span style="color: #ff0000;"><strong>p</strong></span> ... s |
以下のようにpに該当するものを1に変更する
1 2 3 4 5 6 7 8 9 10 11 |
0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 1 9 0 10 0 |
コメントを残す