머신 러닝의 역사
- 초기 연구 (1950년대~1960년대)
머신러닝의 기초는 1950년대에 시작되었습니다. 앨런 튜링의 '튜링 테스트'와 같은 개념이 등장하며, 컴퓨터가 인간처럼 사고할 수 있는 가능성이 논의되었고, 957년, 프랭크 로젠블래트가 퍼셉트론을 개발하여 머신러닝의 첫 번째 모델 을 제시하였습니다. - 소실 및 재부상 (1970년대)
초기의 기대와는 달리, 머신러닝은 1970년대에 저조한 성과로 인해 'AI 겨울'이라는 시기를 겪었습니다. 이 기간 동안 자금 지원이 줄어들고 연구가 위축되었습니다. 이때가 머신러닝의 암흑기라고 볼 수 있습니다. - 알고리즘 발전 (1980년대)
1980년대에 들어서면서 신경망에 대한 연구가 다시 활발해졌고, 복잡한 모델이 발전하기 시작했던 때 입니다. - 데이터 폭발과 발전 (1990년대~2000년대)
인터넷과 디지털 데이터의 폭발적인 증가로 머신러닝의 응용 가능성이 커졌습니다. 서포트 벡터 머신(SVM)과 결정 트리와 같은 다양한 알고리즘이 개발되며, 실제 문제 해결에 적용되었습니다. - 딥러닝의 부상 (2010년대)
2010년대에는 딥러닝이 주목받기 시작했습니다. 대량의 데이터와 강력한 컴퓨팅 파워의 결합으로 이미지 인식, 자연어 처리 등 여러 분야에서 혁신적인 성과를 이루었습니다. 2012년 Imagenet 대회에서 딥러닝 모델이 큰 성과를 내면서 그 중요성이 확산되었습니다.
현재 머신러닝은 다양한 산업에서 활용되고 있으며, 지속적으로 발전하고 있는 분야입니다.
# Titanic 데이터프레임에서 숫자형(int, float) 및 불리언(bool) 데이터 타입만 선택하여 새로운 데이터프레임 생성
titanic2 = titanic.select_dtypes(include=[int, float, bool])
print(titanic2)
print(titanic2.shape)
# 선택된 데이터프레임(titanic2)의 상관계수를 피어슨 방법으로 계산
titanic_corr = titanic2.corr(method='pearson')
print(titanic_corr)
print(titanic_corr.shape)
# 상관계수 행렬을 CSV 파일로 저장 (엑셀에서 읽을 수 있도록)
titanic_corr.to_csv('Titanic_corr.csv', index=False)
# 성인 남자의 생존률과 'survived' 열 간의 상관계수를 계산하여 출력
print(f"성인 남자의 생존률 : {titanic['survived'].corr(titanic['adult_male'])}")
# 뱃값(fare)과 생존률(survived) 간의 상관계수를 계산하여 출력
print(f"뱃값의 생존률 : {titanic['survived'].corr(titanic['fare'])}")
산점도
sns.pairplot(titanic, hue='survived')
plt.show()
히트맵
# 나이에 따라 카테고리를 반환하는 함수 정의
def category_age(x: int) -> int:
if x < 10: return 0 # 0~9세
elif x < 20: return 1 # 10~19세
elif x < 30: return 2 # 20~29세
elif x < 40: return 3 # 30~39세
elif x < 50: return 4 # 40~49세
elif x < 60: return 5 # 50~59세
elif x < 70: return 6 # 60~69세
else: return 7 # 70세 이상
# 'age' 열의 값을 category_age 함수를 사용하여 새 카테고리 열 'age2'로 변환
titanic['age2'] = titanic['age'].apply(category_age)
# 'sex' 열의 값을 숫자로 매핑 (남성: 1, 여성: 0)
titanic['sex'] = titanic['sex'].map({'male': 1, 'female': 0})
# 가족 수를 계산하여 'family' 열에 저장 (형제자매 + 부모 자녀 수 + 본인)
titanic['family'] = titanic['sibsp'] + titanic['parch'] + 1
# 수정된 Titanic 데이터프레임을 CSV 파일로 저장
titanic.to_csv('NewTitanic.csv', index=False)
# 생존률, 성별, 나이 카테고리, 가족 수, 선실 등급, 뱃값을 포함한 열로 새로운 데이터프레임 생성
heat_map = titanic[['survived', 'sex', 'age2', 'family', 'pclass', 'fare']]
# 색상 맵 설정
color_map = plt.cm.RdBu
# 상관관계 히트맵을 생성하여 시각화
sns.heatmap(heat_map.astype(float).corr(), # 상관계수 행렬
linewidths=0.2, # 선의 두께
vmax=1.0, # 최대값
square=True, # 정사각형 형태
cmap=color_map, # 색상 맵
linecolor='white', # 선 색상
annot=True, # 각 셀에 상관계수 값 표시
annot_kws={'size': 8}) # 텍스트 크기 설정
# 생성된 히트맵을 화면에 표시
plt.show()
붓꽃(Iris)종류와 데이터 세트
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_iris
# 아이리스 데이터셋을 로드
iris = load_iris()
print(iris)
print(type(iris))
print(iris.data)
print(type(iris.data))
print((iris.data).shape)
# 데이터와 목표 변수(target)를 변수에 저장
data = iris.data
target = iris.target
print(target)
print(type(target))
print(target.shape)
# 데이터셋을 학습용 데이터와 테스트용 데이터로 분할
from sklearn.model_selection import train_test_split
(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)
k-NN 알고리즘과 분류 문제
예제. 당뇨병
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn import datasets
# 당뇨병 데이터셋을 로드하여 입력 데이터(X)와 목표 변수(y)로 분리
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)
print(diabetes_X)
print(diabetes_X.shape)
print(diabetes_y)
print(diabetes_y.shape)
# 입력 데이터(X)와 목표 변수(y)의 내용을 확인
# diabetes_X: 다양한 특징으로 구성된 입력 데이터 (예: 나이, BMI 등)
# diabetes_y: 당뇨병 진행 정도를 나타내는 목표 변수 (연속형 값)
# BMI(체질량지수) 데이터만 선택하여 새로운 배열로 생성
bmi = diabetes_X[:, np.newaxis, 2] # 2번째 열(BMI) 선택, 새로운 차원 추가
print(bmi)
print(bmi.shape)
# 선택한 BMI 데이터를 확인
# bmi: 체질량지수 데이터 배열
# bmi.shape: BMI 데이터의 형태 (행 수, 열 수) 확인
# 데이터를 학습용 데이터와 테스트용 데이터로 분할
from sklearn.model_selection import train_test_split
(X_train, X_test, y_train, y_test) = train_test_split(bmi, diabetes_y, test_size=0.2)
print(X_train)
print(X_train.shape)
print(X_test)
print(X_test.shape)
# test_size=0.2는 전체 데이터의 20%를 테스트 데이터로 사용하겠다는 의미
# 학습용 데이터(X_train)와 목표 변수(y_train)의 내용을 확인
# X_train: 학습에 사용할 BMI 데이터
# X_train.shape: 학습용 데이터의 형태 (행 수, 열 수) 확인
# 테스트용 데이터(X_test)와 목표 변수(y_test)의 내용을 확인
# X_test: 테스트에 사용할 BMI 데이터
# X_test.shape: 테스트용 데이터의 형태 (행 수, 열 수) 확인
크롤링까지는 할만 했던 거 같은데 갑자기 극상승한 난이도..
요새 4기에 감기가 유행인데 다들 감기 조심하셔요...
'ABC 부트캠프' 카테고리의 다른 글
[21일차] ABC 부트캠프_ESG데이 (0) | 2024.08.02 |
---|---|
[20일차] ABC 부트캠프 인공지능_3 (0) | 2024.08.02 |
[18일차] ABC 부트캠프 인공지능_1 (0) | 2024.07.31 |
[17일차] ABC 부트캠프_건양대학교 메디컬 캠퍼스 견학 (0) | 2024.07.28 |
[16일차] ABC 부트캠프_조별 프로젝트 (0) | 2024.07.28 |