Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from sklearn import metrics
- np_test_x = np.arange(24)
- np_test_y = dataset_T[5].values
- print("hours\n", np_test_x)
- print("traffic\n", np_test_y)
- np_pred_y = np.polyval(poly_6, np_test_x)
- print("predicted traffic\n", np_pred_y)
- r_square = metrics.r2_score(np_test_y, np_pred_y)
- print("R^2={}".format(r_square))
- # 2차원 이상의 비선형 변수를 PolynomialFeatures 함수를 통해 선형으로 분해하여 LinearRegesssion 을 사용하는 방법
- from sklearn.preprocessing import PolynomialFeatures
- from sklearn.linear_model import LinearRegression
- import numpy as np
- import matplotlib.pyplot as plt
- # 시간 변수: 0 ~ 23
- np_data_hours = np.tile([int(hour) for hour in dataset.columns], dataset.values.shape[0]).reshape(-1, 1)
- # 낮밤 변수: 0 (0~11), 1(12~23)
- np_data_days = np.tile([int(int(hour) < 12) for hour in dataset.columns], dataset.values.shape[0]).reshape(-1, 1)
- np_data_xs = np.concatenate((np_data_hours, np_data_days), axis = 1)
- np_data_ys = dataset.values.reshape(-1, 1)
- print(np_data_xs.shape)
- print(np_data_ys.shape)
- # train 과 test 나눔
- idx = 120
- np_train_xs = np_data_xs[:idx]
- np_train_ys = np_data_ys[:idx]
- np_test_xs = np_data_xs[idx:]
- np_test_ys = np_data_ys[idx:]
- print(np_train_xs.shape)
- print(np_train_ys.shape)
- print(np_test_xs.shape)
- print(np_test_ys.shape)
- np_test_xlabels = np_test_xs[:, 0]
- # x feature transform
- poly = PolynomialFeatures(degree=6)
- np_train_xs = poly.fit_transform(np_train_xs)
- # 학습
- model = LinearRegression(fit_intercept=False)
- model.fit(np_train_xs, np_train_ys)
- # 예측
- np_test_xs = poly.transform(np_test_xs)
- np_pred_ys = model.predict(np_test_xs)
- # 평가
- plt.xticks(range(0, np_test_xlabels.shape[0]), np_test_xlabels)
- plt.plot(np_pred_ys, c='r')
- plt.plot(np_test_ys, c='b')
- plt.show()
- R_square = model.score(np_test_xs, np_test_ys)
- print("R^2: {}".format(R_square))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement