반응형

파이썬의 싸이킷런 패키지(sklearn)을 이용하여 선형회귀 모델 만드는 초간단 예시입니다.

# sklearn 패키지에서 선형회귀 모듈을 불러옵니다.
from sklearn.linear_model import LinearRegression
model_lr = LinearRegression()

# 필요한 훈련 데이터를 간단히 만듭니다.
X_train = np.asarray([[170, 70], [180, 80], [195, 85], [159, 51]])
y_train = np.asarray([120, 130, 140, 100])

# 모델을 훈련 시킵니다.
reg = model_lr.fit(X_train, y_train)

# 간단히 성능을 알아봅니다.
print(reg.score(X_train, y_train))

# 새로운 데이터로 예측을 해봅니다.
y_preds = reg.predict(np.asarray([[170,70]]))
y_preds

출력 내용은 아래와 같습니다.

0.9987095109046329
array([119.25474255])

120에 가까운 숫자가 나오는 것으로 보아 모델이 잘 동작 함을 알 수 있습니다.

 

사실 데이터 항목이 많아지고 데이터의 분포에 따라서 학습이 잘되지 않는 경우도 많이 있습니다. 이럴 경우 데이터 전처리 작업과의 고달픈 (삽질?) 시간이 필요합니다.

 

 

 

 

반응형
반응형

 

현상 : MY SQL 에서 Zero date value prohibited 라는 에러 발생

원인 :  0000-00-00 00:00:00 형태로 저장된 date 값을 java의 date객체로 변환하려할 때 에러 발생

해결방안: datasource 설정 시 jdbc url 뒤에 아래의 내용을 추가해 주면 됨 

추가내용 "?zeroDateTimeBehavior=convertToNull"

jdbc url 예시 : jdbc:mysql://companysystem-dev.cluster-abced9ddd.ap-northeast-2.rds.amazonaws.com:3306/dbname?zeroDateTimeBehavior=convertToNull

 

 

 

 

 

반응형
반응형

 

전체 순서

  1. ssh key 생성
  2. public key 복사
  3. public key를 git hub에 등록
  4. 연결 테스트
  5. ssh agent에 만든 key를 등록

 

1. ssh key 생성

아래와 같이 ssh key를 생성합니다. public key와 private key 가 생성됩니다. 진행중에 중간에 passphrase를 입력하는 부분이 있습니다. 여기에서 입력하는 내용을 잘 기억해둘 필요가 있습니다. 나중에 연결 테스트와 에이전트 등록 시에 필요합니다.

$ ssh-keygen -t rsa -b 4096 -C "email_id@gmail.com"

Generating public/private rsa key pair.

Enter file in which to save the key (/Users/userid/.ssh/id_rsa): /Users/userid/.ssh/id_rsa_hub

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /Users/userid/.ssh/id_rsa_hub.

Your public key has been saved in /Users/userid/.ssh/id_rsa_hub.pub.

The key fingerprint is:

SHA256:AqTythcY5Ki0cxu+4/0D6mlhkghx8MxY1ynvPNnN+Vw email_id@gmail.com

The key's randomart image is:

+---[RSA 4096]----+

|..o o. .         |

|.X.+. o          |

|++B .o           |

|+o.o ..          |

|+o=o.o.oSo .     |

|.+++oo=.. +   E  |

|  +o+ ..   o .   |

|   =+  .    o    |

|  +=.....        |

+----[SHA256]-----+
$

 

잘 진행되었다면 아래와 같이 생성된 public key와 private key 파일이 보입니다.

$ ls -al ~/.ssh
-rw-------    1 userid  ugroup   3.4K  8  3 11:04 id_rsa_hub
-rw-r--r--    1 userid  ugroup   746B  8  3 11:04 id_rsa_hub.pub

.ssh/config 파일에 생성된 키와 사용할 호스트 정보를 추가해 줍니다. 아래의 양식/내용과 같습니다. userid와 생성한 파일 이름을 알맞게 바꾸어 주세요.

Host github
  Hostname *.github.com
  User github_userid
  IdentityFile /Users/userid/.ssh/id_rsa_hub

 

2. public key 복사

# 아래의 명령을 이용하여 클립보드에 퍼블릭 키 내용을 복사해 둡니다.

$ pbcopy < ~/.ssh/id_rsa_hub.pub

 

3. public key를 git hub에 등록

git hub에 로그인한 뒤 메뉴를 찾아갑니다. 사용자 아이콘 클릭 -> 설정(Settings) -> access(SSH and GPG keys)  클릭 후  New SSH key 버튼(아래 이미지 내 <==)를 클릭 합니다.

 

그리고 나서 등록화면의 Title에 id_rsa_pub를 입력하고 Key에는 (pbcopy를 통해) 클립보드에 복사해 둔 내용을 붙여 넣습니다.

 

4. 연결 테스트

$ ssh -T git@github.com

Hi user_name! You've successfully authenticated, but GitHub does not provide shell access.

성공적으로 연결되면 아래와 같은 메시지가 나옵니다.

 

5. ssh agent에 만든 key 등록

