File size: 4,011 Bytes
9463232
bd820cc
 
 
9463232
293c1c2
 
 
 
 
 
9463232
 
bd820cc
 
 
9463232
 
 
 
 
 
 
 
 
 
 
 
 
bd820cc
293c1c2
 
 
 
 
 
 
 
 
9463232
bd820cc
9463232
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293c1c2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9463232
 
 
 
 
 
 
 
5449034
9463232
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import io
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
from sklearn.svm import SVR
from sklearn.ensemble import RandomForestRegressor

st.title("Webcam Color Detection Charting")

uploaded_file = st.file_uploader("Choose a CSV file", type="csv")

time_frame_options = [
    "All",
    "1 second",
    "5 seconds",
    "10 seconds",
    "30 seconds",
    "1 minute",
    "5 minutes",
    "10 minutes",
    "30 minutes",
    "60 minutes",
]
time_frame = st.selectbox("Data Time Frame", time_frame_options)


regression_options = [
    "None",
    "Linear Regression",
    "Polynomial Regression",
    "SVR (Support Vector Regression)",
    "Random Forest Regression",
]
regression_type = st.selectbox("Regression Analysis Type", regression_options)
if uploaded_file is not None:
    # CSV ํŒŒ์ผ ์ฝ๊ธฐ
    data = pd.read_csv(uploaded_file)

    # ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง
    if time_frame != "All":
        seconds = {
            "1 second": 1,
            "5 seconds": 5,
            "10 seconds": 10,
            "30 seconds": 30,
            "1 minute": 60,
            "5 minutes": 300,
            "10 minutes": 600,
            "30 minutes": 1800,
            "60 minutes": 3600,
        }
        data['timestamp'] = pd.to_datetime(data['timestamp'], unit='ms')
        data.set_index('timestamp', inplace=True)
        data = data.resample(f"{seconds[time_frame]}S").mean().dropna().reset_index()

    # ์ฐจํŠธ ์ƒ์„ฑ
    fig, axes = plt.subplots(2, 1, figsize=(10, 8))

    # RGB ์ฐจํŠธ
    axes[0].plot(data['R'], 'r', label='R')
    axes[0].plot(data['G'], 'g', label='G')
    axes[0].plot(data['B'], 'b', label='B')
    
# ํšŒ๊ท€ ๋ถ„์„ ์ˆ˜ํ–‰
X = np.arange(len(data)).reshape(-1, 1)

# ์„ ํ˜• ํšŒ๊ท€
if regression_type == "Linear Regression":
    model = LinearRegression()
    model.fit(X, data['R'])
    axes[0].plot(X, model.predict(X), 'r--')
    st.write(f"R: y = {model.coef_[0]} * x + {model.intercept_}")
    model.fit(X, data['G'])
    axes[0].plot(X, model.predict(X), 'g--')
    st.write(f"G: y = {model.coef_[0]} * x + {model.intercept_}")
    model.fit(X, data['B'])
    axes[0].plot(X, model.predict(X), 'b--')
    st.write(f"B: y = {model.coef_[0]} * x + {model.intercept_}")

# ๋‹คํ•ญ ํšŒ๊ท€
elif regression_type == "Polynomial Regression":
    polynomial_features = PolynomialFeatures(degree=2)
    model = make_pipeline(polynomial_features, LinearRegression())
    model.fit(X, data['R'])
    axes[0].plot(X, model.predict(X), 'r--')
    model.fit(X, data['G'])
    axes[0].plot(X, model.predict(X), 'g--')
    model.fit(X, data['B'])
    axes[0].plot(X, model.predict(X), 'b--')
    st.write("Polynomial regression equation is not easily representable.")

# SVR (Support Vector Regression)
elif regression_type == "SVR (Support Vector Regression)":
    model = SVR()
    model.fit(X, data['R'])
    axes[0].plot(X, model.predict(X), 'r--')
    model.fit(X, data['G'])
    axes[0].plot(X, model.predict(X), 'g--')
    model.fit(X, data['B'])
    axes[0].plot(X, model.predict(X), 'b--')
    st.write("SVR equation is not easily representable.")

# Random Forest Regression
elif regression_type == "Random Forest Regression":
    model = RandomForestRegressor()
    model.fit(X, data['R'])
    axes[0].plot(X, model.predict(X), 'r--')
    model.fit(X, data['G'])
    axes[0].plot(X, model.predict(X), 'g--')
    model.fit(X, data['B'])
    axes[0].plot(X, model.predict(X), 'b--')
    st.write("Random Forest equation is not easily representable.")
axes[0].legend(loc='upper right')
    axes[0].set_title('RGB Values')

    # HSV ์ฐจํŠธ
    axes[1].plot(data['H'], 'r', label='H')
    axes[1].plot(data['S'], 'g', label='S')
    axes[1].plot(data['V'], 'b', label='V')
    axes[1].legend(loc='upper right')
    axes[1].set_title('HSV Values')

    st.pyplot(fig)