12. 데이터 분석하기자동차 연비 분석(22.07.20)
[선형 회귀 분석 + 산점도/선형 회귀 그래프]
목표:자동차 연비 데이터에 회귀분석을 통해 연비에 영향을 미치는 항목을 확인->자동차 연비 예측
1.데이터 수집
UCI Machine Learning Repository 접속 -> auto 검색 -> 검색목록 중 첫번째 클릭 -> data folder클릭 -> auto-mpg.data 다운->csv로 저장
csv로 변경하는 과정에서 일부 컬럼을 추가하는 등의 과정이 있어서 데이터를 올리겠다.
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)
이렇게 한후 해당 정보들을 입력하면 연비에 대한 예측 값을 알려준다.
'데이터분석실습 > 데이터 과학 기반의 파이썬 빅데이터 분석' 카테고리의 다른 글
파이썬 빅데이터 분석 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 |