데이터 세트 분리 및 시각화(선형 회귀)

2023. 9. 17. 15:40데이터분석

import matplotlib.pyplot as plt
import pandas as pd
dataset=pd.read_csv('LinearRegressionData.csv')
dataset.head()

 

X=dataset.iloc[:,:-1].values #독립변수
y=dataset.iloc[:,-1].values #종속변수score만 iloc 진행

from sklearn.model_selection import train_test_split 
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0) 
#test_size는 8:2비율로 나눈다는 의미 / random_state는 랜덤으로 데이터를 뽑기

X,len(X) #전체 데이터 X개수
(array([[ 0.5],
        [ 1.2],
        [ 1.8],
        [ 2.4],
        [ 2.6],
        [ 3.2],
        [ 3.9],
        [ 4.4],
        [ 4.5],
        [ 5. ],
        [ 5.3],
        [ 5.8],
        [ 6. ],
        [ 6.1],
        [ 6.2],
        [ 6.9],
        [ 7.2],
        [ 8.4],
        [ 8.6],
        [10. ]]),
 20)
X_train, len(X_train) #훈련 세트 x,개수  #80비율
X_test,len(X_test)  #20비율
(array([[ 8.6],
        [ 1.2],
        [10. ],
        [ 4.5]]),
 4)
y_train, len(y_train)
(array([60, 86, 42, 68, 22, 14, 30, 72, 58, 48, 76, 72, 26, 10, 58, 62]), 16)
In [69]:
 
y_test,len(y_test)
(array([ 90,   8, 100,  38]), 4)
#분리된 데이터를 통한 모델링
from sklearn.linear_model import LinearRegression
reg=LinearRegression() #선형회귀 객체 생성

reg.fit(X_train,y_train)  #훈련 세트 학습

#훈련 데이터 시각화
plt.scatter(X_train,y_train,color='blue') #산점도
plt.plot(X_train,reg.predict(X_train),color='green') #선 그래프  #y는 예측값으로지정
plt.title('score by hours(train data)')
plt.xlabel('hour')
plt.ylabel('score')
plt.show()

#테스트 데이터 시각화
plt.scatter(X_test,y_test,color='blue') #산점도
#모델을 만들 때 train 데이터를 사용했으므로 아래 코드는 그대로 둔다.
plt.plot(X_train,reg.predict(X_train),color='green') #선 그래프  #y는 예측값으로지정
plt.title('score by hours(train data)')
plt.xlabel('hour')
plt.ylabel('score')
plt.show() 

#테스트 데이터 4개가 시각화됨.

print(reg.coef_) #x절편
print(reg.intercept_) #y절편
[10.49161294]
0.6115562905169796
#모델 평가
print(reg.score(X_test,y_test)) #테스트 세트를 통한 모델평가 0이면 점수가 낮고 1에 가까우면 점수가 높음
print(reg.score(X_train,y_train)) #훈련 세트를 통한 모델평가
0.9727616474310156
0.9356663661221668