#python
import pandas as pd
#1. 데이터를 로드
boston=pd.read_csv("c:\\data\\boston_data.csv",encoding="utf-8")
boston
#★파생변수 추가
boston[['lstat2']]=boston[['lstat']]**2 # 모집단의 하위계층의 비율 제곱
boston.head()
#2. 독립변수와 종속변수를 지정합니다.
y= boston[['medv']] #종속변수를 지정합니다.
x=boston[['crim', 'zn', 'indus', 'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax',
'ptratio', 'black', 'lstat','lstat2']] #독립변수들을 지정합니다.
x
#3. 훈련데이터의 일부를 테스트 데이터로 구성해서 훈련과 테스트로 분리합니다.
#9대1로 분리
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y, test_size=0.1,random_state=1)
print(x_train.shape) #(363, 14)
print(x_test.shape) #(41, 14)
print(y_train.shape) #(363, 1)
print(y_test.shape) #(41, 1)
#4. 다중회귀 분석 모델을 생성합니다.
from sklearn.linear_model import LinearRegression
model1=LinearRegression()
model1.fit(x_train,y_train)
#결정계수
model1.score(x_train,y_train) #0.7810037185477743
#5.테스트 데이터를 입력해서 집값예측
test_result=model1.predict(x_test)
test_result
#6. 모델 평가
from sklearn import metrics
metrics.mean_squared_error(y_test,test_result) #8.372796947143687
결론
파생 변수가 없었을때의 결과(10.013949478821727) 보다 파생변수 lstat2를 생성한 결과 오차( 8.372796947143687)의 값이 더 적어졌다.