キノコの分類
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
import requests import zipfile from io import StringIO import io import pandas as pd from sklearn.model_selection import train_test_split from sklearn import preprocessing mush_data_url = "http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.data" s = requests.get(mush_data_url).content 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"] # カテゴリー変数(色の種類など数字の大小が決められないもの)をダミー特徴量(yes or no)として変換する mush_data_dummy = pd.get_dummies( mush_data[['gill_color', 'gill_attachment', 'odor', 'cap_color']]) # 目的変数:flg立てをする mush_data_dummy["flg"] = mush_data["classes"].map( lambda x: 1 if x == 'p' else 0) # 説明変数と目的変数 X = mush_data_dummy.drop("flg", axis=1)#ここはflg立てした0か1のデータを縦に分離(classesに) Y = mush_data_dummy['flg']#分離されたflg立てした0か1のデータ train_X,test_X,train_y,test_y = train_test_split(X,Y, random_state=42) #train_Xとtest_Xに変数Xを分割して8124行 分け方はランダム #train_yとtest_yに変数Yを分割して8124行 分け方はランダム # モデルの読み込み from sklearn.ensemble import RandomForestClassifier # モデルの構築 model = RandomForestClassifier() # モデルの学習 model.fit(train_X, train_y) # 正解率の算出 model.score(test_X, test_y) |