Raspberry pi 5 ์ค์
๐ฝ๏ธ Raspberry pi 5 ์ค์
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด 5 ์ํค๊ณ ํ๊ฒฝ์ค์ ์ ์ ๋ฆฌํ๊ธฐ ์ํด ๊ธ์ ๋์ ์ฌ๋ณธ๋ค.
๐จ ๋์ฉ๋ ํ์ผ ์ฒ๋ฆฌ๊ฐ Colab์์ ์๋๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ณ .. ๋ก์ปฌ์์ ๋๋ ธ๋ค. ํ์ด์ฌ์ผ๋ก!
๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ, ๋ฐ์ดํฐ ํฉ์น๊ธฐ (Data Preprocessing, Data Merging)
๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๋ ํ์ผ ๋ช
์์ ์ด๋ค ํํ์ธ์ง ๋ค ๋ชจ์๋จ์ ํ
๋ฐ, ์ด๋ฅผ ํ ๊ฐ์ ๋ฐ์ดํฐ๋ก ํฉ์น๋ ๊ณผ์ ์ด๋ค.
๋จผ์ ๋น์ง๋ ํ์ต, PCA๋ฅผ ์จ๋ณด๊ธฐ ์ํด์ ๋ฐ์ดํฐ๋ฅผ ํฉ์ณ๋ณด์.
import pandas as pd
import os
from sklearn.decomposition import PCA
# ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋น ๋ฐ์ดํฐํ๋ ์ ์์ฑ
df_all = pd.DataFrame()
# ์์
ํ์ผ ์ฝ๊ธฐ
df_info = pd.read_excel('/Volumes/{์ด์๋ํ์ ๋ณดํ์ผ}.xlsx')
# ๋ชจ๋ csv ํ์ผ์ ๋ํด ๋ฐ๋ณต
for filename in os.listdir('/Volumes/Data'):
if filename.endswith('.csv'):
# CSV ํ์ผ ์ฝ๊ธฐ
df_data = pd.read_csv(f'/Volumes/Data/{filename}', header=None)
# ์ฒซ ํ์ ์์
ํ์ผ์ ๋ฐ์ดํฐ ์ถ๊ฐ
df_data.columns = df_info.columns.tolist()
# ํ์ ์๋ ์ด ์ญ์
df_data = df_data.drop(['ํ์์๋ ์์ฑ ์ญ์ '], axis=1)
# "Time Data"๊ฐ ๋ค์ด๊ฐ ์ด ์ ๊ฑฐ
time_columns = [col for col in df_data.columns if 'Time Data' in col]
df_data = df_data.drop(columns=time_columns)
# ๋ฐ์ดํฐ ์ถ๋ ฅ
print(df_data.head(3))
# df_data๋ฅผ df_all์ ๋ถ์ด๊ธฐ
df_all = pd.concat([df_all, df_data])
# ๋ฐ์ดํฐ ์ถ๋ ฅ
# PCA๋ฅผ ์ ์ฉํ์ฌ ์ฐจ์ ์ถ์, 99%์ ๋ถ์ฐ์ ์ ์งํ๋๋ก ํจ = 99%์ ์ ๋ณด๋ฅผ ์ ์งํ๋๋ก ํจ
# whiten=True๋ก ์ค์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทํ(Normalization)ํจ
pca = PCA(n_components=0.99, whiten=True)
df_all_pca = pca.fit_transform(df_all)
# PCA ๊ฒฐ๊ณผ์ ์ค๋ช
๋ ฅ ์ถ๋ ฅ
explained_variance_ratio = pca.explained_variance_ratio_
print("PCA ๊ฒฐ๊ณผ์ ์ค๋ช
๋ ฅ:")
print(explained_variance_ratio)
๋น์ง๋ ํ์ต์ ์ํด PCA๋ฅผ ์ ์ฉํ์๋ค.
PCA ๊ฒฐ๊ณผ์ ์ค๋ช
๋ ฅ:
[0.78608101 0.09318127 0.0513852 0.03209065 0.01289721 0.00484044
0.00421308 0.0034297 0.00244788]
๋ฐ์ดํฐ ์๊ฐํ (Data Visualization)
๋ฐ์ดํฐ ์๊ฐํ๊ฐ ๋จผ์ ์ธ ๊ฒ์ ๊นจ๋ฌ์๋ค. ์๊ฐํ๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ๋๋ฆด ๋ ์ ์ด๋ฐ ๋ฐ์ดํฐ๊ฐ ๋์ ๋ถ์ฐ์ ๊ฐ์ง๋์ง.. ์๋๋ฉด ์ ์๋์ค๋์ง, ์ค๋ช
ํ ์ ๊ฐ ์์๋ค. ๊ทธ๋์ ๋จผ์ ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ํ๋ ค๊ณ ํ๋ค.
16GB ๋๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํ๋ฅผ ํ๋ ๊ฒ์ ๋ง๋ ์๋๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ด๋ป๊ฒ ํ๋ฉด ์ค์ผ๊น?, ์ด๋ป๊ฒ ํ๋ฉด ํจ์จ์ ์ผ๋ก ์๊ฐ์