1. 데이터 임포트 후 데이터프레임 형태로 바꾸기

# 라벨 있으면 군집은 웬만하면 안쓰는 게 좋다, 

# 기본 모듈 임포트

# 모듈 임포트
import numpy as np
import pandas as pd
import sklearn
import matplotlib.pyplot as plt

import warnings
warnings.filterwarnings('ignore')

#파일 임포트

import os 
from os.path import join
from sklearn.datasets import load_wine

# 메모리에 올리기
wine = load_wine()

# 와인 데이터 확인
print(wine.DESCR)
# 데이터 가져오기

data = wine.data
label = wine.target
columns = wine.feature_names

# 데이터 사용하기 쉽도록 pandas 데이터 형태로

data = pd.DataFrame(data, columns = columns)
data.head()

2. 전처리

# 데이터 전처리
# 1. 값이 너무 들쭉날쭉하니 min-max scaling으로 값을 맞춰주기
# 2. 데이터 항목 수 만큼 차원이 생기니 (차원은 높고 데이터 갯수는 172개로 적어 데이터의 밀도가 낮아 특성뽑기 힘들다)-차원의 축소

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data = scaler.fit_transform(data)
# fit transform 이후 numpy 배열로 바뀜
data[:5]    

#여전히 데이터 갯수는 적고 항목은 많다.


#그러니 차원의 축소 필요
from sklearn.decomposition import PCA 
pca = PCA(n_components=2)   # 차원의축소는 보통 2차원으로 많이 축소
data = pca.fit_transform(data)

# 확인
data[:5]

# 최종적으로 만들어진 데이터의 모양
data.shape

    출력>
    (178, 2)

 

cost function은 모델의 예측과 실제값 간의 차이를 측정하고, w와 b라는 매개변수 값을 최적화하여 훈련 데이터에 가장 적합한 직선을 찾는 데 사용된다. w와 b 값을 조절하여 다양한 직선을 만들 수 있으며, cost function J을 사용하여 예측값과 실제값 간의 차이를 측정할 수 있다. J은 w와 b의 값을 최소화하는 것이 목표이다.


linear regression model 에서 w와 b의 값을 최적화하는 방법에 대한 예시

 

 

간단한 모델에서는 w값만 최적화하며, 이 경우 J은 w의 함수이다. w값이 변화함에 따라 f(x)와 J의 그래프도 변화하게 된다.

'machine_learning > [coursera] Machine learning' 카테고리의 다른 글

Cost function formula  (0) 2023.04.29
Linear regression model part 2  (0) 2023.04.29
Linear regression model part 1  (0) 2023.04.29
Jupyter Notebooks  (0) 2023.04.27
Unsupervised learning part 2  (0) 2023.04.27

머신러닝의 기초 - 선형 회귀 한 번에 제대로 이해하기 (30분만 투자해봐요!) - YouTube

이해 도움되는 유투브

 

 

Cost function

모델이 얼마나 잘 작동하는지 보고 더 보완할 수 있다.

학습 알고리즘이 모델의 예측과 실제 값의 차이를 평가하는 방법.


f(x) = wx + b 함수로 돌아가보자.

함수는 아래와 같이 작동한다.

 

그런데 linear model을 학습시킬 때 많은 m(총 x⒤,y⒤ 쌍의 합)중에서서 어떻게 함수 안에 들어갈 w,b 값을 정하게 되는 것일까? 이를 위해 cost function을 알아야 한다. 이제 편의성을 위해 n⒤를 n^i로 대체하여 쓰겠다.

 

(1) y-hat^i에서 y^i의 값을 뺀다 (=error)

(2) error의 값을 제곱한다.

(3) 모든 training set에서의 error 정도를 알기 위해 1부터 시작하는 i의 모든 수(m)를 합한 값을 곱해준다

(4)  다시 1/2m 사이즈로 줄여준다

 

 

이 방식은 squared error cost function이라 부른다.


 

Q. The cost function used for linear regression is


Which of these are the parameters of the model that can be adjusted?

 

 

'machine_learning > [coursera] Machine learning' 카테고리의 다른 글

Cost function intuition  (0) 2023.04.29
Linear regression model part 2  (0) 2023.04.29
Linear regression model part 1  (0) 2023.04.29
Jupyter Notebooks  (0) 2023.04.27
Unsupervised learning part 2  (0) 2023.04.27

training set은 features와 targets 정보를 포함하고 이를 알고리듬으로 학습시킨다.

그렇게 되면 어떠한 function(f)이 나온다. 즉 모델이 생기는 것이고 여기에 새로운 input x(feature)를 넣으면

y-hat을 결과로 예측하게 된다.


linear regression은 아래와 같은 함수로 작동한다.

 

fw,b(x) = wx + b

f(x) = wx + b

y = mx + b

여기서 b는 y를 지나는 점(시작점), 이고 m은 기울기를 나타낸다 

 

 

또한 linear regression은 하나의 feature만 가지고 있다.

 

 

Q. For linear regression, the model is represented by .  Which of the following is the output or "target" variable?

 

더보기
y-hat은 estimate한 값이라서 정답이 아닌 것 같다

'machine_learning > [coursera] Machine learning' 카테고리의 다른 글

Cost function intuition  (0) 2023.04.29
Cost function formula  (0) 2023.04.29
Linear regression model part 1  (0) 2023.04.29
Jupyter Notebooks  (0) 2023.04.27
Unsupervised learning part 2  (0) 2023.04.27

