-1から1までの範囲で与えられたスコアのデータを
array([[-1. ],
[-0.962635 ],
[-0.8809235 ],
...,
[ 0.93678613],
[ 0.96670418],
[ 1. ]])
sklearnのYeo-Johnson変換をして、normanaizedのスコアを更新しました。
python
1from sklearn.preprocessing import PowerTransformer 2pt = PowerTransformer() 3data 4pt.fit(data) 5dfdic0["normanized"] = pt.transform(data) 6dfdic0["normanized"].hist();
ここでのnormanizedのスコアを
-1から1までの範囲のスコアに変更(逆変換)したいのですが、
sklearnのinverse_transform(X)の式に値を代入しても-1から1までの範囲を越えた数値が出力されてしまいます。
X_transにnormanizedの値を代入しています。
(ここでのlambda_とはpt.lamdas_で出力された数値をそのまま代入すればよいのでしょうか)
python
1if X >= 0 and lambda_ == 0: 2 X = exp(X_trans) - 1 3elif X >= 0 and lambda_ != 0: 4 X = (X_trans * lambda_ + 1) ** (1 / lambda_) - 1 5elif X < 0 and lambda_ != 2: 6 X = 1 - (-(2 - lambda_) * X_trans + 1) ** (1 / (2 - lambda_)) 7elif X < 0 and lambda_ == 2: 8 X = 1 - exp(-X_trans)
あなたの回答
tips
プレビュー