반응형
안녕하세요 ! 소신입니다.
사실 모델링 코드는 정말 간단합니다.
데이터를 수집하고 전처리하는 과정이 귀찮을 뿐!
ㅁ 선형 회귀분석
변수사이의 관계를 선형으로 나타내는 것을 선형 회귀분석이라 합니다.
전체 코드
from sklearn.linear_model import LinearRegression # 선형회귀
from sklearn.linear_model import Lasso, Ridge, ElasticNet # 규제항 조절가능한 선형회귀
import numpy as np # 데이터 셋을 다루기 위한 패키지
from sklearn.datasets import load_boston # 보스턴 집값 데이터
# 시각화 패키지
import seaborn as sns
import matplotlib.pyplot as plt
boston_data = load_boston()
boston_data.keys()
# 506행 13개의 feature (독립변수), 506개의 집값 데이터 (종속변수)
print(boston_data.data.shape, boston_data.target.shape)
print(boston_data.feature_names)
# 데이터 타입 = numpy 배열
print(type(boston_data.data), type(boston_data.target))
print(boston_data.data[:2], boston_data.target[:2])
# 학습
lr = LinearRegression()
lr.fit(boston_data.data, boston_data.target)
# 예측
pred = lr.predict(boston_data.data)
# R^2 Score
print('정확도 : %f'%lr.score(boston_data.data, boston_data.target))
plt.figure(figsize=(12,4))
sns.scatterplot(range(len(pred)), pred, label='predict')
sns.scatterplot(range(len(pred)), boston_data.target, label='real')
plt.plot()
패키지 Import
임시 데이터 로드
보스턴의 집 값 데이터를 가져와서 회귀분석을 진행했습니다.
사이킷런(sklearn)에서 임시 데이터셋은 dictionary로 이루어져있고
data : 독립변수 데이터
target : 종속변수 데이터
feature_names : 독립 변수의 이름
sklearn 모델을 학습 시킬때는 데이터 타입을 numpy 배열로 맞춰주는게 제일 좋습니다.
type : numpy.ndadrray
모델링, 학습
1. 우선 모델 객체를 생성해줍니다.
2. fit으로 데이터를 학습시키고,
3. predict 함수로 예측 결과 저장
R^2 스코어는 74%가 나왔습니다.
시각화
이를 시각화해보면 다음과 같습니다.
선형회귀에서 규체항을 적용하는 모델 (Ridge, Lasso, ElasticNet은 Github에 가면 확인하실 수 있습니다.)
ㅁ 로지스틱 회귀분석
로지스틱 회귀분석은 변수를 선(면)으로 나누어 어느 한 집단으로 분류하는 분석합니다.
전체 코드
from sklearn.linear_model import LogisticRegression
import numpy as np # 데이터 셋을 다루기 위한 패키지
from sklearn.datasets import load_iris # 붓꽃 데이터
import pandas as pd # 시각화를 위한 데이터 패키지
# 시각화 패키지
import seaborn as sns
import matplotlib.pyplot as plt
iris_data = load_iris()
iris_data.keys()
# 150개의 데이터, 4개의 feature (독립변수), 150개의 붓꽃 종(species) 데이터 (종속변수)
print(iris_data.data.shape, iris_data.target.shape)
print(iris_data.feature_names)
# 데이터 타입 = numpy 배열
print(type(iris_data.data), type(iris_data.target))
print(iris_data.data[:2], iris_data.target[:2])
Logitr = LogisticRegression()
Logitr.fit(iris_data.data, iris_data.target)
pred = Logitr.predict(iris_data.data)
df_iris = pd.DataFrame(iris_data.data, columns=iris_data.feature_names)
df_iris['target'] = iris_data.target
df_iris['predict'] = pred
print(df_iris.head())
plt.figure(figsize=(12,8))
plt.subplot(2,1,1)
sns.scatterplot(data = df_iris, x = 'sepal length (cm)', y = 'sepal width (cm)', hue='target')
plt.subplot(2,1,2)
sns.scatterplot(data = df_iris, x = 'sepal length (cm)', y = 'sepal width (cm)', hue='predict')
plt.plot()
패키지 Import
임시 데이터 로드
이번엔 붓꽃의 종(Species)를 분류하는 iris 데이터를 가져왔습니다.
모델링, 학습
시각화
예제 코드에 대한 파일은 깃허브에서 확인하실 수 있습니다.
github.com/svstar94/SDAU/blob/master/Regression.ipynb
감사합니당
반응형