지도학습에서 우리는 맞는 정답을 가진 데이터로 학습하는 linear regression model로

집값을 예측하는 것을 공부했었다. (그리고 지도학습 중 classification은 카테고리나 가능성 있는 작은 범위 숫자 내에서 예측하는 일을 했었다.)

 

그리고 linear regression model로 그린 그래프는 각각의 x,y축이 data table로 정리될 수 있고 여기서

data set을 두가지로 나눠볼 수 있다.

 

training set :  dataset 중 모델을 훈련시키기 위한 것

test set : 모델에 테스트하기 위한 것

x = feauture, input 

y = target, output 

m = training set의 총합

(x⒤,y⒤) =⒤번째 training set 데이터를 칭할 때

 

 

'machine_learning > [coursera] Machine learning' 카테고리의 다른 글

Cost function formula  (0) 2023.04.29
Linear regression model part 2  (0) 2023.04.29
Jupyter Notebooks  (0) 2023.04.27
Unsupervised learning part 2  (0) 2023.04.27
Unsupervised learning part 1  (0) 2023.04.27

Machine Learning Algorithm Based Regression?

기계학습 알고리즘을 이용한 회귀분석


1. Decision Tree Regressor

 

알고리듬 임포트

from sklearn.tree import DecisionTreeRegressor
dt_regr = DecisionTreeRegressor(max_depth=5)

's6' 혈당 수치 데이터 넣고 훈련

dt_regr.fit(X_train['s6'].values.reshape((-1,1)), y_train)

예측

y_pred = dt_regr.predict(X_test['s6'].values.reshape((-1,1)))

print('단순 결정 트리 회귀 R2: {:.2f}'.format(r2_score(y_test,y_pred)))

    출력>
    단순 결정 트리 회귀 R2: 0.14

시각화

#Linear line의 생성
line_x = np.linspace(np.min(X_test['s6']), max(X_test['s6']), 10)                     
line_y = dt_regr.predict(line_x.reshape(-1,1))                                       

print(line_x)
print(line_y)

#Test data를 표현
plt.scatter(X_test['s6'], y_test, s=10, c='black')
plt.plot(line_x, line_y, c='red')
plt.legend(['Test data sample','Regression line'])

 

만약 모든 데이터를 통해 모델을 훈련하고 싶다면 ▽

mt_regre = DecisionTreeRegressor(max_depth=3)

mt_regre.fit(X_train, y_train)
y_pred = mt_regre.predict(X_test)
print('다중 결정 트리 회귀, r2: {:.2f}'.format(r2_score(y_test, y_pred)))

2. Support Vector Machine Regressor

from sklearn.svm import SVR      # classfication에 쓰는건 SVC, regression에 쓰는건 SVR
svm_regre = SVR()      
svm_regre.fit(X_train['s6'].values.reshape((-1,1)),y_train)
y_pred = svm_regre.predict(X_test['s6'].values.reshape(-1,1))
print('단순 서포트 벡터 머신 회귀, R2: {:.2f}'.format(r2_score(y_test, y_pred)))

    출력>
    단순 서포트 벡터 머신 회귀, R2: 0.06
for i in [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]:
  svm_regr = SVR(C = i)  # 기본값 c = 1 , 높아질수록 데이터에 집착하지 않고 노멀하게 예측하게된다(전체 트랜트 예측)
  svm_regr.fit(X_train, y_train)
  y_pred = svm_regr.predict(X_test)
  print('다중 서포트 벡터 머신 회귀,i={} R2: {:.2f}'.format(i, r2_score(y_test, y_pred)))
  
  출력>

    다중 서포트 벡터 머신 회귀,i=1 R2: 0.17
    다중 서포트 벡터 머신 회귀,i=2 R2: 0.29
    다중 서포트 벡터 머신 회귀,i=3 R2: 0.35
    다중 서포트 벡터 머신 회귀,i=4 R2: 0.39
    다중 서포트 벡터 머신 회귀,i=5 R2: 0.42
    다중 서포트 벡터 머신 회귀,i=6 R2: 0.44
    다중 서포트 벡터 머신 회귀,i=7 R2: 0.46
    다중 서포트 벡터 머신 회귀,i=8 R2: 0.47
    다중 서포트 벡터 머신 회귀,i=9 R2: 0.48
    다중 서포트 벡터 머신 회귀,i=10 R2: 0.49
    다중 서포트 벡터 머신 회귀,i=11 R2: 0.49
    다중 서포트 벡터 머신 회귀,i=12 R2: 0.50
    다중 서포트 벡터 머신 회귀,i=13 R2: 0.50
    다중 서포트 벡터 머신 회귀,i=14 R2: 0.50
    다중 서포트 벡터 머신 회귀,i=15 R2: 0.50
    다중 서포트 벡터 머신 회귀,i=16 R2: 0.50
    다중 서포트 벡터 머신 회귀,i=17 R2: 0.50
    다중 서포트 벡터 머신 회귀,i=18 R2: 0.50
    다중 서포트 벡터 머신 회귀,i=19 R2: 0.50
    다중 서포트 벡터 머신 회귀,i=20 R2: 0.50

3. Multi Layer Perceptron Regressor

from sklearn.neural_network import MLPRegressor
mlp_regr = MLPRegressor(hidden_layer_sizes = 1000, max_iter = 500)
mlp_regr.fit(X_train,y_train)
y_pred = mlp_regr.predict(X_test)
print('다중 MLP 회귀 R2: {:.2f}'.format(r2_score(y_test, y_pred)))

 

+ Recent posts