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

도움받은 유투브 : https://www.youtube.com/watch?v=dsUyFss2Sh4


셸?

사용자와 리눅스 커널 사이에서 명령어와 프로그램을 실행하고 관리하는 인터페이스

Windows 운영체제에서는 PowerShell이나 Windows Subsystem for Linux(WLS)을 사용하여 Linux에서 사용되는 Bash 셸과 같은 셸을 사용할 수도 있다. 나는 window 스토리지에서 windows powershell을 받아 사용 중.

 

셸의 역할

-사용자 명령어 해석기 : 내가 명령어를 쓰면 셸이 해석에서 운영체제 커널에 전달해줌

-사용자가 프롬프트에 입력한 명령을 해석해서 운영체제에 전달

 

셸의 종류

1. Bourne shell(sh) : 벨 연구소에서 만든 최초의 셸

2.C shell(csh) : c언어 문법 적용

3. Korn shell(ksh) : 첫번째 본셸에 c셸을 적용 

4. Bourn-again shell(bash) : csh과 ksh이 가진 기능 포함하며 sh과 호환도 높여 많이 사용

 

기본 셸 구성하기

현재 시스템에서 사용가능한 셸 리스트 확인 : $ cat /ect/shells         

현재 내가 쓰는 셸 확인 :$ echo $SHELL

사용하는 셸 변경 : sudo chsh [username]     (변경된 내용은 passwd파일에 저장된다)

셸 변경된 것 확인: sido grep [username] /ect/passwd

 


 

오늘의 명령어

 

cat : 파일의 내용 보기

echo : 출력

sudo : root 권한을 사용하기 위해서 사용

grep : 특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력해주는 명령어

'Linux' 카테고리의 다른 글

Docker(4) vi 에디터를 이용해서 docker 만들기  (0) 2023.05.02
Docker(3) vi editor 기본  (0) 2023.05.01
Docker(2) 설치 및 기본 사용, vi 편집  (0) 2023.05.01
Docker(1)  (0) 2023.05.01
Linux os 시작  (0) 2023.04.27


스택(Stack)과 큐(Queue)는 컴퓨터 과학에서 가장 기본적인 자료 구조 중 하나입니다.

 



스택은 LIFO(Last-In-First-Out) 원칙에 따라 데이터를 저장하는 자료 구조입니다. 새로운 데이터는 스택의 가장 상단에 추가되며, 데이터를 꺼낼 때에는 가장 상단에 있는 데이터부터 차례대로 꺼내야 합니다. 

큐는 FIFO(First-In-First-Out) 원칙에 따라 데이터를 저장하는 자료 구조입니다. 새로운 데이터는 큐의 가장 뒤에 추가되며, 데이터를 꺼낼 때에는 가장 앞쪽에 있는 데이터부터 차례대로 꺼내야 합니다. 이러한 특성 때문에, 큐는 주로 작업 대기열(job queue) 등에 활용됩니다.

스택과 큐는 각각의 특성 때문에 다양한 알고리즘과 데이터 구조에서 중요한 역할을 합니다. 스택과 큐는 둘 다 리스트와 같은 데이터 구조를 기반으로 하며, 파이썬에서는 리스트를 이용하여 스택과 큐를 구현할 수 있습니다.

'Computer Science' 카테고리의 다른 글

시간복잡도와 공간복잡도  (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)))

 

#Linear line의 생성
line_x = np.linspace(np.min(X_test['s6']), max(X_test['s6']), 10)                      
line_y = sim_lr.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'])

이번 예제에서는 혈당을 나타내는 feature인 's6' 하나를 가지고 당뇨 예측을 해본다.

 

알고리듬 임포트

from sklearn.linear_model import LinearRegression
sim_lr = LinearRegression()

 

데이터 쪼개기

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
                                      data, label, test_size = 0.2, random_state=2023)

 

혈당 수치만 가져와서 sklearn에 맞는 array형태로 바꾸기

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

 

학습

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

예측

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

from sklearn.metrics import r2_score
print('단순 선형 회귀, R2: {:.2f}'.format(r2_score(y_test, y_pred)))
print('단순 선형 회귀 계수(w) : {:.2f}, 절편(b): {:.2f}'.format(sim_lr.coef_[0],sim_lr.intercept_))  

    출력>
    단순 선형 회귀, R2: 0.16
    단순 선형 회귀 계수(w) : 586.70, 절편(b): 152.60

 

시각화

#Linear line의 생성
line_x = np.linspace(np.min(X_test['s6']), max(X_test['s6']), 10)                     
line_y = sim_lr.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'])

점과 선의 괴리감이 커서 좋은 모델은 아닌 걸 알 수 있다 : 예측율이 떨어질 듯

+ Recent posts