마지막으로 아래와 같은 명령으로 만들어 놓은 key를 ssh agent에 등록합니다.

$ ssh-add -K ~/.ssh/id_rsa_hub

Enter passphrase for /Users/userid/.ssh/id_rsa_hub: (ssh key 생성시에 입력했던 passphrase를 입력합니다.) 

Identity added: /Users/userid/.ssh/id_rsa_hub (userid@gmail.com)

 

이후부터는 아래와 같은 git clone 명령시 패스워드 입력 없이 진행할 수 있습니다.

$ git clone git@github.com:github_userid/repository_name.git

'repository_name'에 복제합니다...

warning: 빈 저장소를 복제한 것처럼 보입니다.

 

 

 

반응형
반응형

이번에는 차원축소방법중 하나인 TSNE에 대해서 알아보겠습니다.
간단한 설명 후 실제로 Python 에서 어떻게 T-SNE를 이용하는지에 대한 예를 들어 보겠습니다.

TSNE에 대해 간단히 알아 보기

차원 축소는 기계학습(Machine Learning)에서 매우 중요합니다. 왜냐하면 고차원의 데이터를 가지고 모델을 만들면 Under fitting 되기 쉽기 때문입니다. 즉, 쓸모 없는 데이터가 너무 많아서 학습이 되지 않는 현상이지요. 고차원, 즉 여러 데이터 중에서 가장 중요한 데이터만 골라서 (저차원으로 만들어서) 모델에 사용할 수도 있고, 여러 데이터를 이용하여 새로운 데이터를 만들어서 저차원으로 만들수도 있습니다. 어째튼 이처럼 고차원의 데이터를 저차원으로 변환하는 것이 필요합니다. 이것이 바로 차원 축소(Dimension Reduction) 방법입니다. (이외에도 Feature를 만드는 방법에는 Feature Elimination, Feature Selection 등의 방법이 있습니다.) 차원 축소 방법은 선형 방법(Principal Component Analysis (PCA), Independent Component Analysis, Linear Discriminant Analysis, 등)과 비선형 방법(Manifold, Auto-encoder 등)이 있습니다. TSNE는 Manifold 방법중 하나입니다.
SNE (Stochastic Neighbor Embedding)에서 t-SNE (t-distributed Stochastic Neighbor Embedding)로 발전했고, 이후 다시 UMAP (Uniform Manifold Approximation and Projection)으로 발전 하였습니다.

Python 을 이용해 Tsne 구현해 보기

간단한 코드와 설명은 아래와 같습니다.

# python 3.8.6
 
# 필요한 패키지를 설치 합니다.
#! pip install sklearn
#! pip install seaborn
#! pip install matplotlib

# 필요한 패키지를 로딩 합니다.
from sklearn.datasets import load_digits
from sklearn.manifold import TSNE
import seaborn as sns
from matplotlib import pyplot as plt

# 필요한 데이터를 로드합니다. 여기서는 0부터 9까지의 숫자 데이터 입니다.
data = load_digits()

# 설명을 위한 참고 부분
# 로딩한 데이터의 첫번째 샘플을 보면 아래와 같습니다. 0은 하얀색이고 높은 숫자일 수록 검은 색에 가까움을 나타냅니다.
# 0이 아닌 숫자들을 연결해보면 중앙부분에 하얀색(0)이 있는 숫자 0을 나타내고 있음을 알 수 있습니다.
# >>> data.data[0]
# [ 0., 0., 5., 13., 9., 1., 0., 0.,
# 0., 0., 13., 15., 10., 15., 5., 0.,
# 0., 3., 15., 2., 0., 11., 8., 0.,
# 0., 4., 12., 0., 0., 8., 8., 0.,
# 0., 5., 8., 0., 0., 9., 8., 0.,
# 0., 4., 11., 0., 1., 12., 7., 0.,
# 0., 2., 14., 5., 10., 12., 0., 0.,
# 0., 0., 6., 13., 10., 0., 0., 0. ]
# 실제로 타겟의 첫번째에는 첫번째 샘플의 정답인 0이 들어잇습니다.
# >>> data.target[0]
# 0

# 축소한 차원의 수를 정합니다.
n_components = 2
# TSNE 모델의 인스턴스를 만듭니다.
model = TSNE(n_components=n_components)
# data를 가지고 TSNE 모델을 훈련(적용) 합니다.
X_embedded = model.fit_transform(data.data)
# 훈련된(차원 축소된) 데이터의 첫번째 값을 출력해 봅니다.
print(X_embedded[0])
# [65.49378 -7.3817754]

# 차원 축소된 데이터를 그래프로 만들어서 화면에 출력해 봅니다.
palette = sns.color_palette("bright", 10)
sns.scatterplot(X_embedded[:,0], X_embedded[:,1], hue=data.target, legend='full', palette=palette)
plt.show()


아래는 화면에 출력된 결과 입니다.



차원 축소가 잘 되었는지 안되었는지 알아볼 수 있는 좋은 시각화 툴 입니다. 이를 이용해서 임베딩된 데이터를 시각화해 봄으로써 품질을 가늠해 볼 수 있습니다.


반응형

+ Recent posts