TIL

2024-06-11

여연찌 2024. 6. 11. 20:24
  • Today

1. SQL 코드카타

2. 통계학 4회차 라이브 세션

3. 머신러닝 기초 수강

+ 머신러닝 개인과제 풀이

 


  • Today I Learned

 

SQL

 

# 첫번째 시도
SELECT eu.unique_id
     , IF (es.id=eu.id, es.name, es.name) AS name
FROM Employees AS es LEFT JOIN EmployeeUNI AS eu ON es.id=eu.id

 

testcase 는 통과했지만 뭔가 이상함을 느낌...

es.name 이 왜 두번이나 들어가야 하는지...?

left join 을 쓰면 왼쪽 테이블을 다 가지고 오니까 굳이 쓸 필요가 없지 않나!

# 정답쿼리
SELECT eu.unique_id
     , es.name AS name
FROM Employees AS es LEFT JOIN EmployeeUNI AS eu ON es.id=eu.id

결국 이렇게 바꾸었고, 당연히 통과가 나왔다.

 

이전에도 풀이했던 문제이던데 그때에는 coalesce 를 사용해서 풀이 했다.

 


머신러닝

 

 

머신러닝을 왜 사용하는지, 어떨때 사용하는지 자체가 이해되지 않아

튜터님께 멘토링을 받고 왔다

 

대희 튜터님 멘토링

 

더보기

머신러닝?

data 값으로 target 이 어떻게 나올 것인가를 측정한다.

ex) 1월1일~10일 의 데이터가 1일 일 때 11일은 어떤 값이 나올지를 추정

데이터를 활용하여 향후 어떻게 될 것인지를 추정하는 것이다.

 

회귀분석?

이전 데이터를 돌아가서 한번 보고, 그 데이터로 향후에 있을 데이터를 추정해본다.

 

 

정욱 튜터님 멘토링

 

더보기

어떤 데이터에 어떤 모델을 사용할 것인지?
데이터분석 후 > 데이터에 잘 맞는 머신러닝 모델을 사용 할 것
어떤 태스크냐에 따라서 모델의 성능을 확인하는 방법이 다르다.

방법은 여러가지가 있으며 대표적으로 보자면 아래와 같다


회귀: MSE, R-squared
분류: accuracy, f1-score

 

머신러닝 개인과제 풀이

 

더보기
# 1. Logisitic Regression
# 데이터 불러오기
from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target

# train_test_split 를 이용해서 test 데이터를 분리
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Logistic Regression 모델 불러오기
from sklearn.linear_model import LogisticRegression

# Logistic Regression 모델로 학습
lo=LogisticRegression()
lo.fit(X_train, y_train)

# 예측값 계산
y_pred2=lo.predict(X_test)
len(y_pred2)

# accuracy_score 불러오기
from sklearn.metrics import accuracy_score

# accuracy_score 정확도를 계산하기
accuracy_score(y_test,y_pred2)

>> 결과값 1.0
# 2. Linear Regression
# 데이터 불러오기
from sklearn.datasets import fetch_california_housing
housing = fetch_california_housing()
X, y = housing['data'], housing['target']

# train_test_split 를 이용해서 test 데이터를 분리
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 데이터 확인 
X_train.shape
X_test.shape
y_train.shape  
y_test.shape

# 모델 학습
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
model_lr.fit(X_train, y_train)

# 예측값
y_pred=lr.predict(X_test)

# mean_squared_error 이용하여 MSE 계산
from sklearn.metrics import mean_squared_error
mean_squared_error(y_test,y_pred)

>> 결과값: 0.5305677824766761
# 3. DecisionTree
# 데이터 불러오기
from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target

# train_test_split 를 이용해서 test 데이터를 분리
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# DecisionTree 모델 불러오기
from sklearn.tree import DecisionTreeClassifier

# DecisionTree 모델로 학습
dt= DecisionTreeClassifier()
dt.fit(X_train,y_train)

# 예측값 계산
y_pred3=dt.predict(X_test)

# accuracy_score 정확도를 계산하기
accuracy_score(y_test,y_pred3)

>> 결과값: 1.0

 

 


통계학

 

 

지도학습

: 라벨이 붙어져 있음, 딱지가 붙어져 있다.

: 학습을 시켜서 결과에 대한 예측을 만들어내는 방법

> 문제와 정답을 모두 알고 있는 상태에서 시행

> 정답이 있기 때문에 배치

 

비지도학습

: 정답이 없음, 아무것도 없다

> 정답을 모르고, 특정한 기준에 따라서 나누게 하는 방식

> 정답이 없기 때문에 그룹화하는 것

 

지도 학습과 비지도 학습

가장 큰 차이점 : Label

 

지도학습은 비지도 학습보다 정확한 경향이 있다.

지도학습: 금융도메인, IT 업계 등

비지도학습: 게임업계 등, 많은 데이터가 필요하다.

 

지도학습: 분류, 회귀

RFM

R(최근성)

최근에 구매한 고객일수록 더 가치있는 고객

F(빈도)

자주 구매한 고객일수록 더 가치있는 고객

M(구매금액)

구매금액이 높을수록 가치 있는 고객

 

비지도학습: 군집화

최소 6개월의 데이터를 가지고 온다.

k값(군집갯수)와 초기컬럼(피쳐)도 설명

* 초반에는 가능하한 많은 개수를 넣는다.

 

 


  • Next

1. SQL 코드카타 

2. 파이썬 캐글 데이터 확인해보기

3. 머신러닝 분류분석 특강 수강 및 복습

4. SQL 챌린지 3회차 수강

'TIL' 카테고리의 다른 글

2024-06-13  (0) 2024.06.13
2024-06-12  (1) 2024.06.12
2024-06-10  (0) 2024.06.10
2024-06-07  (0) 2024.06.07
2024-06-05  (1) 2024.06.05