장르: 애초에 역경을 딛고 이룩하는 숭고한 사랑이란 없다. 그 역경 자체가 사랑이다.
프로그램 특징: 그 곳에서 살아남는 사랑이 어떤 모습으로 걸어오는지 기다려 보고 싶다.
-
[데이터분석가가반드시알아야할모든것] 10. 데이터 탐색과 시각화0724분학습 목표: 탐색적 데이터 분석, 상관성 분석, 데이터 시각화> 데이터 형태와 분포, 이상치와 결측치 등을 확인데이터 분석에서 ML 모델의 성능보다 데이터를 올바르게 파악하고 효과적으로 가공하는 것이 더 중요하다. 그 과정에서 EDA 와 데이터 시각화는 구별해야 한다. 10.1 탐색적 데이터 분석: EDA기술 통계와 데이터 시각화를 통한 데이터 특성 파악10.1.1 엑셀을 활용한 EDA10.1.2 탐색적 데이터 분석 실습# 필요한 패키지 설치# 데이터 불러오기# 각 컬럼의 속성 및 결측치 확인 df.info()# 각 컬럼의 통계치 확인 df. describe() //describe는 수치형 데이터에만 적용# 각 컬럼의 왜도 확인 df.skew()//skew도 numeric 데이터에만 적용# numeri..
-
[프로젝트로 배우는 데이터사이언스] 분류모델 기초 1.1 사이킷런과 머신러닝0722분프로젝트로 배우는 데이터사이언스부스트코스 무료 강의www.boostcourse.org 학습 목표: Scikit-learn 과 Machine Learning 이해하기알고리즘을 알면 데이터 예측이 더 정확해지지만, 조리 도구 관점에서 요리 도구의 매커니즘을 이해하기 보단 도구를 활용해 어떤 걸 만들 수 있는지 배워보는 시간이 되자. Scikit-learn파이썬 머신러닝 라이브러리 scikit-learn: machine learning in Python — scikit-learn 1.5.1 documentationComparing, validating and choosing parameters and models. Applications: Improved accuracy via parameter tuning...
-
딥러닝 개요0718분Deep LearningNeural networks Machine LearnngData-driven approah Artificial InteligenceMimic human intelligence 딥러닝은 머신러닝의 한 방법으로, 인공신경망을 기반으로 심층적으로 학습하는 형태Image/Video (Computer Vision), Text/Speech2Text(Natural Langauge Processing) 분야에서 두각을 나타내는 심층신경망Key ComponentsDataIt depends on the type of the problem to solvethe model learn from dataModelHow to transfrom dataLoss functionA proxy of what w..
-
[머신러닝] 오렌지3로 분류모델 학습하기0716분데이터 셋 - 캐글 Bank Customer Churn무엇이 고객 이탈에 영향을 미치는 지 살펴보고 고객 이탈 유무 판단하기 분류에는 이진 분류와 다중 분류가 있다. 이진 분류다중 분류레이블 두 개레이블 세 개 이상스팸 메일 분류손글씨(0~9)로 분류주요 알고리즘Logistic RegressionkNN분류모델 성능평가지표AUC(Area Under ROC Curve)CA(Classification Accuracy)F1-scoreMCC알고리즘Logistic Regression : 데이터가 어느 범주에 속하는지 [0,1]로 예측Regularization ridge regression , Lasso regressionLogistic vs. LinearLinear regression 의 결과 y에 Sigmoid ..
-
[머신러닝] 오렌지3로 회귀모델 실습하기0705분프로그래머스 강좌(오선영 강사님)를 이용해 머신러닝 감을 잡아보고자 한다. 우리는 우리가 말할 수 있는 것보다 더 많이 알고 있다. by M.Polanyi기계를 가르치기 위해서 기계가 스스로 깨달아야 하는 포인트가 있다. 그걸 위해 많은 학습 데이터로 공부시켜서 모델을 평가한다. (인간과 별반 다르지 않다는 사실이 놀랍다.) 기계학습지도학습 Supervised Learning회귀(Regression)분류(Classification)비지도학습 Unsupervised Learning군집(Clustering)연관분석(Association)강화학습 Reinforcement Learning지도 vs비지도학습 데이터에 정답지가 있느냐 없느냐의 차이Classification과 Clustering의 차이는 Superv..
학습 목표: 탐색적 데이터 분석, 상관성 분석, 데이터 시각화
> 데이터 형태와 분포, 이상치와 결측치 등을 확인
데이터 분석에서 ML 모델의 성능보다 데이터를 올바르게 파악하고 효과적으로 가공하는 것이 더 중요하다.
그 과정에서 EDA 와 데이터 시각화는 구별해야 한다.
10.1 탐색적 데이터 분석: EDA
기술 통계와 데이터 시각화를 통한 데이터 특성 파악
10.1.1 엑셀을 활용한 EDA
10.1.2 탐색적 데이터 분석 실습
# 필요한 패키지 설치
# 데이터 불러오기
# 각 컬럼의 속성 및 결측치 확인
df.info()
# 각 컬럼의 통계치 확인
df. describe()
//describe는 수치형 데이터에만 적용
# 각 컬럼의 왜도 확인
df.skew()
//skew도 numeric 데이터에만 적용
# numeric 타입의 컬럼만 선택
# 각 numeric 컬럼의 왜도 계산
10.2 공분산과 상관성 분석
변수들의 특성을 파악한 뒤에 변수 간 관계를 살펴본다.
- x y 관계 - 입력 변수와 target의 관계
- x 끼리의 관계
Multicollinearity 다중공선성: 회귀분석에서 독립변수들 간에 강한 상관관계가 나타나는 것
Multicollinearity를 방지하고자 함이 목적이다.
이를 위해 Covariance(공분산)과 Correaltion coefficient(상관계수)을 이용한다.
- 각 변수의 변동이 얼마나 닮았는지를 표현하는 두 개의 다른 계산식
10.2.1 Covariance 공분산
두 분산의 관계를 뜻한다: 두 변수의 공통적인 분산의 정도
- 분산: 한 변수의 각각의 데이터가 퍼진 정도
10.2.2 Correlation coefficient 상관계수
공분산은 두 변수의 상관관계를 표현함에 한계가 있다. 각 변수 간의 다른 척도 기준이 수치화에 그대로 반영되어 공분산 값이 지니는 크기가 상관성의 정도를 나타내지 못한다. 이를 보완하기 위해 상관계수를 이용한다.
- 공분산 값을 normalize하여 상관성을 비교하기도 한다.
- normalize: 변수 각각의 표준편차 값으로 나누는 것
Pearson corr
X1과 X2가 함께 변하는 정도(공분산)을 X1과 X2가 변하는 전체 정도로 나눈다.
- 함께 변하는 정도는 전체가 변하는 총량을 초과할 수 없기 때문에 [-1, 1]로 나타난다.
- 상관계수는 예상치의 정확도가 높아진다는 개념이다.
분산의 관계성이 같다면, 기울기가 크든 작든 상관계수는 같다. 산점도의 기울기와 상관계수는 관련이 없다.
10.2.3 공분산과 상관성 분석 실습
# 산점도 행렬 시각화
sns.pairplot(df, diag_kind = 'kde') // 동일한 변수의 산점도를 분포로 표현
plt.show()
# 동일 변수는 산점도(상관계수 1)이 일직선으로 나오기 때문에 분포도로 변환해 정보량을 늘린다.
# 피어슨 상관계수 확인
df.corr(method = 'pearson')
# 중복 제거 히트맵 시각화
// 상관성의 높고 낮음 파악 - 가독성 높이기
# 매트릭스의 우측 상단을 모두 True로, 하단을 False로 변환
np.triu(np.ones_like(df.corr()))
# True/False mask 배열로 변환
mask = np. triu(np.ones_like(df.corr(), dtype = np.bool))
# 히트맵 그래프 생성
fig, ax = plt.subplots(figsize=(15,10))
sns.heatmap(df.corr(), mask = mask,
vmin = -1, vmax = 1,
annot = True,
cmap = "~", cbar = Ture)
ax.set_title("~", pad = 15)
10.3 시간 시각화
시점 요소가 있는 데이터는 시계열(Time series) 형태로 시간의 흐름을 표현할 수 있다.
- '연속형' 시간 간격의 밀도가 높을 때 '연속형' 선 그래프를 이용한다.
- 추세선: Moving averages ; 데이터를 연속적인 그룹으로 묶어 평균을 구한다.
- '분절형' 시간 간격 밀도가 낮거나 값의 상대적인 차이를 표시하는 '분절형'
10.3.1 시간 시각화 실습
# 30일 이동평균 생성
df_line['Month'] = df_line['Sales'].rolling(window = 30).mean()
10.4 비교 시각화
Heatmap chart: 그룹별 요소가 많아질 때 사용한다.
- row: 그룹, column: 요소
- 그리는 방법이 까다롭기 때문에 데이터 구조와 확인하고자 하는 목적을 정확히 파악해야 한다.
- 예시: 직급별 연간 독서량(권), 직업군 별 건강(혈당, 맥박, 체지방량) 등
Radar chart(방사형 차트)
Parallel coordinates(평행 좌표 그래프)
10.4.1 비교 시각화 실습
# 히트맵 시각화 v1
fig = plt.figure(figsize(8,8))
fig.set_facecolor('white')
plt.pcolor(df1.values)
# x,y축 칼럼과 label 설정
plt.xticks(range(len(df1.columns)), df1.columns)
plt.yticks(range(len(df1.index)), df1.index)
plt.xlabel('~', fontsize = 10)
plt.ylabel( )
plt.colorbar() // 색이 해당하는 수치
plt.show()
10.5 분포 시각화
데이터를 처음 받았을 때 각 변수가 어떤 요소로, 어느 비율로 구성되어 있는 지 파악하는 중요한 방법이다.
- quantitative
- histogram - bin(가로)과 density(세로)로 구성
- 구간이 너무 많으면 보기 어렵고 구간이 너무 적으면 정보 손실이 크기 때문에 20개 정도로 시작한다.
- qualitative
- pie chart > donut chart
- treemap
구성 요소가 복잡할 때, 구성 요소의 비율에 따라 작은 사각형을 쪼개 포함하도록 표현해 위계구조를 표현한다. - waffle chart
위계구조를 표현하지는 못한다.
10.5.1 분포 시각화 실습
# 두 개 이상 히스토그램 시각화
# 각각의 데이터셋 생성
# 10 단위로 히스토그램 시각화
plt.hist(df1_1, color = ' ', alpha = 0.2, bins = 10, label = ' ', density = True)
plt.hist(df1_2, color = ' ', alpha = 0.2, bins = 10, label = ' ', density = True)
// alpha 로 투명도를 조절해 겹치는 부분을 표현한다.
plt.legend() // 범례
plt.show()
# 도넛차트 시각화
// 파이차트에 차트 형태 옵션을 추가해 도넛 형태로 조정한다.
# 파이차트 시각화
fig = plt.figure(figsize=(,)) # 캔버스 생성
fig.set_facecolor('') # 캔버스 배경색 설정
ax = fig.add_subplot() # 프레임 생성
# 파이차트 출력
# 도넛차트 시각화를 위한 옵션 설정
wedgeprops = { 'width' : 0.7, 'edgecolor': 'w', 'linewidth': 5} // width가 핵심이다
plt.pie(,)
plt.show()
10.6 관계 시각화
Scatter plot : 두 개의 연속형 변수 간의 관계를 나타낼 수 있다.
- 극단치를 제거하고 그려야 시각화 효율이 높다.
- 겹치는 데이터의 정보 확인을 위해 alpha 값 조정이 필요하다.
Bubble chart : 두 개 이상 변수의 상관관계를 확인할 수 있다.
- 그러나 세 가지 요소보다 늘어나면 한 번에 제공되는 정보가 너무 많아 차트 해석이 어려워진다.
버블 차트를 해석할 때 원의 지름이 아닌 '원의 면적'을 통해 크기를 판단하도록 주의한다.
10.6.1 관계 시각화 실습
# 기본 산점도 시각화
plt.scatter(df[' '], df[' '], s=50, alpha = 0.4)
// alpha 값 조정으로 겹치는 부분을 효과적으로 확인
plt.show()
# 산점도에 회귀선 추가와 label 추가
ax = sns.Implot(x=' ', y = ' ', data = df)
? Implot(x = ' ', y = ' ') 이랑 plt.xlabel, plt.ylabel 의 차이가 뭐징?
10.7 공간 시각화
실제 지도 위에 데이터를 표현할 수 있다. 거시적에서 미시적으로 진행되는 분석 방향과 같이 스토리라인을 잡고 시각화 적용하는 것이 좋다.
- Dot map
- Bubble map
- Choropleth map
- Connection map
10.7.1 공간 시각화 실습
# 서울 지도에 스타벅스 지점수 도드맵 시각화
m = folium.Map(location = [97.541, 126.986], zoom_start = 12, width ="%100", height = "%100")
location = list(zip(df.latitude, df.longitude))
for i in range(len(locations)):
folium.CircleMarker(location = locations[i], radius = 1).add_to(m) // CircleMarker로 버블 표현
m
# 버블맵 시각화
# 지점 수 집계 후 중심점 산출 // 버블맵은 특정 지점에 지정된 수치의 값을 표현하기 때문에 기준점이 필요하다.
# 구의 중심 지점 만들기
df_m = df.groupby('구의이름').agg({'latitude':'mean',
'longitude':'mean',
'name':'count'}).reset_index()
df_m.heat()
10.8 박스 플롯
양적 척도 데이터의 분포 및 편향성, 평균과 중앙값 등 다양한 수치를 보기 쉽게 정리한다.
- 데이터 분포도를 함께 떠올리는 습관이 필요하다.
10.8.1 박스 플롯 실습
# 가로세로 box plot
plt.figure(figsize = ())
sns.boxplot(x = ' ', data = df) // y로 바꾸면 가로 box plot이 된다
plt.show()
# 추가 옵션
# 평균 표시
sns.boxplot(x="State", y="Profit",
showmeans= True,
boxprops = {'facecolor': 'None'}, data = df)
// 데이터 포인트 개별 표시
sns.stripplot(x='State', y='Profit',
data = df, jitter = True, marker='o',
alpha = 0.5, color = 'black')
plt.show()
'Data Science' 카테고리의 다른 글
[Excel] VBA로 데이터 자동화하기 (1) | 2025.03.04 |
---|---|
파이썬 가상환경설정 (0) | 2025.01.07 |
[파이썬으로 시작하는 데이터 사이언스] 파일 경로 설정 (3) | 2024.08.06 |
데이터 분석에 필요한 파이썬 (1) | 2024.07.31 |
[프로젝트로 배우는 데이터사이언스] 분류모델 기초 1.1 사이킷런과 머신러닝 (3) | 2024.07.22 |