이번 섹션에는 본격적으로 머신러닝을 배운다. 불과 한달 전까지만해도 머신러닝의 머자도 몰랐는데 신기하다. 지금까지 몰랐던 새로운 분야를 배운다는 것은 너무 즐겁고 행복하다. 너무 많은 것들이 머릿 속에 한번에 들어와 머리가 터질 것 같지만, 하루하루 아무 걱정없이 공부만 할 수 있다는게 너무 감사하다. 가끔 내게 주어진 시간이 많지만은 않다는 생각에 내 스스로를 조급하게 만들 때도 있지만, 그런 생각 할 시간에 하나라도 더 공부하고 알아가는게 나을 것이라고 스스로에게 채찍질한다. 정말 이건 나 자신과의 싸움이라고 생각한다.ㅋㅋㅋㅋㅋ
오늘도 오늘 하루를 감사하며 화이팅하자!
sns.displot(df['열이름'], kde=True) #커널밀도그래프
plt.axvline(df['열이름'].median(), color='red') #중간값으로 수직선그리기
#주택판매가격예측
predict = df['SalePrice'].mean()
errors = predict - df['SalePrice']
mean_absolute_error = errors.abs().mean()
from sklearn.linear_model import LinearRegression
model = LinearRegression()
feature = ['GrLivArea']
target = ['SalePrice']
X_train = df[feature]
y_train = df[target]
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
#기준모델 Error
y_pred = model.predict(X_train)
mae = mean_absolute_error(y_train, y_pred)
print(f'훈련 에러: {mae:.2f}')
#MAE
y_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)
print(f'테스트 에러: {mae:.2f}')
## 계수(coefficient)
model.coef_
## 절편(intercept)
model.intercept_
from ipywidgets import interact
# 데코레이터 interact를 추가합니다.
@interact
def explain_prediction(sqft=(500,10000)):
y_pred = model.predict([[sqft]])
pred = f"{int(sqft)} sqft 주택 가격 예측: ${int(y_pred[0])} (1 sqft당 추가금: ${int(model.coef_[0])})"
return pred
# 다중모델 학습을 위한 특성
features = ['GrLivArea',
'OverallQual']
X_train = train[features]
X_test = test[features
# 모델 fit
model.fit(X_train, y_train)
y_pred = model.predict(X_train)
mae = mean_absolute_error(y_train, y_pred)
print(f'훈련 에러: {mae:.2f}')
# 테스트 데이터에 적용해 봅시다
y_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)
print(f'테스트 에러: {mae:.2f}')
## train/test 데이터를 sample 메소드를 사용해 나누겠습니다.
train = df.sample(frac=0.75,random_state=1)
test = df.drop(train.index)
# 1. plt로 그리기
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import style
style.use('seaborn-talk')
fig = plt.figure()
# for 3d plot
ax = fig.gca(projection='3d')
ax.scatter(train['GrLivArea'], train['OverallQual'], train['SalePrice'])
ax.set_xlabel('GrLivArea', labelpad=12)
ax.set_ylabel('OverallQual', labelpad=10)
ax.set_zlabel('SalePrice', labelpad=20)
plt.suptitle('Housing Prices', fontsize=15)
plt.show()
# 2. plotly로 간단히 그리기
import plotly.express as px
px.scatter_3d(
train,
x='GrLivArea',
y='OverallQual',
z='SalePrice',
title='House Prices'
)
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(2) #degree =2
X_poly = poly.fit_transform(X1)
Python Data Science Handbook
다항특성을 방정식에 추가하는 것. 다항특성은 특성들의 상호작용을 보여줄 수 있기 때문에 상호작용특성(Interaction Features)라고도 부른다.
sklearn.modle_selection.train_test_split
train, val = train_test_split(train, random_state=2)
분류 기준모델 : Majority class (가장 빈번하게 나타나는 범주)
(시계열데이터의 기준모델 : 기준 시점의 이전 시간데이터)
분류하기 전 항상 target의 범주들의 비율을 확인
분류의 평가지표(evaluation metrics)
: 정확도(Accurany) = 올바르게 예측한수를 전체예측수로 나눈 것
from sklearn.metrics import accuracy_score
accuracy_score(y_train, y_pred)```
결측치를 평균 값으로 채우기
from sklearn.impute import SimpleImputer
imputer = SimpleImputer()
X_train_imputed = imputer.fit_transform(X_train)
X_val_imputed = imputer.transform(X_val)
로지스틱 회귀 모델
로지스틱 함수 : 관측치가 특정 클래스에 속할 확률값(1과 0)
from sklearn.linear_model import LogisticRegression
logistic = LogisticRegression()
logistic.fit(X_train_imputed, y_train)
logistic.predict(X_val_imputed)
print('검증세트 정확도', logistic.score(X_val_imputed, y_val))
logistic.predict_proba(test_case)
logistic.coef_
coefficients.sort_values().plot.barh();
from category_encoders import OneHotEncoder
from sklearn.impute import SimpleImputer
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler