파이썬 빅데이터 분석 Day 12

2023. 10. 26. 15:49·데이터분석실습/데이터 과학 기반의 파이썬 빅데이터 분석

12. 데이터 분석하기자동차 연비 분석(22.07.20)

[선형 회귀 분석 + 산점도/선형 회귀 그래프]

목표:자동차 연비 데이터에 회귀분석을 통해 연비에 영향을 미치는 항목을 확인->자동차 연비 예측

1.데이터 수집

UCI Machine Learning Repository 접속 -> auto 검색 -> 검색목록 중 첫번째 클릭 -> data folder클릭 -> auto-mpg.data 다운->csv로 저장

csv로 변경하는 과정에서 일부 컬럼을 추가하는 등의 과정이 있어서 데이터를 올리겠다.

auto-mpg.csv
0.02MB

2.데이터 준비 및 탐색

data=pd.read_csv('data/car_fuel/auto-mpg.csv',header=0,engine='python')
data.shape
data.head()

data=data.drop(['car_name','origin','horsepower'],axis=1)
data

2.분석 모델 구축

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

x=data.drop(['mpg'],axis=1)
y=data['mpg']

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=0)

lr=LinearRegression()
lr.fit(x_train,y_train)

y_pred=lr.predict(x_test)

[01~03행]: sklearn에서 선형회귀모델과 테스트셋과 트레인셋을 나누고 평가지표들인 mse,r^2를 불러온다.

[04,05행]: 예측에 사용될 독립변수(mpg행을 제외한 나머지)와 종속변수 (mpg column)을 가져온다.

[06행]: random state를 0으로 고정하고, 테스트셋과 트레인셋의 비율을 7:3으로 분할한다.

[07~09행]: 선형회귀모델을 통해서 y_pred을 산출

mse=mean_squared_error(y_test,y_pred)
rmse=np.sqrt(mse)
r2=r2_score(y_test,y_pred)

print('MSE: {0: .3f},RMSE: {1:.3f}'.format(mse,rmse))
print('R^2(Variance score): {0: .3f}'.format(r2))

print('Y절편: ',lr.intercept_)
print('회귀 계수 값:', np.round(lr.coef_, 1))

coef=pd.Series(data=np.round(lr.coef_,2),index=x.columns)
coef.sort_values(ascending=False)

[01~03행]: mse,rmse,r^2 평가지표들을 load

[04,05행]: 모델의 성능을 평가

[06~09행]: 선형회귀식을 산출하기위한 계수들을 계산

다음 아래와 같은 값들과 선형회귀식이 산출되게 된다.

MSE: 12.278  / RMSE: 3.504

R^2: 0.808

Y절편: -17.548057223951552

Ympg = -0.14Xcylinders + 0.01Xdisplacement - 0.01Xweight + 0. 20 acceleration + 0. /0Xmodel year - 17.55

3.시각화

마지막으로 종속변수인 'PRICE'를 제외한 독리변수들이 회귀분석에 끼치는 영향을 시각화해보았다.

import matplotlib.pyplot as plt
import seaborn as sns

fig,axes=plt.subplots(figsize=(16,16),ncols=3,nrows=2)
x_features=data.columns[1:]
plot_color=['r','b','y','g','r']

for i,feature in enumerate(x_features):
	row=int(i/3)
	col=i%3
	fig=sns.regplot(x=feature, y='mpg',data=data,ax=axes[row][col],color=plot_color[i]).get_figure()
fig.savefig("output.png")

.

마지막으로 우리가 생성한 모델을 통해서 연비를 예측해보자.

print(" 연비를 예측하고 싶은 차의 정보를 입력하시오.")
cylinders_1=int(input('cylinders: '))
displacement_1=int(input('displacement: '))
weight_1=int(input('weight: '))
acceleration_1=int(input('acceleration: '))
model_year_1=int(input('model_year: '))

mpg_pred=lr.predict([[cylinders_1,displacement_1,weight_1,acceleration_1,model_year_1]])
print("이 자동차의 예상연비는 %.2f입니다."%mpg_pred)

이렇게 한후 해당 정보들을 입력하면 연비에 대한 예측 값을 알려준다.

728x90

'데이터분석실습 > 데이터 과학 기반의 파이썬 빅데이터 분석' 카테고리의 다른 글

파이썬 빅데이터 분석 Day 14  (0) 2023.10.26
파이썬 빅데이터 분석 Day 13  (0) 2023.10.26
파이썬 빅데이터 분석 Day 11  (0) 2023.10.26
파이썬 빅데이터 분석 Day 10  (1) 2023.10.26
파이썬 빅데이터 분석 Day 9  (1) 2023.10.26
'데이터분석실습/데이터 과학 기반의 파이썬 빅데이터 분석' 카테고리의 다른 글
  • 파이썬 빅데이터 분석 Day 14
  • 파이썬 빅데이터 분석 Day 13
  • 파이썬 빅데이터 분석 Day 11
  • 파이썬 빅데이터 분석 Day 10
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (471)
      • 알쓸신잡 (79)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    파이썬
    나동빈
    이것이취업을위한코딩테스트다
    이코테
    그리디
    DFS
    백준
    dp
    이분탐색
    BFS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3

HOME

HOME

상단으로

티스토리툴바