Category Archives: Machine Learning

[Python] 트래픽 데이터(예제)로 Regression Graph 만들기

Regression analysis는 일정한 데이터들이 주어지고 임의의 값이 주어졌을 때

그 값을 추론해보는 분석이다.

가장 기초적인 Machine Learning 이기도 하다.

 

import scipy as sp
import matplotlib.pyplot as plt

# 데이터를 csv로 부터 읽어온다. 구분자는 줄바꿈이다.
data = sp.genfromtxt("data/web_traffic.tsv", delimiter="\t");

# x열은 시간 , y열은 트래픽 데이터다.
x = data[:, 0]
y = data[:, 1]

# 그중에서 y가 숫자인것만 (공백제거) 추출한다.
x = x[~sp.isnan(y)]
y = y[~sp.isnan(y)]

plt.scatter(x, y, s=10)
plt.title("Web traffic over the last month")
plt.xlabel("Time")
plt.ylabel("Hits/Hour")
# 주/시간별로 데이터를 보여줄 거다.
plt.xticks([w * 7 * 24 for w in range(10)], ["week %i" % w for w in range(10)])
plt.autoscale(tight=True)
plt.grid(True, linestyle='-', color='0.75')

# 오차계산 함수
def error(f, x, y):
    return sp.sum((f(x) - y) ** 2)


# polyfit은 적절한 데이터에 따라 적합한 모델을 도출해준다.
fx = sp.linspace(0, x[-1], 1000)

def draw_regression_graph(i):
    for num in i:
        fp = sp.polyfit(x, y, num)
        fd = sp.poly1d(fp)
        plt.plot(fx, fd(fx), linewidth=2, label="d=%i" % num)
        plt.legend(loc='upper left')
        # plt.legend(["d" % i], loc="upper left")
        # plt.legend(handles=["d=%i" % num], loc=1)

draw_regression_graph([1, 5, 10, 50])


plt.show()

 

차수가 올라갈수록 정확한 모델을 보여주는 듯 싶다.

Machine_Learning1

그러나 이게 최선의 모델일까?