Hive 표본 추출 통계
알고리즘 에서 표본 추출 이 필요 할 수 있 습 니 다.Hive 로 무 작위 표본 추출 에서 간단 한 무 작위, 시스템 과 층 별 표본 추출 방식 을 실 현 했 는데 표본 추출의 개념 은 중학교 데이터 접촉 이라는 것 을 기억한다
사실 이론 이 필요 없 을 때 가 많 고, 생각해 도 생각 할 수 있 지만, 그래도 총괄 해 보 자.
0. 테스트 표:
drop table songpo_test;
create table if not exists songpo_test
(
refund_id string,
user_id string,
cat_id string,
cat2_id string,
org_id string,
gmt_create string
)
partitioned by(pt string)
row format delimited
fields terminated by ','
lines terminated by '
' STORED AS SEQUENCEFILE;
1. 간단 한 무 작위 표본 추출 (rand () 은 표 에서 무 작위 로 표 시 를 하고 정렬 하 며 100 개의 사용자 데 이 터 를 무 작위 로 추출 합 니 다.
단계 1). 줄 마다 같은 표 시 를 기록 합 니 다.
2). 정렬, 100 위 권
sql:
select *
from(
select user_id,flag from (select user_id,'1' as flag from songpo_test) x
distribute by user_id sort by user_id,flag desc
)a
where row_number(user_id)<=100;
2. 시스템 샘플링 mod, rand () 는 userrid 에 따라 모델 을 추출 하고 5 조로 나 누 어 각 조 에서 100 명의 사용 자 를 무 작위 로 추출 하여 다음 과 같이 실현 한다.
1). userid, 모형 추출, mod 획득numd
2). mod 에서num 그룹 에서 무 작위 정렬,
3). 각 조 에서 20 개 를 꺼낸다
sql:
select *
from(
select refund_id,user_id,mod_num,rank_num from (select refund_id,user_id,cast(10+rand()*100 as double) rank_num,user_id%5 as mod_num from songpo_test)
distribute by mod_num sort by mod_num,rank_num desc
)a
where row_number(mod_num)<=20;
3. 분 층 표본 추출 각 그룹의 기록 수 에 따라 층 을 나 누 어 표본 을 추출 하 다.만약 추출 이 필요 하 다 면 EXTRANUM 게이지 레코드
1). 각 구역 을 계산 할 때 기록 항목 의 수 를 뽑 아야 한다.
2). mod 에서num 그룹 에서 무 작위 정렬,
3). 각 그룹 에서 cat 꺼 내기extra_num 막대
drop table test_data_extra_indexs;
create table test_data_extra_indexs as
select a.cat_id,cat_num,all_num,cat_num/all_num as extra_lv,(cat_num/all_num)*'EXTRA_NUM' as cat_extra_num,c.refund_id,c.user_id,c.org_id from
(select cat_id,count(1) as cat_num,'1' as key from songpo_test group by cat_id) a
join
(select '1' as key,count(1) as all_num from songpo_test) b
on a.key=b.key
join
(select * from songpo_test) c
on a.cat_id=c.cat_id;
select *
from(
select refund_id,user_id,cat_id,mod_num,rank_num from
select refund_id,user_id,cat_id,cast(10+rand()*100 as double) rank_num,user_id%5 as mod_num,cat_extra_num from(
(select refund_id,user_id,cat_id,cast(10+rand()*100 as double) rank_num,user_id%5 as mod_num from test_data_extra_indexs) x
)
distribute by mod_num sort by mod_num,rank_num desc
)a
where row_number(mod_num)<=20;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.