본 글은 Kikagaku의 무료 강좌 파이썬&기계학습 입문의 강의 노트 중 두 번째 노트입니다.
아래의 리스트는 해당 강좌의 커리큘럼이며, 본 노트는 "8. 도입"부터 "11. 단회귀분석 구현"까지의 내용을 간단하게 정리한 글입니다.
Curriculum (401/548)
1. 도입 (42 min)
2. 미분 (49 min)
3. 선형대수 (55 min)
4. 단회귀분석 (52 min)
5. 중회귀분석 (56 min)
6. Python 속성 강의 (101 min)
7. 단회귀분석 구현 (51 min
8. 중회귀분석 구현 (27 min)
9. 연습문제 (52 min)
10. 통계 (32 min)
11. 중회귀분석 2 (31min)
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([
[1,2,3],
[1,2,5],
[1,3,4],
[1,5,9]
])
y = np.array([
[1],
[5],
[6],
[8]
])
# 모델 선언
model = LinearRegression(fit_intercept=False)
# 모델 학습
model.fit(X, y)
# 파라미터 확인
model.coef_
# 예측정확도 확인 (결정계수 0~1)
model.score(X, y)
# 예측
x_new = np.array([
[1, 3, 6]
])
y_pred = model.predict(x_new)
import numpy as np
import pandas as pd
# 데이터 읽어오기
df = pd.read_csv('/~/~/~.csv')
# 데이터 정보 확인, 읽어온 후에 반드시 확인하는 걸 추천
df.info()
import seaborn as sns
sns.set() # 격자표시
# 히스토그램 표시
sns.displot(df['x6'], bins = 10) # bins는 구간수
# 상관계수 산출
df.corr()
# 상관계수를 알 수 있는 분포표
sns.pairplot(df) # 그래프가 많아 처리 시간이 김
여러 방법이 있는데, 편한 걸 쓰자.
X = df.iloc[:, :13]
y = df.iloc[:, -1]
X = df.drop('y', axis = 1)
y = df['y']
'Scikit-learn 으로 구현 ' 과 동일
from sklearn.model_selection import train_test_split
# 훈련 데이터와 검증 데이터 나누기
X_train, X_test, t_train, t_test = train_test_split(X, t, test_size = 0.4, random_state=1) # random_state 는 난수 시드 고정(재현성 확보)
모델 학습과 검증 등은 동일
# 변수의 차원에는 항상 신경쓰도록
np.array(sample).reshape(1,-1).shape # 조금 복잡한 reshape
y_pred = model.predict([sample]) # 위처럼 reshape해도 되지만, 이처럼 [sample]도 가능
import joblib
# 모델 보존
joblib.dump(model, 'model.pkl')
# 모델 읽어오기
model_new = joblib.load('/content/drive/MyDrive/1. Projects/Kikagaku/1. Python&機械学習入門/model.pkl')
# 파라미터를 보기 편하게
np.set_printoptions(precision=3, suppress=True) # 유효숫자, 지수형식표시
model.coef_
이상값 제거 + 스케일링 + 중회귀분석
import numpy as np
import pandas as pd
# 데이터 읽어오기
df = pd.read_csv('/~/~/~.csv')
# 제거 후 df
_df = df
cols = df.columns
for col in cols:
# 3σ법의 상하한을 설정
low = mean[col] - 3 * sigma[col]
high = mean[col] + 3 * sigma[col]
# 조건으로 줄이기
_df = _df[(_df[col] >= low) & (_df[col] <= high)]
# scikit-learn에 내장된 스케일러 import
from sklearn.preprocessing import StandardScaler
# 인스턴스화
scaler = StandardScaler()
# 스케일러 학습(평균과 표준편차 산출)
scaler.fit(X_train)
# 여기에서도 훈련 데이터만을 이용해서 스케일링. 검증 데이터는 진짜 검증 시에만 쓴다.
# 변수들의 scaling
X_train2 = scaler.transform(X_train)
X_test2 = scaler.transform(X_test)
# 모델 학습
model = LinearRegression().fit(X_train2, y_train)
# 검증 (훈련 데이터)
model.score(X_train2, y_train)
# 검증 (검증 데이터)
model.score(X_test2, y_test)
# weight 확인
sns.barplot(x=X.columns, y=model.coef_)