data-science-summary/summary
RANSAC(RANdom Sample Consensus) in python
고수트
2020. 9. 20. 18:34
반응형
<엔지니어는 구현을 못하면 모르는것이다>
RANSAC(RANdom Sample Consensus)
최소자승법(Linear Least Square)을 통한 예측은 아웃라이어가 있으면 크게 영향을 받는 반면
RANSAN은 가장 많은 수의 데이터들이 예측 모델 근방에 있는 모델을 선택하는 방법으로 아웃라이어에 강건하다.
데이터의 특정 두 점 또는 3점을 랜덤 선택하고 이 점으로 모델을 계산
=> 모델 주위(오차범위내)의 데이터 개수를 계산
=> 계산한 결과가 원하는 데이터 개수보다 적으면 다시 현재 오차범위내 데이터들로 다시 모델을 추정
=> 원하는 데이터 개수를 만족하면 모델을 저장
=> 이를 원하는 만큼 반복한뒤 최적의 모델 선택
from sklearn.linear_model import RANSACRegressor
from sklearn.model_selection import train_test_split
# 회귀용 가상 데이터 생성
from sklearn.datasets import make_regression
# n_samples: 표본 데이터 수 , n_features: 독립변수 수, n_informative: 독립변수중 종속변수와 상관관계 있는 성분 수
X, y = make_regression(n_samples=10000, n_features=10, n_informative=5, random_state=123)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=123)
from sklearn.linear_model import RANSACRegressor
reg = RANSACRegressor().fit(X, y)
reg.score(X_train, y_train)
reg.predict(X_test)
reg.score(X_test, y_test)
반응형