[ProDS] 실기 - 분류

swb·2022년 11월 24일
0

ProDS

목록 보기
4/5

로지스틱 회귀분석

주요함수

1. Logit()

  • endog, exog 인자에 각각 종속변수와 독립변수 할당
  • 산출 모델 객체의 params 어트리뷰트에 모델의 계수 저장
  • 산출 모델 객체의 predict() 메서드로 예측값을 생산하며 이는 종속변수가 1이 될 확률값

2. LogisticRegression()

  • fit_intercept, solver 인자로 절편 적합 여부 및 최적화 알고리즘 설정 가능
  • random_state 인자에 자연수를 할당하여 결과 고정 가능
  • fit() 메서드에 독립변수 및 종속변수 할당
  • 산출 모델 객체의 coef_ 어트리뷰트에 모델에 계수 저장
  • 산출 모델 객체의 predict_proba() 메서드로 예측값을 생산하며 두 번째 열이 종속변수가 1이 될 확률값

3. roc_auc_score()

  • Area Under Cuver를 산출
  • y_true, y_score 인자에 각각 종속변수와 예측 확률값 할당

4. accuracy_score()

  • 분류모델의 정확도 산출
  • y_pred와 y_true에 각각 예측 분류 결과와 실제 값을 할당

5. f1_score()

  • 분류모델의 f1 값을 산출
  • y_pred와 y_true에 각각 예측 분류 결과와 실제 값을 할당

6. precision_score()

  • 분류모델의 정밀도 산출
  • y_pred와 y_true에 각각 예측 분류 결과와 실제 값을 할당

7. recall_score()

  • 분류모델의 재현율 산출
  • y_pred와 y_true에 각각 예측 분류 결과와 실제 값을 할당

01. 독립변수를 혈압, 혈당, BMI, 인슐린으로 하고 종속변수를 당뇨 여부로 할 경우 분류 정확도는 얼마?

df = pd.read_csv("diabetes.csv")

df_train, df_test = train_test_spli(df, train_size = 0.8, random_state = 123)
model = Logit(endog = df_train["Outcome"],
 			  exog = df_train.loc[:, ["BooldPressure", "Glucose", "BMI", "Insulin"]]).fit()
 
 pred = model.predcit(exog = df_test.loc[:, ["BooldPressure", "Glucose", "BMI", "Insulin"`]])
 pred_class = (pred > 0.5) + 0
 accuracy_score(y_pred = pred_class, y_true = df_test["Outcome"])

02. 독립변수를 혈당, BMI, 나이로 하고 종속변수를 당뇨 여부로 할 경우 나이의 승산비는 얼마인가?

df = pd.read_csv("diabetes.cvs")
model = Logit(endog = df["Outcome"],
			  exog = df.loc[:, ["Glucose", "BMI", "Age"]]).fit()
model.params # 확인

np.exp(model.params)

03. 독립변수를 혈당, BMI, 나이로 하고 종속변수를 당뇨 여부로 할 경우 모델의 AUC는 얼마인가?

df = pd.read_csv("diabetes.csv")
model = Logit(endog = df["Outcome"],
			  exog = df.loc[:, ["Glucose", "BMI", "Age"]]).fit()
model.predict(df.loc[:, ["Glucose", "BMI", "Age]])[:5] # 데이터 확인

roc_aut_score(y_true = df["Outcome"], y_score = model.predict(df.loc[:, ["Glucose", "BMI", "Age]]))

의사결정나무 모델 : 분류 및 회귀나무

주요함수

1. DecisionTreeClassifier()

  • 분류나무 수행할 때 사용
  • max_depth와 random_state로 모델의 성장과 결과 고정 설정 가능
  • fit() 메서드에 독립변수와 종속변수 할당

2. DecisionTreeRegressor()

  • 회귀나무 수행할 때 사용
  • max_depth와 random_state로 모델의 성장과 결과 고정 설정 가능
  • fit() 메서드에 독립변수와 종속변수 할당

01. 당뇨병 발병 여부를 예측하기 위하여 의사결정나무를 사용하고자 한다. 이 때 혈당, 혈압, 임신 횟수를 기반으로 예측했을 때 정확도는?

df = pd.read_csv("diabates.csv")

df_train, df_test = train_test_split(df, train_size = 0.8, random_state = 123)
model = DecisionTreeClassifier(
		random_state = 123).fit(
        X = df_train.loc[:, ["Glucose", "BooldPressure", "Pregnacies"]],
        y = df_train["Outcome"])

pred = model.predict(df_test.loc[:, ["Glucose", "BloodPressure", "Pregnacies"]])
accuracy_score(y_pred = pred, y_true = df_test["Outcome"])

02. 환자의 BMI를 예측하기 위하여 회귀나무를 사용하고자 한다. 이 때 혈당, 혈압, 피부 두꼐를 독립변수로 했을 경우 RMSE는 얼마인가?

df = pd.read_csv("diabates.csv")

df_train, df_test = train_test_split(df, tran_size = 0.8, random_state = 123)

model = DecisionTreeRegressor(
		random_state = 123).fit(
        X = df_train.loc[:, ["Glucose", "BloodPressure", "SkinThickness"]],
        y = df_train["BMI"])

pred = model.pedict(df_test.loc[:, ["Glucose", "BloodPressure", "SkinThckness"]])

mean_squared_error(y_pred, pred, y_true = df_test["BMI")) ** 0.5

03. 분류나무의 파라미터를 바꿔가면서 성능 평가를 하려고 한다. 당뇨 발병 여부를 종속변수로 하고 혈당, 혈압, 임신 횟수, BMI, 나이를 독립변수로 하고 Dpeth를 3에서 6까지 변화시킬 때 그 결과로 틀린 것은?

df = pd.read_csv("diabates.csv")

df_train, df_test = train_test_split(df, tran_size = 0.7, random_state = 345)
cols = ["Glucose", "BloodPressure", "Pregnacies", "BMI", "Age"]

dpeth_list = [3,4,5,6]
acss = []
for depth in depth_list:
	model = DecisionTreeClassifier(max_dpeth = depth, random_state = 345)
    model.fit(X = df_train.loc[:, cols],
    		  y = df_train["Outcome"])
	pred = model.predict(df_test.loc[:, cols])
    acss = acss + [accuracy_score(y_pred = pred,
    		 					  y_true = df_test["Outcome"])]

df_score = pd.DataFrame({"depth":depth_list,
						 "acss": acss})
df_score["accs"] = df_score["accs"].round(2)
df_score    
profile
개발 시작

0개의 댓글