ABC 부트캠프 데이터 탐험가 4기

[19 일차] ABC 부트캠프 : 머신러닝 (2) Code03~Code05

marriina 2024. 7. 31. 13:46

Code03

import matplotlib.pyplot as plt  # 데이터 시각화를 위한 matplotlib 라이브러리 임포트
from sklearn import linear_model  # 선형 회귀 모델을 사용하기 위한 sklearn 라이브러리 임포트

# Linear Regression 모델 생성
reg = linear_model.LinearRegression()  # 선형 회귀 모델 객체 생성

# 입력 데이터 (X)와 출력 데이터 (y) 정의
X = [[0], [1], [2]]  # 입력 데이터: 0, 1, 2
y = [3, 3.5, 5.5]  # 출력 데이터: 각 입력에 대한 출력 값

reg.fit(X, y)  # 입력 데이터와 출력 데이터를 사용하여 모델 학습
print(reg.score(X, y))  # 모델의 결정 계수(R^2)를 출력하여 모델 성능 평가
print(reg.coef_)  # 학습된 선형 회귀 모델의 기울기(회귀 계수)를 출력
print(reg.intercept_)  # 회귀 모델의 절편을 출력

print(reg.predict(X=[[5]]))  # 입력값 5에 대한 예측 결과를 출력

plt.scatter(x=X, y=y, color='red')  # 입력 데이터와 출력 데이터를 산점도로 시각화 (붉은 점으로 표시)
plt.show()  # 시각화된 그래프를 화면에 표시 

y_predict = reg.predict(X)  # 입력 데이터에 대한 예측 값을 계산
plt.plot(X, y_predict, color='blue', linewidth=2)  # 예측된 선형 회귀 직선을 파란색으로 시각화
plt.show()  # 시각화된 그래프를 화면에 표시

 

간단한 선형 회귀 모델을 생성하고, 주어진 입력 데이터와 출력 데이터에 대해 모델을 학습하는 과정을 보여줍니다.

  1. 데이터 준비: 입력 데이터 X와 출력 데이터 y를 정의합니다.
  2. 모델 학습: fit 메서드를 사용하여 모델을 학습합니다.
  3. 모델 평가: 결정 계수(R²), 회귀 계수(기울기), 절편을 출력하여 모델의 성능을 평가합니다.
  4. 예측: 입력값 5에 대한 예측 결과를 출력합니다.
  5. 시각화: 입력 데이터와 출력 데이터를 산점도로 표시하고, 학습된 선형 회귀 모델의 예측 직선을 그립니다.

결과적으로 주어진 데이터에 대한 선형 회귀 분석을 수행하고, 그 결과를 시각화하여 보여줍니다.

 

 


Code04

import pandas as pd  # 데이터 처리를 위한 pandas 라이브러리 임포트

# CSV 파일에서 와인 데이터를 읽어옴
wine = pd.read_csv(filepath_or_buffer="wine_csv_data.csv")  
print(wine)  # 전체 데이터 출력
print(wine.head())  # 데이터의 첫 5행 출력
print(wine.shape)  # 데이터의 행과 열의 수 출력
print(wine.info())  # 데이터의 정보(열의 데이터 타입과 결측치 등) 출력

# 'alcohol', 'sugar', 'pH' 열을 선택하여 numpy 배열로 변환
data = wine[['alcohol', 'sugar', 'pH']].to_numpy()  
print(data)  # 변환된 데이터 출력
print(data.shape)  # 변환된 데이터의 형태 출력
target = wine['class'].to_numpy()  # 'class' 열을 정답(target)으로 설정
print(target)  # 정답 데이터 출력
print(target.shape)  # 정답 데이터의 형태 출력

from sklearn.model_selection import train_test_split  # 데이터 분할을 위한 함수 임포트
from sklearn.linear_model import LogisticRegression  # 로지스틱 회귀 모델 임포트

# 데이터와 타겟 정의 (예시)
data = ... # 입력 데이터 (위에서 정의된 data)
target = ... # 타겟 데이터 (위에서 정의된 target)

# 데이터 분할: 80%는 훈련용, 20%는 테스트용
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2)

# 로지스틱 회귀 모델 생성
lr = LogisticRegression()

# 모델 학습: 훈련 데이터를 사용하여 모델을 학습
lr.fit(X_train, y_train)

# 훈련 세트와 테스트 세트의 정확도 출력
print(lr.score(X_train, y_train))  # 훈련 세트에 대한 정확도 출력
print(lr.score(X_test, y_test))  # 테스트 세트에 대한 정확도 출력
print(lr.coef_)  # 학습된 모델의 회귀 계수 출력
print(lr.intercept_)  # 학습된 모델의 절편 출력

 

