🚀 창업핑 빅데이터 분석 프로젝트
-
생활이동 데이터를 활용한 빅데이터 분석 프로젝트
-
OD 데이터를 통한 창업 지역 종합적 추천 및 창업 타겟 추천
-
사업아이템 소유자의 창업지역 추천
-
창업지역 정보 제공 자동화 파이프라인 구축
| 이름 | 역할 |
|---|---|
| 김도현 | 데이터 분석 및 시각화, 전처리 및 군집화 지도 생성 |
| 도지현 | 데이터 분석 및 시각화, R언어 활용 지도 시각화 |
| 신정희 | 데이터 분산 처리, 웹 페이지 구현 |
| 조정민 | 데이터 전처리 및 모델 학습, 변수 추출 및 산출식 도출 |
| 데이터명 | 규모 | 주소 |
|---|---|---|
| SKT OD 생활이동 공개데이터 | 1억 5천만 | [링크]https://www.bigcontest.or.kr/ |
| 서울시 상권분석서비스(영역-상권배후지) | 1,072 | [링크]https://data.seoul.go.kr/dataList/OA-22159/S/1/datasetView.do |
| 서울시 상권분석서비스(길단위인구-상권배후지) | 23,979 | [링크]https://data.seoul.go.kr/dataList/OA-15582/S/1/datasetView.do |
| 서울시 상권분석서비스(추정매출-상권배후지) | 220,846 | [링크]https://data.seoul.go.kr/dataList/OA-15582/S/1/datasetView.do |
| 서울시 상권분석서비스(직장인구-상권배후지) | 21,801 | [링크]https://data.seoul.go.kr/dataList/OA-15570/S/1/datasetView.do |
| 속성 | 결측치 수 |
|---|---|
| origin_hdong_cd | 0 |
| dest_hdong_cd | 0 |
| date | 0 |
| start_time | 0 |
| end_time | 0 |
| gender | 0 |
| age | 0 |
| modal | 1,713 |
| origin_purpose | 87,842 |
| dest_purpose | 0 |
| od_dist_avg | 0 |
| od_duration_avg | 0 |
| od_cnts | 0 |
- 데이터의 결측치를 찾아본 결과 modal 속성에 1,713개, origin_purpose에 87,842개의 결측치를 발견
- 출발지 체류 목적코드(origin_purpose)는 도착지의 체류 목적코드(dest_purpose)가 귀가가 아니면 귀가 설정정
- 귀가라면 같은 출발지 행정동 코드에서 머문 목적의 빈도수가 가장 많은 값을 넣을 수 있음
- 이동수단(modal)은 같은 곳을 이동하면 이동수단도 비슷할 것으로 보고 가장 비슷한 시간대에 사람들이 무엇으로 이동했는지 확인하고 채움
- 상권배후지_코드를 기준으로 4개의 데이터셋 병합
- 영역-상권배후지
- 길단위인구-상권배후지
- 추정매출-상권배후지
- 직장인구-상권배후지1️⃣ 영역-상권배후지
| 컬럼명 | 설명 |
|---|---|
| 상권배후지_구분_코드 | 상권배후지의 고유 구분 코드 |
| 상권배후지_구분_코드_명 | 상권배후지 구분 코드의 이름 |
| 엑스좌표_값 | 상권배후지의 중심 X좌표 값 |
| 와이좌표_값 | 상권배후지의 중심 Y좌표 값 |
| 행정동_코드 | 상권배후지의 행정동 코드 |
| 행정동_코드_명 | 상권배후지의 행정동 이름 |
2️⃣ 길단위인구-상권배후지
| 컬럼명 | 설명 |
|---|---|
| 상권배후지_코드 | 상권배후지의 고유 코드 |
| 상권배후지_코드_명 | 상권배후지 코드 이름 |
| 총_유동인구_수 | 전체 유동인구 수 |
| 연령대_10_유동인구_수 | 10대 유동인구 수 |
| 연령대_20_유동인구_수 | 20대 유동인구 수 |
| 연령대_30_유동인구_수 | 30대 유동인구 수 |
| 연령대_40_유동인구_수 | 40대 유동인구 수 |
| 연령대_50_유동인구_수 | 50대 유동인구 수 |
| 연령대_60_이상_유동인구_수 | 60대 이상 유동인구 수 |
| 시간대_00_06_유동인구_수 | 00~06시 유동인구 수 |
| 시간대_06_11_유동인구_수 | 06~11시 유동인구 수 |
| 시간대_11_14_유동인구_수 | 11~14시 유동인구 수 |
| 시간대_14_17_유동인구_수 | 14~17시 유동인구 수 |
| 시간대_17_21_유동인구_수 | 17~21시 유동인구 수 |
| 시간대_21_24_유동인구_수 | 21~24시 유동인구 수 |
3️⃣ 추정매출-상권배후지
| 컬럼명 | 설명 |
|---|---|
| 상권배후지_코드 | 상권배후지의 고유 코드 |
| 상권배후지_코드_명 | 상권배후지 코드 이름 |
| 당월_매출_금액 | 당월 총 매출 금액 |
| 시간대_00~06_매출_금액 | 00~06시 매출 금액 |
| 시간대_06~11_매출_금액 | 06~11시 매출 금액 |
| 시간대_11~14_매출_금액 | 11~14시 매출 금액 |
| 시간대_14~17_매출_금액 | 14~17시 매출 금액 |
| 시간대_17~21_매출_금액 | 17~21시 매출 금액 |
| 시간대_21~24_매출_금액 | 21~24시 매출 금액 |
4️⃣ 직장인구-상권배후지
| 컬럼명 | 설명 |
|---|---|
| 총_직장_인구_수 | 전체 직장인구 수 |
| 남성_직장_인구_수 | 남성 직장인구 수 |
| 여성_직장_인구_수 | 여성 직장인구 수 |
| 연령대_10_직장_인구_수 | 10대 직장인구 수 |
| 연령대_20_직장_인구_수 | 20대 직장인구 수 |
| 연령대_30_직장_인구_수 | 30대 직장인구 수 |
| 연령대_40_직장_인구_수 | 40대 직장인구 수 |
| 연령대_50_직장_인구_수 | 50대 직장인구 수 |
| 연령대_60_이상_직장_인구_수 | 60대 이상 직장인구 수 |
| 남성연령대_10_직장_인구_수 | 10대 남성 직장인구 수 |
| 남성연령대_20_직장_인구_수 | 20대 남성 직장인구 수 |
| 남성연령대_30_직장_인구_수 | 30대 남성 직장인구 수 |
| 남성연령대_40_직장_인구_수 | 40대 남성 직장인구 수 |
| 남성연령대_50_직장_인구_수 | 50대 남성 직장인구 수 |
| 남성연령대_60_이상_직장_인구_수 | 60대 이상 남성 직장인구 수 |
| 여성연령대_10_직장_인구_수 | 10대 여성 직장인구 수 |
| 여성연령대_20_직장_인구_수 | 20대 여성 직장인구 수 |
| 여성연령대_30_직장_인구_수 | 30대 여성 직장인구 수 |
| 여성연령대_40_직장_인구_수 | 40대 여성 직장인구 수 |
| 여성연령대_50_직장_인구_수 | 50대 여성 직장인구 수 |
| 여성연령대_60_이상_직장_인구_수 | 60대 이상 여성 직장인구 수 |
hdfs dfs -mkdir -p /input
hdfs dfs -put /data/* /inputhdfs dfs -ls /inputhttp://localhost:9870/explorer.html## SparkSession 생성
spark = SparkSession.builder \
.appName("HDFS and Local Save Example") \
.getOrCreate()
# HDFS에서 데이터 읽기
input_path = "hdfs://namenode:9000/input/*/*.csv"
df = spark.read.csv(input_path, header=True, inferSchema=True)spark-submit /home/hadoop/cal.pyspark-submit /home/hadoop/cal.py- 다양한 변수와 복잡한 관계를 효과적으로 다룰 수 있음
- 비선형적인 관계를 모델링하는 데 유리
- 입력변수가 나이, 성별, 목적, 지역의 비선형적인 관계이므로 랜덤포레스트가 적합함
랜덤 포레스트 회귀 모델을 사용하여 데이터를 학습하고, 예측값과 실제값 간의 관계를 분석합니다. 데이터 로드, 전처리, 학습, 평가, 시각화까지의 전체 과정을 다룹니다.
| Model | Acc | Weight |
|---|---|---|
| 의사 결정 트리 | string |
Required. Your API key |









