0
0

More than 3 years have passed since last update.

Excelでこんなことやってたよなー、をPythonに置き換える その3

Last updated at Posted at 2020-05-25

今日はデータサイエンスチックな標準化。とはいうもののこれまでは単に比較しやすかったので処理してた。
エクセルではSTANDARDIZE関数でやるけど、pythonだとどうなるのか調べてみた。

標準化とは?

単位とか平均値の違うデータ同士を比べやすくするための処理。
値から平均を引いて標準偏差で割ると算出できます。例えば

A : 60000
 平均   = 48000
 標準偏差 = 8000

B : 80000
平均   = 67000
標準偏差 = 9500

みたいなとき、パッとどっちが相対的に順位高いのかわからないとき

Aの標準化 = (60000 ー 48000) / 8000 = 1.5
Bの標準化 = (80000 ー 67000) / 9000 = 1.4

とすると比較しやすいよねってやつです。
有名なのは、偏差値ですね。
偏差値は、元の点数を標準化して、点数(=Z値)を10倍して50足したものです。

標準化

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()
df_sc = sc.fit_transform(df)

一瞬のできごとでした。
StandardScalerの引数はcopy、with_mean、with_std、全部TrueでOK。
もうちょっと何かするときにFalseにするみたいだけど今はいいや。誰か教えてください!

なんか悔しいので、自分でコード書いたらどうなるか頑張ってみた。

標準化を自力で

import math

def standardize(X):
 mean = sum(X) / len(X)
 var  = sum([(mean - XX) ** 2 for XX in X ]) / len(X)
 std  = math.sqrt(var)
 z    = [XX / std for XX in [XX - mean for XX in X]]
 return [mean, var, std, z]

mean, var, std, z = standardize(X)

一応これでできた、でもこれだと複数列を一気に標準化できないのかな。
素直にStandardScalerを使えばいいか。

まとめ

標準化って分析ではよく使うので、少しデータサイエンスっぽいことになって面白かった。
sklearnは機械学習に欠かせないライブラリなんですね。それも知れたのでよし。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0