여러 열에서 정의 된 값 비율을 기반으로 데이터 세트를 재조정하는 방법은 무엇입니까?

아르 준 아룬

다음과 같은 표가 있습니다 (예제 행).

|---------------------|------------------|---------------|
|      Color          |       Size       |        Age    |
|---------------------|------------------|---------------|
|       Green         |       Small      |       Young   |
|---------------------|------------------|---------------|

테이블에는 세 가지 색상 (녹색, 파란색, 노란색), 세 가지 크기 (소형, 중형, 대형) 및 세 가지 연령 (젊음, 중년, 노인)의 수천 개의 인스턴스가 있습니다.

또한 각 열에 대해 미리 정의 된 백분율 / 비율 집합이 있습니다. 예를 들면 :

  1. 색상 : 30 % 파란색, 40 % 녹색, 30 % 노란색

  2. 크기 : 25 % 소형, 50 % 중형, 25 % 대형

  3. 나이 : 45 % 젊음, 45 % 중년 나이, 10 % 나이

내 질문 : 위의 비율에 맞는 가장 큰 데이터 세트를 어떻게 만들 수 있습니까?

언더 샘플링 기법 (즉, 과중 된 값이있는 행을 삭제하는 것)이 앞으로의 길인 것 같지만, 각 행이 내가 제어하는 ​​세 가지 변수 모두에 영향을 미치기 때문에 어려운 일을 발견하고 있습니다.

최종 결과는 위에 정의 된 비율에 맞는 가능한 가장 큰 데이터 세트입니다.

감사합니다!

이고르 라우시

해당 행에 대한 값 가중치의 곱에 비례하는 확률로 각 행을 샘플링해야합니다. 예를 들어 설명하기가 더 쉽습니다.

N = 100000

# generate N samples of each category; "Color" is sampled non-uniformly to 
# illustrate how to account for prior distribution
df = pd.DataFrame({
    'Color': np.random.choice(['blue', 'green', 'yellow'], N, p=[0.9, 0.05, 0.05]),
    'Size': np.random.choice(['small', 'medium', 'large'], N),
    'Age': np.random.choice(['young', 'middle-age', 'old'], N),
})

# target value distribution (e.g., in the final data set, we want 30% blue,
# 40% green, 30% yellow)
target_weights = {
    'Color': pd.Series({'blue': 30, 'green': 40, 'yellow': 30}),
    'Size': pd.Series({'small': 25, 'medium': 50, 'large': 25}),
    'Age': pd.Series({'young': 45, 'middle-age': 45, 'old': 10}),
}

먼저 사전 분포로 정규화합니다. 직관적으로 이전 값 빈도에 대한 목표 값 빈도 비율비례하는 확률로 샘플링하려고합니다 .

target_weights['Color'] /= df.Color.value_counts()
target_weights['Size'] /= df.Size.value_counts()
target_weights['Age'] /= df.Age.value_counts()

그런 다음 각 행에 대한 샘플링 확률을 계산합니다.

sample_prob = (
    df.Color.map(target_weights['Color']) *
    df.Size.map(target_weights['Size']) *
    df.Age.map(target_weights['Age'])
)
sample_prob.head()
0    3.354744e-10
1    6.184742e-09
2    3.390995e-10
3    3.396480e-10
4    6.647330e-10
dtype: float64

이 시점에서 df확률로 각 행을 샘플링 sample_prob하면 원하는 분포가 생성됩니다. 상수로 샘플링 확률을 스케일링해도 여전히 목표 분포가 생성됩니다. 가능한 가장 큰 샘플을 얻으려면 최대 샘플링 확률을 가진 행이 항상 샘플링 되는지 확인하십시오 .

sample_prob /= sample_prob.max()

그런 다음 해당 확률로 각 행을 샘플링합니다.

df_sampled = df.loc[np.random.random(df.shape[0]) < sample_prob]

배포가 올바른지 확인할 수 있습니다.

df_sampled.Color.value_counts(normalize=True)
green     0.400585
yellow    0.304341
blue      0.295074
Name: Color, dtype: float64
df_sampled.Size.value_counts(normalize=True)
medium    0.497805
large     0.253130
small     0.249065
Name: Size, dtype: float64

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

연결된 테이블의 값을 기반으로 여러 열을 업데이트하는 방법은 무엇입니까?

분류에서Dev

