[Day 8]


2021年春季合宿日8日


[Day 8]Pandas I/深さ学習方法の理解


Python Data Analysis Library - Pandas


データ分析でよく使う経験があるので、理解するのはあまり難しくありません.

pandas

  • 構造化データ処理対応Pythonライブラリ
  • 高性能アレイリポジトリnumpyと統合し、強力な「スプレッドシート」処理機能を提供する
  • インデックス、演算関数、前処理関数等の提供
  • series

  • Data Frame:Data Table全体の対象を含む
  • シリーズ:DataFrameの1つのColumnベクトルに対応するデータの集合オブジェクト
  • Series.astype(type):typeの切り替え
  • dict_data = {"a":1, "b":2, "c":3, "d":4, "e":5}
    examplt_obj = Series(dict_data, dtype=np.float32, name="example_data")
    print(example_obj)
    # a 1.0
    # b 2.0
    # c 3.0
    # d 4.0
    # e 5.0
    # Name: example_data, dtype: float32
    dict_data_1 = {"a":1, "b":2, "c":3, "d":4, "e":5}
    indexes = ["a", "b", "c", "d", "e", "f", "g", "h"]
    series_obj_1 = Series(dict_data_1, index=indexes)
    print(series_obj_1)
    # a 1.0
    # b 2.0
    # c 3.0
    # d 4.0
    # e 5.0
    # f NaN
    # g NaN
    # h NaN
    # dtype: float64

    dataframe

  • Data Frame:Data Table全体の対象を含む
  • loc : index location
  • iloc : index position
  • 次のすべての列の式を使用することもできます.
  • df.debt = df.age>40
    
    df.T # transpose
    
    df.values # 값 출력
    
    df.to_csv() # csv변환
    
    del df["debt"] # debt column을 삭제함
    
    df["account"].head(3) # 한개의 컬럼헤드 3줄 출력
    
    df[["account", "street", "state"]].head(3) # 1개 이상의 컬럼 헤드 3줄 출력
    
    df.loc[[1,2], ["name", "street"]] # column과 index name을 통한 출력
    
    df.index = list(range(0,15)) #0~14로 index를 정할수 있다.
    
    df.drop(1) # index number로 drop
    
    df.drop([0,1,2,3]) # index number list로 drop
    
    df.drop("city", axis=1) # axis지정으로 축을 기준으로 drop

    dataframe operations

    s1.add(s2)
    s1 + s2 
    # 위 두방법으로 values들의 연산이가능. index기준으로 연산이 수행되며 겹치는 index가 없을 경우 NaN값으로 반환
    
    df1.add(df2, fill_value=0)
    # 위 연산에서 NaN으로 나왔던 값들을 0으로 채워주는 방법
    
    df.add(s2, axis=0)
    # axis를 기준으로  row broadcasting 실행

    lambda, map, apply

  • パンダのseries typeデータはmap関数も使える
  • functionの代わりにdict、シーケンス型資料等が使用可能
  • s1.map(lambda x: x**2).haed(5) #각 값의 제곱값을 반환
    
    df.sex.replace({"male":0, "female":1}).head()
    # dataframe의 sex 컬럼의 value값을 기준으로 매핑하여 변환한다.
    # replace안의 inplace=True로 설정시, 데이터 변환결과를 적용시키지만,
    # inplace=False로 설정시, 변환결과가 해당 df에 적용되지는 않는다.
    
    f = lambda x : x.max() - x.min()
    df_info.apply(f)
    # 함수를 series 전체(column)에 적용시킬 때 사용.
    # series단위가 아닌 element 단위로 함수를 적용가능

    pandas built-in functions

    df.describe()
    # Numeric type 데이터의 요약 정보를 보여줌
    
    df.sex.unique() #array(['male', 'female'])
    # series data의 유일한 값을 list 반환
    
    df.sum(axis=0)
    # 기본적인 column또는 row값의 연산을 지원
    # sub, mean, min, max, count, median, mad, var 등
    
    df.isnull()
    # column또는 row 값의 NaN(null)값의 index를 반환
    
    df.isnull().sum()
    # Null인 값의 합을 통해 비어있는 값들의 수를 확인가능
    
    df.sort_values(['age', 'earn'], ascending=True).head(10)
    # column값을 기준으로 데이터를 sorting
    # ascending -> 오름차순
    
    df.age.corr(df.earn)
    df.age.conv(df.earn)
    df.corrwith(df.earn)
    # 상관계수와 공분산을 구하는 함수

    Artificial Intelligenceのテーマ:深い学習方法を理解する


    非線形モデルニューラルネットワークの講義
    分類問題や高予測が必要なモデルでは,線形モデルによる予測が困難である.

    ソフトMax演算

  • モデル出力を確率解釈に変換する演算
  • 分類問題を解く場合、線形モデルとソフトMax関数を組み合わせて予測する
  • 推論の場合、使用する演算はホットスポットベクトルであり、最大値を持つアドレス出力のみが1であるため、softmaxは使用しない.
  • アクティブ化関数

  • ニューラルネットワークは線形モデルと活性化関数で合成された関数
  • 活動関数は非線形関数であり、深さ学習において非常に重要な概念である
  • アクティブ化関数を使用しない場合、深さ学習はリニアモデルと変わらない.
  • sigmoid関数またはtanh関数は伝統的によく用いられる活性関数であるが,深さ学習ではRelu関数がよく用いられる.
  • 多層(MLP)はニューラルネットワーク多層合成の関数
  • どうして何階も積み上げるのですか。

  • 層が深ければ深いほど、目的の関数に近づくために必要なニューロン(ノード)の数が早く減少し、学習効率が高くなる
  • ぎゃくほうこうでんぱんアルゴリズム

  • 逆伝搬アルゴリズム合成関数微分法鎖法則に基づく自動微分を用いる
  • 連鎖法則(chain-rule)により合成関数の微分を算出することができる.