jussam.my_vif_selector¶
jussam.my_vif_selector ¶
VIFSelector ¶
Bases: BaseEstimator, TransformerMixin
VIF(Variance Inflation Factor) 기반 다중공선성 제거기
fit 단계에서 결측치를 제거한 후 VIF 임계값을 초과하는 변수를 VIF가 가장 높은 변수부터 반복적으로 제거한다.
Source code in jussam/my_vif_selector.py
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | |
fit ¶
fit(X, y=None)
개발자가 직접 부르지 않는다. 정의만 해두면 sklearn이 알아서 부른다. VIF 임계값을 초과하는 변수를 제거할 때까지 반복적으로 VIF를 계산하여 삭제 대상 컬럼을 결정한다.(실제 제거는 안함)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
DataFrame or ndarray
|
sklearn이 넘겨주는 학습용 2차원 데이터 |
required |
y
|
array - like
|
사용하지 않음. sklearn이 항상 넘기므로 받아만 둔다 |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
VIFSelector |
자기 자신. sklearn이 다음 단계로 넘기려면 반드시 self를 반환해야 한다 |
Source code in jussam/my_vif_selector.py
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | |
transform ¶
transform(X)
sklearn에 의해서 호출되는 기능이다. 개발자가 직접 부르지 않는다.
pipeline의 fit / predict / score 과정마다. fit에서 확정한 drop_cols_만 떨어내며, train·test에 같은 열 목록을 적용하므로 데이터 누수가 생기지 않는다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
DataFrame or ndarray
|
sklearn이 넘겨주는 2차원 데이터 |
required |
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
다중공선성 열을 제거한 데이터. 다음 단계(스케일러·모델)의 입력이 된다 |
Source code in jussam/my_vif_selector.py
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | |
get_feature_names_out ¶
get_feature_names_out(input_features=None)
sklearn이 호출한다. 개발자가 직접 사용하지 않는다. (BaseEstimator 규약)
sklearn이 현재 작업중인 데이터의 컬럼명을 물을 때 호출된다. 이 변환기는 열을 삭제하므로 drop_cols_를 뺀 나머지 이름만 돌려준다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
input_features
|
array - like
|
sklearn이 지정한 피처 이름. 열 목록은 fit 결과로 이미 정해지므로 사용하지 않는다 |
None
|
Returns:
| Type | Description |
|---|---|
|
np.ndarray: 제거되고 남은 출력 피처 이름 배열 |
Source code in jussam/my_vif_selector.py
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | |