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