판다에서 R의 scale
기능과 동등한 효과는 무엇입니까? 예 :Python에서 팬더의 R 스케일 기능을 구현하고 있습니까?
newdf <- scale(df)
으로 작성했습니다. transform
을 사용하여 우아한 방법이 있습니까?
판다에서 R의 scale
기능과 동등한 효과는 무엇입니까? 예 :Python에서 팬더의 R 스케일 기능을 구현하고 있습니까?
newdf <- scale(df)
으로 작성했습니다. transform
을 사용하여 우아한 방법이 있습니까?
내가 R을 알고 있지만, 당신은 아마하려는 일반적인 버전 (약간 덜 일반적인 방법이기는하지만)
def scale(y, c=True, sc=True):
x = y.copy()
if c:
x -= x.mean()
if sc and c:
x /= x.std()
elif sc:
x /= np.sqrt(x.pow(2).sum().div(x.count() - 1))
return x
을 트릭을 할 것 다음과 같이 보이는 문서를 읽고에서하지 않는다 몇 가지 유형/길이 검사를해야합니다.
편집 : elif sc:
절 R 워드 프로세서에서
에서 분모의 추가 설명 :
... If ‘scale’ is
‘TRUE’ then scaling is done by dividing the (centered) columns of
‘x’ by their standard deviations if ‘center’ is ‘TRUE’, and the
root mean square otherwise. If ‘scale’ is ‘FALSE’, no scaling is
done.
The root-mean-square for a (possibly centered) column is defined
as sqrt(sum(x^2)/(n-1)), where x is a vector of the non-missing
values and n is the number of non-missing values. In the case
‘center = TRUE’, this is the same as the standard deviation, but
in general it is not.
라인 np.sqrt(x.pow(2).sum().div(x.count() - 1))
루트가 처음 x
합니다 (pow
방법)을 제곱하여 정의를 사용하여 제곱 평균 계산 행을 따라 합계 한 다음 각 열의 NaN
수가 아닌 숫자로 나누십시오 (count
메소드).
참고로, 센터링 후 RMS를 단순히 계산하지 않은 이유는 std
메서드가 bottleneck
메서드를 호출하여 해당 표현의 빠른 계산을 위해 표준 편차를 계산하고 보다 일반적인 RMS.
대신 센터링 후 RMS를 계산할 수 있습니다. 벤치 마크의 가치가있을 수 있습니다. 지금은이 글을 쓰고 있기 때문에 어느 것이 더 빠르며 실제로 벤치마킹을하지 않았기 때문입니다.
설명 할 수있는'/ = np. sqrt (x.pow (2) .sum(). div (x.count() - 1))'? – user248237dfsf
R docs에 따라 계산 된 제곱근은 중앙에 있으면 표준 편차가되므로 중간 if 문을 제거하고'if c : x - = x.mean(); if sc : x/= np.sqrt (x.pow (2) .sum(). div (x.count() - 1))' – machow
@ 닫힘. 나는 그처럼 논평했다. –
스케일링은 기계 학습 작업에서 매우 일반적이므로 scikit-learn의 preprocessing
모듈에서 구현됩니다. pandas DataFrame을 scale
메소드로 전달할 수 있습니다.
유일한 "문제"는 반환 된 객체가 더 이상 DataFrame이 아니라 numpy 배열이라는 것입니다. 어쨌든 기계 학습 모델 (예 : SVM 또는 로지스틱 회귀)에 전달하려는 경우 일반적으로 실제 문제가 아닙니다.
from sklearn.preprocessing import scale
from pandas import DataFrame
newdf = DataFrame(scale(df), index=df.index, columns=df.columns)
도 here 참조 : 당신이 DataFrame을 유지하려면, 그것은 몇 가지 해결 방법을 필요로한다.
'pandas'에 대한 좋은 기능 요청은 R의'sweep' 기능과 비슷할 수 있습니다. –
[numpy/scikit 함수로 팬더 구조 유지하기] (0120-385-304) – ariddell