여러 조건을 기반으로 pandas 데이터 프레임 열 시리즈의 특정 셀 값을 변경하는 방법은 무엇입니까?

분류에서Dev

Postgres에서 두 배열의 값으로 여러 행을 업데이트하는 방법은 무엇입니까?

분류에서Dev

여러 열의 데이터를 기반으로 두 파일을 병합하는 방법은 무엇입니까?

분류에서Dev

일련의 if \ else 조건 및 일치하는 값을 기반으로 여러 데이터 프레임에서 정보를 가장 잘 추출하는 방법은 무엇입니까? (지도가 필요합니다!))

분류에서Dev

특정 조건이있는 하나의 열에 대한 집계를 기반으로 데이터 세트를 재구성하는 방법은 무엇입니까?

분류에서Dev

정적 필터링 값을 기반으로 재 선택 redux를 사용하여 필터링 된 목록을 생성하는 방법은 무엇입니까?

분류에서Dev

조건부 인수에서 계산 된 특정 분위수를 기반으로하는 값으로 열을 만드는 방법은 무엇입니까?

분류에서Dev

여러 열 값을 기반으로 다른 행 조합의 수를 얻는 방법은 무엇입니까?

분류에서Dev

데이터 값의 값을 jquery에서 정의 된 변수로 바꾸는 방법은 무엇입니까?

분류에서Dev

R의 함수가 지정된 마지막 변수를 기반으로 값을 업데이트하지 못하게하는 방법은 무엇입니까?

분류에서Dev

루비의 해시 배열로 값을 업데이트하는 효율적인 방법은 무엇입니까?

분류에서Dev

데이터 프레임 열에서 찾은 목록 값을 기반으로 여러 플래그 열을 만드는 방법은 무엇입니까?

분류에서Dev

기존 열의 값을 기반으로 새 열을 업데이트하는 방법은 무엇입니까?

분류에서Dev

여러 열의 특정 값을 다른 데이터 프레임의 해당 값으로 대체하는 방법은 무엇입니까?

분류에서Dev

특정 열 범위에 누락 된 값이있는 경우 데이터 프레임의 열 값을 업데이트하는 방법은 무엇입니까?

분류에서Dev

R의 여러 조건을 기반으로 새 데이터 세트를 만드는 방법은 무엇입니까?

분류에서Dev

R을 사용하여 기존 데이터 프레임에서 열의 중앙값으로 새 데이터 세트를 만드는 방법은 무엇입니까?

분류에서Dev

로드 된 데이터를 사용하여 ItemLoader에 새 값을 추가하는 방법은 무엇입니까?

분류에서Dev

다른 데이터 프레임의 행 이름 순서를 기반으로 한 데이터 프레임의 열 이름을 매핑하여 R에서 데이터 프레임을 정렬하는 방법은 무엇입니까?

분류에서Dev

파이썬의 다른 클래스에 정의 된 값을 사용하여 데이터를 전면으로 다시 전송하여 클래스 (db.Model 유형)를 정의하는 방법은 무엇입니까?

분류에서Dev

R의 기계 학습 및 Caret Package를 사용하여 새 데이터 세트에서 조정 된 SVM 모델을 테스트하는 방법은 무엇입니까?

분류에서Dev

Python에서 데이터 프레임의 각 행을 반복하여 계산 된 값을 새 열에 저장하는 방법은 무엇입니까?

분류에서Dev

Entity Framework의 데이터베이스에서 다른 열의 다른 값을 사용하여 한 열의 여러 값으로 데이터를 가져 오는 방법은 무엇입니까?

분류에서Dev

함수에서 여러 반환 값을 Pandas 데이터 프레임의 여러 열로 찾는 방법은 무엇입니까?

분류에서Dev

다른 열의 값을 기반으로 select 문에서 열의 값을 업데이트하는 방법은 무엇입니까?

분류에서Dev

R에서 루프를 작성하여 열 이름을 기반으로 여러 데이터 하위 집합을 만드는 방법은 무엇입니까?

분류에서Dev

R에서 데이터 프레임 열의 짝수 인덱스 값으로 각 홀수 인덱스 값의 비율을 얻는 방법은 무엇입니까?

분류에서Dev

