- 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 |