주요함수
1. ols()
- ols() 함수 내에 종속변수와 독립변수 선언
- ols() 함수의 fit() 메서드로 모델 적합
- 변수명에 온점 등 특정 특수문자가 있는 경우 오류 발생
- 모댈 객체의 predict() 메서드로 예측
2. LinearRegression()
- 함수 내 fit_intercept로 절편 적합 여부 설정 가능
- fit() 메서드에 학습 데이터 할당 가능
coef_와intercept_어트리뷰트로 각각 계수와 절편 확인 가능- 모델 객체의 predict() 메서드로 예측
3. mean_absolute_error()
- MAE 연산
4. mean_sqaured_error()
- 해당 결과에 제곱근 연산을 하면 RMSE 계산 가능
df = pd.read_csv("bike.csv")
df_train, df_test = train_test_split(df, train_size = 0.7, random_state = 123)
model = ols(formula = "casual ~ atemp", data = df_train).fit()
pred = model.predict(df_test)
model.summary() # R-squared 값 보면 됨
df = pd.read_csv("bike.csv")
df_train, df_test = train_test_split(df, train_size = 0.7, random_state = 123)
model = ols(formula = "casual ~ atemp", data = df_train).fit()
pred = model.predict(df_test)
mean_squared_error(y_pred = pred,
y_true = df_test["casual"]) ** 0.5
df = pd.read_csv("bike.csv")
df_summer = df.loc[df["season"] == 2, ]
df_winter = df.loc[df["season"] == 4, ]
df_s_train, df_s_test = train_test_split(df_summer, train_size = 0.7, random_state = 123)
df_w_train, df_w_test = train_test_split(df_winter, train_size = 0.7, random_state = 123)
model_s = ols(formula = "casual ~ atemp", data = df_s_train).fit()
model_w = ols(formula = "casual ~ atemp", data = df_w_train).fit()
pred_s = model_s.predict(df_s_test)
pred_w = model_w.predict(df_w_test)
RMSE_S = mean_squared_error(y_pred = pred_s,
y_true = df_s_test["casual"]) ** 0.5
RMSE_W = mean_squared_error(y_pred = pred_w,
y_true = df_w_test["casual"]) ** 0.5
abs(RMSE_S - RMSE_W)
주요함수
1. dmatrices()
- 분산 팽창 계수 확인을 위해 입력 데이터를 전처리 할 때 필요한 함수
- return_type 인자에 dateframe으로 설정 시 후처리 용이
2. variance_inflation_factor()
- 반복문 또는 list comprehension 사용
df = pd.read_csv("diamonds.csv")
db_sub = df.iloc[:, [6,0,4,5,7,8,9]] # 수치형 데이터만 뽑기
y, X = dmatrices(" price ~ " + " + ".join(df_sub.coulmuns[1:]),
data = df_sub, return_type = "dataFrame")
df_vif = pd.DataFrame()
df_vif["vars"] = X.columns
df_vif["VIF"] = [vif(X.values, i) for i in range(X.shape[1])]
df_vif # 10 이상인 값들 총 4개
df = pd.read_csv("diamonds.csv")
model = ols(formula = "price ~ carat + depth", data = df).fit()
df_test = pd.DataFrame({"carat":[1], "depth":[60], "table":[55]})
model.predict(df_test)
df = pd.read_csv("diamonds.csv")
df_sub = df.loc[:, ["price", "carat", "color", "depth"]]
df_dum = pd.get_dummies(df_sub, columns = ["color"], drop_first = True)
model = ols(forumula = "price ~ " + "+".join(df_dum.columns[1:]),
data = df_dum).fit()
df_test = df_dum.iloc[[0], ]
df_test["carat"] = 1
df_test["depth"] = 50
model.predict(df_test)