_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈
FrontPage › Python-LinearRegression

Contents

[-]
1 OLS vs Ridge vs Lasso
2 데이터
3 OLS(ordinary least squares)
4 Ridge
5 Lasso


1 OLS vs Ridge vs Lasso #

Linear Regression의 기본적인 알고리즘은 OLS와 Ridge, Lasso가 같다. 단지 cost function이 다르다.
lm_compare.png

뭐.. 그러하다.

2 데이터 #

#iris 데이터세트 만들기
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
iris.data
iris.feature_names
iris.target
iris.target_names


iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df["target"] = iris.target 
iris_df["target_names"] = iris.target_names[iris.target]
iris_df[:5]



#훈련세트, 테스트세트 나누기
from sklearn.model_selection import train_test_split
train_set, test_set = train_test_split(iris_df, test_size = 0.3)

train_set.shape
test_set.shape


3 OLS(ordinary least squares) #

#선형 회귀(최소제곱)
from sklearn.linear_model import LinearRegression as lm
model_ols = lm().fit(X=train_set.ix[:, [2]], y=train_set.ix[:, [3]])
print(model_ols.coef_)
print(model_ols.intercept_)


#plot
import matplotlib.pyplot as plt
plt.scatter(train_set.ix[:, [2]], train_set.ix[:, [3]],  color='black')
plt.plot(test_set.ix[:, [2]], model_ols.predict(test_set.ix[:, [2]]))

결과
lm.png

4 Ridge #

#Ridge: alpha값을 조정하여 과대/과소적합을 피한다.
from sklearn.linear_model import Ridge
model_ridge = Ridge(alpha=10).fit(X=train_set.ix[:, [2]], y=train_set.ix[:, [3]])

#점수
print(model_ridge.score(X=train_set.ix[:, [2]], y=train_set.ix[:, [3]]))
print(model_ridge.score(X=test_set.ix[:, [2]], y=test_set.ix[:, [3]]))

#plot
import matplotlib.pyplot as plt
plt.scatter(train_set.ix[:, [2]], train_set.ix[:, [3]],  color='black')
plt.plot(test_set.ix[:, [2]], model_ridge.predict(test_set.ix[:, [2]]))

5 Lasso #

#Lasso: alpha값을 조정하여 과대/과소적합을 피한다.
from sklearn.linear_model import Lasso
model_lasso = Lasso(alpha=0.1, max_iter=1000).fit(X=train_set.ix[:, [0,1,2]], y=train_set.ix[:, [3]])

#점수
print(model_lasso.score(X=train_set.ix[:, [0,1,2]], y=train_set.ix[:, [3]]))
print(model_lasso.score(X=test_set.ix[:, [0,1,2]], y=test_set.ix[:, [3]]))

#사용한 특성수
print(np.sum(model_lasso.coef_ != 0))





댓글 남기기..
이름: : 오른쪽의 새로고침을 클릭해 주세요. 새로고침
EditText : Print : Mobile : FindPage : DeletePage : LikePages : Powered by MoniWiki : Last modified 2018-04-13 23:12:52

나는 항상 젊은 사람들의 실패를 흥미로써 바라본다. 젊은 시절의 실패는 곧 성공의 토대가 된다. 실패를 하고 물러섰던가? 다시 일어섰던가? 젊은 사람 앞에는 이 두가지 길이 있는데 이 순간에 성공은 결정되는 것이다. (몰트케)