Streamlit을 활용한 아이리스 데이터 시각화와 머신러닝 분석 ( 상관관계 분석 포함 )

2024. 3. 4. 09:14it

반응형

Streamlit은 파이썬으로 데이터 과학 및 머신러닝 모델을 웹 애플리케이션으로 변환하기 위한 간단하고 빠른 방법을 제공합니다. 이 블로그 글에서는 Streamlit의 기능과 장점에 대해 알아보고, 관련 샘플 코드를 제공하겠습니다.

 

 

1. Streamlit 소개
Streamlit은 파이썬으로 작성된 간단한 코드로 데이터 시각화 및 웹 애플리케이션을 빠르게 만들 수 있는 오픈 소스 라이브러리입니다. 주요 특징은 다음과 같습니다.

간단한 문법: Streamlit은 사용자 친화적인 문법을 제공하여 개발자가 빠르게 웹 애플리케이션을 구축할 수 있습니다.
자동 재로딩: 코드를 수정할 때마다 자동으로 애플리케이션이 다시로드되어 빠른 개발을 돕습니다.
다양한 컴포넌트: 텍스트, 그래프, 위젯 등 다양한 컴포넌트를 제공하여 사용자 인터페이스를 쉽게 구성할 수 있습니다.

 

2. Streamlit의 장점

 

728x90


Streamlit은 다른 파이썬 GUI 라이브러리보다 다음과 같은 장점을 가지고 있습니다.

간단한 문법과 사용성: Streamlit은 간단한 파이썬 스크립트만으로도 웹 애플리케이션을 구현할 수 있어, 개발 시간을 단축시킵니다.
빠른 개발과 배포: 코드 수정 후 자동으로 리로드되는 기능과 함께, Streamlit은 빠른 개발과 테스트를 가능하게 합니다.
상호작용 가능한 컴포넌트: 사용자가 데이터를 시각화하고 조작할 수 있는 다양한 컴포넌트를 제공하여 상호작용성을 높입니다

 

3. 예제

3-1. iris데이터 시각화

import streamlit as st
import seaborn as sns
from sklearn.datasets import load_iris

# 데이터 불러오기
iris = load_iris()
df = sns.load_dataset('iris')

# 시각화
st.title('아이리스 데이터 시각화')
st.write(df)
st.bar_chart(df.groupby('species').size())

 

 

3-2. iris 데이터 상관분석 

 

반응형

 

import streamlit as st
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
# import warnings
# warnings.filterwarnings("ignore", category=UserWarning)
# 경고 메시지 비활성화
st.set_option('deprecation.showPyplotGlobalUse', False)

# 데이터 불러오기
iris = load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)

# 상관관계 계산
corr = df.corr()

# 시각화
st.title('아이리스 데이터 상관관계 분석')

# 히트맵 시각화
plt.figure(figsize=(8, 6))
sns.heatmap(corr, annot=True, cmap='coolwarm', linewidths=0.5)
st.pyplot()

# 상관관계 표시
st.subheader('상관관계 테이블')
st.write(corr)

 

3-3 iris 데이터 회귀분석

import streamlit as st
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier

# 데이터 로드
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = iris.target

# 사용자 입력 받기
st.sidebar.title('사용자 입력')
sepal_length = st.sidebar.slider('꽃받침 길이', float(X['sepal length (cm)'].min()), float(X['sepal length (cm)'].max()))
sepal_width = st.sidebar.slider('꽃받침 너비', float(X['sepal width (cm)'].min()), float(X['sepal width (cm)'].max()))
petal_length = st.sidebar.slider('꽃잎 길이', float(X['petal length (cm)'].min()), float(X['petal length (cm)'].max()))
petal_width = st.sidebar.slider('꽃잎 너비', float(X['petal width (cm)'].min()), float(X['petal width (cm)'].max()))

# 모델 학습
model = RandomForestClassifier()
model.fit(X, y)

# 예측
prediction = model.predict([[sepal_length, sepal_width, petal_length, petal_width]])

# 결과 출력
st.title('아이리스 품종 예측')
st.write(f'예측된 품종: {iris.target_names[prediction[0]]}')

 

이렇게 Streamlit을 사용하면 간단한 파이썬 코드 몇 줄만으로도 멋진 GUI 애플리케이션을 만들 수 있습니다. 시각화, 데이터 조작, 머신러닝 모델 배포 등 다양한 용도로 활용할 수 있으며, 빠른 개발과 배포 과정을 통해 생산성을 크게 향상시킬 수 있습니다. Streamlit은 데이터 엔지니어 및 데이터 과학자들에게 매우 유용한 도구입니다.

반응형