Sklearnのプリ処理の部分をメモっておきます。
スクリプト
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
#sklearn_text_for_data_science # sklearn import numpy as np import pandas as pd # 欠損値を含む サンプルデータ・セットを作成 np.random.seed(0) df = pd.DataFrame(np.random.randn(15).reshape(5,3)) df.loc[0,0] = np.nan df.loc[1,1] = np.nan df.loc[2,2] = np.nan df 0 1 2 0 NaN 0.400157 0.978738 1 2.240893 NaN -0.977278 2 0.950088 -0.151357 NaN 3 0.410599 0.144044 1.454274 4 0.761038 0.121675 0.443863 # 欠損値かどうかを調べる df.isnull() 0 1 2 0 True False False 1 False True False 2 False False True 3 False False False 4 False False False # 欠損値を含むindexを削除する df_dropna = df.dropna() df_dropna 0 1 2 3 0.410599 0.144044 1.454274 4 0.761038 0.121675 0.443863 # 欠損値を含むindexを meanで補完する from sklearn.preprocessing import Imputer # インスタンスを作成する imp = Imputer(strategy='mean', axis=0) #欠損値を分析して補完する imp.fit(df) imp.transform(df) array([[ 1.09065446, 0.40015721, 0.97873798], [ 2.2408932 , 0.12862965, -0.97727788], [ 0.95008842, -0.15135721, 0.47489921], [ 0.4105985 , 0.14404357, 1.45427351], [ 0.76103773, 0.12167502, 0.44386323]]) # カテゴリー変数をエンコーディングする # サンプルDataFrame dic = {0:[0, 1, 2, 3, 4], 1:['a', 'b', 'a', 'b', 'c']} df = pd.DataFrame(dic) df 0 1 0 0 a 1 1 b 2 2 a 3 3 b 4 4 c # カテゴリー変数をラベルエンコーディングする from sklearn.preprocessing import LabelEncoder # LabelEncoderのインスタンスを作成する le = LabelEncoder() le.fit(df[1]) df[2] = le.transform(df[1]) # array([0, 1, 0, 1, 2]) df 0 1 2 0 0 a 0 1 1 b 1 2 2 a 0 3 3 b 1 4 4 c 2 # カテゴリー変数を One-Hot ラベルエンコーディングする ''' pd.get_dummieと同じ機能。 pd.get_dummieのほうが使いやすいのでおすすめ ''' from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import OneHotEncoder # サンプルDataFrame dic = {'A':[0, 1, 2, 3, 4], 'B':['a', 'b', 'a', 'b', 'c']} df = pd.DataFrame(dic) # DataFrameをコピー df_ohe = df.copy() df_ohe A B 0 0 a 1 1 b 2 2 a 3 3 b 4 4 c # まず labelEncoder のインスタンスを作成 le = LabelEncoder() # エンコードしたものを df_ohe[3]として新規作成する df_ohe['B'] = le.fit_transform(df_ohe['B']) # a b c を含む列 を解析・変換 le.classes_ # OneHotEncoder のインスタンスを作成する ohe = OneHotEncoder(categorical_features=[1]) # 変換する列の番号をリストとして指定する # OneHotエンコーディングする ohe.fit_transform(df_ohe).toarray() # .toarray():scipy.sparse形式からnumpy配列に変換 array([[1., 0., 0., 0.], [0., 1., 0., 1.], [1., 0., 0., 2.], [0., 1., 0., 3.], [0., 0., 1., 4.]]) # 正規化 # 分散正規化 StanderdScaler """ x' = (x - mean)/ stdev """ from sklearn.preprocessing import StandardScaler # サンプルDataFrameを生成する df_dict = {'A':[1,2,3,4,5], 'B':[100,200,300,400,500]} df = pd.DataFrame(df_dict) # スタンダードスケーラーのインスタンスを生成する stdsc = StandardScaler() # 解析して変換する stdsc.fit(df) stdsc.transform(df) array([[-1.41421356, -1.41421356], [-0.70710678, -0.70710678], [ 0. , 0. ], [ 0.70710678, 0.70710678], [ 1.41421356, 1.41421356]]) # 最小最大正規化 MinMaxScaler """ x' = (x - x_min) / (x_max - x\min) """ from sklearn.preprocessing import MinMaxScaler # サンプルDataFrameを生成する df_dict = {'A':[1,2,3,4,5], 'B':[100,200,300,400,500]} df = pd.DataFrame(df_dict) # スタンダードスケーラーのインスタンスを生成する mmsc = MinMaxScaler() # 解析して変換する mmsc.fit(df) mmsc.transform(df) array([[0. , 0. ], [0.25, 0.25], [0.5 , 0.5 ], [0.75, 0.75], [1. , 1. ]]) |
The following two tabs change content below.
Kazu Manabu
こんにちは すうがく を こよなくあいする
”二代目 圧倒的 かず まなぶ (´・ω・`)” です
心が豊かになる方法について 引き続き考えていきたいです。
最新記事 by Kazu Manabu (全て見る)
- 保護中: block-chain:暗号資産 mulyerコイン 開発(メンバーのみ閲覧可) - 2019年11月11日
- Web Application: 第11回 HTMLにTensorFlowを連動させる - 2019年10月31日
- IOT:加速度センサMPU-6050をラズパイ pythonで動かしてみる(2) - 2019年10月14日