이 데이터 세트에 대해 R의 회귀 방정식에서 시뮬레이션 된 값으로 변수의 결 측값을 대치하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    연결된 테이블의 값을 기반으로 여러 열을 업데이트하는 방법은 무엇입니까?

  2. 2

    여러 조건을 기반으로 pandas 데이터 프레임 열 시리즈의 특정 셀 값을 변경하는 방법은 무엇입니까?

  3. 3

    Postgres에서 두 배열의 값으로 여러 행을 업데이트하는 방법은 무엇입니까?

  4. 4

    여러 열의 데이터를 기반으로 두 파일을 병합하는 방법은 무엇입니까?

  5. 5

    일련의 if \ else 조건 및 일치하는 값을 기반으로 여러 데이터 프레임에서 정보를 가장 잘 추출하는 방법은 무엇입니까? (지도가 필요합니다!))

  6. 6

    특정 조건이있는 하나의 열에 대한 집계를 기반으로 데이터 세트를 재구성하는 방법은 무엇입니까?

  7. 7

    정적 필터링 값을 기반으로 재 선택 redux를 사용하여 필터링 된 목록을 생성하는 방법은 무엇입니까?

  8. 8

    조건부 인수에서 계산 된 특정 분위수를 기반으로하는 값으로 열을 만드는 방법은 무엇입니까?

  9. 9

    여러 열 값을 기반으로 다른 행 조합의 수를 얻는 방법은 무엇입니까?

  10. 10

    데이터 값의 값을 jquery에서 정의 된 변수로 바꾸는 방법은 무엇입니까?

  11. 11

    R의 함수가 지정된 마지막 변수를 기반으로 값을 업데이트하지 못하게하는 방법은 무엇입니까?

  12. 12

    루비의 해시 배열로 값을 업데이트하는 효율적인 방법은 무엇입니까?

  13. 13

    데이터 프레임 열에서 찾은 목록 값을 기반으로 여러 플래그 열을 만드는 방법은 무엇입니까?

  14. 14

    기존 열의 값을 기반으로 새 열을 업데이트하는 방법은 무엇입니까?

  15. 15

    여러 열의 특정 값을 다른 데이터 프레임의 해당 값으로 대체하는 방법은 무엇입니까?

  16. 16

    특정 열 범위에 누락 된 값이있는 경우 데이터 프레임의 열 값을 업데이트하는 방법은 무엇입니까?

  17. 17

    R의 여러 조건을 기반으로 새 데이터 세트를 만드는 방법은 무엇입니까?

  18. 18

    R을 사용하여 기존 데이터 프레임에서 열의 중앙값으로 새 데이터 세트를 만드는 방법은 무엇입니까?

  19. 19

    로드 된 데이터를 사용하여 ItemLoader에 새 값을 추가하는 방법은 무엇입니까?

  20. 20

    다른 데이터 프레임의 행 이름 순서를 기반으로 한 데이터 프레임의 열 이름을 매핑하여 R에서 데이터 프레임을 정렬하는 방법은 무엇입니까?

  21. 21

    파이썬의 다른 클래스에 정의 된 값을 사용하여 데이터를 전면으로 다시 전송하여 클래스 (db.Model 유형)를 정의하는 방법은 무엇입니까?

  22. 22

    R의 기계 학습 및 Caret Package를 사용하여 새 데이터 세트에서 조정 된 SVM 모델을 테스트하는 방법은 무엇입니까?

  23. 23

    Python에서 데이터 프레임의 각 행을 반복하여 계산 된 값을 새 열에 저장하는 방법은 무엇입니까?

  24. 24

    Entity Framework의 데이터베이스에서 다른 열의 다른 값을 사용하여 한 열의 여러 값으로 데이터를 가져 오는 방법은 무엇입니까?

  25. 25

    함수에서 여러 반환 값을 Pandas 데이터 프레임의 여러 열로 찾는 방법은 무엇입니까?

  26. 26

    다른 열의 값을 기반으로 select 문에서 열의 값을 업데이트하는 방법은 무엇입니까?

  27. 27

    R에서 루프를 작성하여 열 이름을 기반으로 여러 데이터 하위 집합을 만드는 방법은 무엇입니까?

  28. 28

    R에서 데이터 프레임 열의 짝수 인덱스 값으로 각 홀수 인덱스 값의 비율을 얻는 방법은 무엇입니까?

  29. 29

    이 데이터 세트에 대해 R의 회귀 방정식에서 시뮬레이션 된 값으로 변수의 결 측값을 대치하는 방법은 무엇입니까?

뜨겁다태그

보관