In [1]:
df1 = pd.read_csv("nyc.csv", encoding = "ISO-8859-1")
df1.head(2)
Out[1]:
이 데이터를 이용하여 저녁 식사 가격을 예측하는 선형 회귀 모형을 작성하고 다음 질문에 답하라 (주의 사항: from_formula
메서드를 사용하여 작성할 것)
In [2]:
model1 = sm.OLS.from_formula("Price ~ Food + Decor + Service + C(East)", data=df1)
result1 = model1.fit()
print(result1.summary())
#1부터 30이라서 굳이 스케일링을 하지 않아도 되는 문제였다.
In [3]:
sm.stats.anova_lm(result1)
#Food의 F값이 가장 크기 때문에 영향력이 가장 크다.
Out[3]:
C(East)의 ANOVA 유의 확률은 0.0001371938 이므로 유의하다.
다음 데이터를 이용하여 자동차의 가격을 결정하기 위한 모형을 작성하라. 각 열은 다음과 같은 의미를 가진다.
모형 작성시 다음과 같은 순서로 작성하라
In [4]:
df20 = pd.read_csv("cars04.csv")
df2 = df20[["EngineSize", "Cylinders", "Horsepower", "HighwayMPG", "Weight", "WheelBase", "Hybrid", "SuggestedRetailPrice"]]
df2.head(2)
Out[4]:
In [5]:
model2 = sm.OLS.from_formula("SuggestedRetailPrice ~ EngineSize + Cylinders + Horsepower + HighwayMPG + Weight + WheelBase + C(Hybrid)", data=df2)
result2 = model2.fit()
print(result2.summary())
In [6]:
sns.pairplot(df2)
plt.show()
In [7]:
df30 = pd.DataFrame(index=df2.index)
df30["EngineSize"] = df2.EngineSize
df30["LogCylinders"] = np.log(df2.Cylinders)
df30["LogHorsepower"] = np.log(df2.Horsepower)
df30["LogHighwayMPG"] = np.log(df2.HighwayMPG)
df30["Weight"] = df2.Weight
df30["LogWheelBase"] = np.log(df2.WheelBase)
df30["Hybrid"] = df2.Hybrid
df30["LogSuggestedRetailPrice"] = np.log(df2.SuggestedRetailPrice)
In [10]:
# sns.pairplot(df30)
# plt.show;
In [8]:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler(with_mean=False)
df3 = pd.DataFrame(scaler.fit_transform(df30), columns=df30.columns)
#다항변환은 로그변환에 포함이 된다. 그래서 일반적으로 하는 것은 로그를 취하면 된다.
In [11]:
model3 = sm.OLS.from_formula("LogSuggestedRetailPrice ~ EngineSize + LogCylinders + LogHorsepower + LogHighwayMPG + Weight + LogWheelBase + C(Hybrid)", data=df3)
result3 = model3.fit()
print(result3.summary())
-상관계수 값이 0.9가 넘어갈 경우는 현실세계에서 보통 없다.
-넘어간 경우는 보통 mean값을 0을 안주고 구한 경우. R스퀘어 값이 크게 나온다. bias를 고려하지 않았기 때문
In [12]:
sm.stats.anova_lm(result3)
Out[12]:
결과에서 LogWheelBase 와 LogHighwayMPG 생략
In [13]:
model4 = sm.OLS.from_formula("LogSuggestedRetailPrice ~ EngineSize + LogCylinders + LogHorsepower + Weight + C(Hybrid)", data=df3)
result4 = model4.fit()
print(result4.summary())