2016-09-16 2 views
2

0에서 2pi까지의 n 값을 갖는 엔디 형 배열을 만들었습니다. 이제 정규 분포 된 sin (x)에서 벗어나는 n 개의 테스트 데이터 포인트를 생성하려고합니다.정상적으로 분산 된 노이즈 및 평균 함수를 사용하여 데이터 생성

그래서 나는 이런 식으로해야한다고 생각했습니다 : t = sin(x) + noise. 소음은 다음과 같아야합니다. noise = np.random.randn(mean, std).

그러나 내 mean이 sin (x) (상수가 아님) 일 때 소음을 계산할 수있는 방법을 모르겠습니다.

답변

2

numpy.random.randn의 인수는 평균 및 표준 편차가 아닙니다. 이를 위해서는 numpy.random.normal이 필요합니다. 그 서명은 단순히 normal()의 호출에 0의 평균을 사용, 죄 기능에 노이즈를 추가하려면

normal(loc=0.0, scale=1.0, size=None) 

입니다. np.linspace(0, 2*np.pi, n) 같은 평균은 x 주어진 기본적으로 그래서 0입니다 loc 인수 (예 : "위치")에 해당 무엇인가, 당신은이 작업을 수행 할 수 있습니다

t = np.sin(x) + np.random.normal(scale=std, size=n) 

당신 사용 numpy.random.randn,하지만 당신은 평균 0, 표준 편차 1로 표준 정규 분포에서 randn 반환 샘플, randn를 사용하기 때문에, std하여 확장 할 수 있고, 당신은 작성합니다

t = np.sin(x) + std * np.random.randn(n) 
1

노이즈를 y 좌표에 추가하면 테스트 데이터 포인트 중 일부는 사인 함수의 정상 범위를 벗어나는 값, 즉 -1에서 1이 아닌 - (1 + 잡음) ~ + (1 + 노이즈). 나는 x에 노이즈 좌표를 추가하는 것이 좋습니다 :

t = np.sin(x + np.random.uniform(-noise, noise, x.shape)) 

noise이 문제에 대한 적절한 값이어야 곳.

관련 문제