반응형
y=ax+b 로 선형회귀분석을 하기위해 데이터를 생성하는 클래스.
(1) 소스코드
import numpy as np
import matplotlib.pyplot as plt
class dataset_generator:
def __init__(self,feature_dim=1,n_sample=100,noise=0):
self._feature_dim=feature_dim
self._n_sample=n_sample
self._noise=noise
self._coefficient=None
self._init_set_coefficient()
# 초기 기울기값 설정, 마지막값은 bias (기울기는 1로 초기화, bias는 0으로 초기화)
def _init_set_coefficient(self):
self._coefficient=[1 for _ in range(self._feature_dim)] +[0]
# 샘플의 개수
def set_n_sample(self, n_sample):
self._n_sample = n_sample
# 노이즈 설정
def set_noise(self,noise):
self._noise=noise
# 기울기 설정
def set_coefficient(self, coefficient_list):
self._coefficient=coefficient_list
def make_dataset(self):
# x값, n개의 데이터, m차원
x_data=np.random.normal(0,1,size=(self._n_sample,self._feature_dim))
# n개의 데이터, 1차원
y_data=np.zeros(shape=(self._n_sample,1))
for feature_idx in range(self._feature_dim):
y_data+=self._coefficient[feature_idx]*x_data[:,feature_idx].reshape(-1,1)
y_data+=self._coefficient[-1]
y_data+=self._noise*np.random.normal(0,1,size=(self._n_sample,1))
return x_data,y_data
def dataset_visualizer(self):
if self._feature_dim==1:
plt.style.use('seaborn')
fig,ax=plt.subplots(figsize=(10,10))
ax.plot(x_data, y_data, 'bo', alpha=0.3, markersize=20)
ax.tick_params(axis='both',labelsize=30)
ax.set_title("DATASET", fontsize=40, color='darkred')
ax.set_xlabel("x data", fontsize=30, alpha=0.6)
ax.set_ylabel("y data", fontsize=30, alpha=0.6)
plt.show()
else:
class feature_dim_error(Exception):
pass
raise feature_dim_error("Visualization is valid for only feature_dim ==1")
data_gen=dataset_generator(feature_dim=1)
data_gen.make_dataset()
x_data, y_data=data_gen.make_dataset()
data_gen.dataset_visualizer()
(2) 결과
* 출처 : 수학적으로 접근하는 딥러닝
반응형