와인 데이터셋을 로드하고, 로지스틱 회귀 모델을 사용하여 주어진 데이터를 학습하고 평가하는 과정을 보여줍니다.

  1. 데이터 로드 및 탐색: CSV 파일에서 데이터를 읽어오고, 데이터의 기본 정보와 구조를 출력합니다.
  2. 데이터 전처리: 특정 열(alcohol, sugar, pH)을 선택하여 입력 데이터로 사용하고, class 열을 타겟 데이터로 설정합니다.
  3. 데이터 분할: train_test_split 함수를 사용하여 데이터를 훈련 세트와 테스트 세트로 분할합니다.
  4. 모델 생성 및 학습: 로지스틱 회귀 모델을 생성하고, 훈련 데이터를 사용하여 모델을 학습합니다.
  5. 모델 평가: 훈련 세트와 테스트 세트의 정확도를 출력하고, 모델의 회귀 계수와 절편을 확인합니다.

결과적으로 와인 데이터에 대한 로지스틱 회귀 분석을 수행하고, 모델의 성능을 평가하는 과정을 포함합니다.

 

 


Code05

import numpy as np  # 수치 계산을 위한 numpy 라이브러리 임포트
from sklearn.linear_model import LinearRegression  # 선형 회귀 모델 임포트
from sklearn.datasets import load_iris  # 아이리스 데이터셋 로드 함수 임포트

# 아이리스 데이터셋 로드
iris = load_iris()  
print(iris)  # 아이리스 데이터셋의 전체 정보 출력
print(type(iris))  # iris 객체의 타입 출력
print(iris.data)  # 아이리스 데이터셋의 특성 데이터 출력
print(type(iris.data))  # iris.data의 타입 출력
print('-' * 50)  

# 특성과 타겟 데이터 정의
data = iris.data  # 입력 데이터(특성)
target = iris.target  # 타겟 데이터(클래스)
print(target)  # 타겟 데이터 출력
print(type(target))  # target의 타입 출력
print(target.shape)  # target의 형태 출력

print('-' * 50)  

from sklearn.model_selection import train_test_split  # 데이터 분할 함수 임포트
# 데이터셋을 훈련 세트와 테스트 세트로 분할 (80% 훈련, 20% 테스트)
(X_train, X_test, Y_train, Y_test) = train_test_split(data, target, train_size=0.8)
print(X_train.shape)  # 훈련 세트의 형태 출력
print(X_test.shape)  # 테스트 세트의 형태 출력

# 머신러닝 모델 선택하기
regression = LinearRegression()  # 선형 회귀 모델 객체 생성
# 훈련시키기
regression.fit(X_train, Y_train)  # 훈련 데이터를 사용하여 모델 학습
print('-' * 50)  
print(f'Weight : {regression.coef_}')  # 학습된 모델의 회귀 계수(가중치) 출력
print(f'Bias : {regression.intercept_}')  # 학습된 모델의 절편 출력
print(regression.score(X_train, Y_train))  # 훈련 세트에 대한 모델의 정확도 출력

# 테스트 세트를 사용하여 예측 수행
Y_predicts = regression.predict(X_test)  # 테스트 데이터에 대한 예측 결과
print('-' * 50)  # 주석 처리된 구분선 출력
print(Y_predicts)  # 예측 결과 출력
print(Y_predicts.shape)  # 예측 결과의 형태 출력
print(Y_test)  # 정답 데이터 출력
print('-' * 50)  

# 예측 결과를 반올림하여 정수형으로 변환
print(np.round(Y_predicts).astype(int))  # 반올림된 예측 결과 출력
print(Y_test)  # 실제 정답 데이터 출력

rounded_Y_predicts = np.round(Y_predicts).astype(int)  # 반올림된 예측 결과 저장
from matplotlib import pyplot as plt  # 데이터 시각화를 위한 matplotlib 라이브러리 임포트
plt.plot(rounded_Y_predicts, Y_test, '*')  # 예측 결과와 실제 정답을 별표로 시각화
plt.show()  # 시각화된 그래프를 화면에 표시

아이리스 데이터셋을 사용하여 선형 회귀 모델을 학습하고, 예측 결과를 평가하는 과정을 보여줍니다.

  1. 데이터 로드: 아이리스 데이터셋을 로드하고, 데이터의 기본 정보와 구조를 출력합니다.
  2. 데이터 전처리: 특성과 타겟 데이터를 정의합니다.
  3. 데이터 분할: train_test_split 함수를 사용하여 데이터를 훈련 세트와 테스트 세트로 분할합니다.
  4. 모델 생성 및 학습: 선형 회귀 모델을 생성하고, 훈련 데이터를 사용하여 모델을 학습합니다.
  5. 모델 평가: 학습된 모델의 회귀 계수와 절편을 출력하고, 훈련 세트에 대한 정확도를 평가합니다.
  6. 예측 수행: 테스트 세트를 사용하여 예측 결과를 생성하고, 이를 반올림하여 정수형으로 변환합니다.
  7. 시각화: 예측 결과와 실제 정답을 시각화하여 비교합니다.

결과적으로 아이리스 데이터에 대한 선형 회귀 분석을 수행하고, 모델의 성능을 시각적으로 평가하는 과정을 포함합니다.