sklearn에서 'fit_sk'와 'fit_sk'의 차이점은 무엇입니까?
에는 두 가지 함수 sklearn-python이 .transform
그리고.fit_transform
해서대.sklearn.decomposition.RandomizedPCA
.
하지만 그들 사이의 차이점은 무엇일까요?
scikit-learn Estimator api에서,
fit()
모델 변수를 하는 데 됩니다.
transform()
생된 매변수에서 된 매개변수fit()
메서드, 변환된 데이터 세트를 생성하기 위해 모델에 따라 다릅니다.
fit_transform()
조합fit()
그리고.transform()
한 데이터 api
이 책에서 4장을 확인하고 스택 교환을 통해 보다 명확하게 답변합니다.
이러한 방법은 주어진 데이터의 중심화/특성 척도에 사용됩니다.기본적으로 특정 범위 내에서 데이터를 정규화하는 데 도움이 됩니다.
이를 위해 Z-점수 방법을 사용합니다.
우리는 이것을 훈련 데이터 세트에서 수행합니다.
1.Fit(): Method는 파라미터 μ, δ를 계산하여 내부 객체로 저장합니다.
2.변환(): 이러한 계산된 매개변수를 사용하는 방법은 변환을 특정 데이터 집합에 적용합니다.
3.Fit_transform(): 데이터 집합의 변환을 위해 fit() 및 transform() 메서드를 결합합니다.
기능 확장/표준화를 위한 코드 조각입니다(train_test_split 이후).
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_transform(X_train)
sc.transform(X_test)
우리는 우리의 테스트 세트에 동일한 (동일한 두 매개 변수 μ 및 δ (값) 매개 변수 변환을 적용합니다.
그.transform
합니다.PCA
를 들어, 즉, ,.fit
방법.
In [12]: pc2 = RandomizedPCA(n_components=3)
In [13]: pc2.transform(X) # can't transform because it does not know how to do it.
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-13-e3b6b8ea2aff> in <module>()
----> 1 pc2.transform(X)
/usr/local/lib/python3.4/dist-packages/sklearn/decomposition/pca.py in transform(self, X, y)
714 # XXX remove scipy.sparse support here in 0.16
715 X = atleast2d_or_csr(X)
--> 716 if self.mean_ is not None:
717 X = X - self.mean_
718
AttributeError: 'RandomizedPCA' object has no attribute 'mean_'
In [14]: pc2.ftransform(X)
pc2.fit pc2.fit_transform
In [14]: pc2.fit_transform(X)
Out[14]:
array([[-1.38340578, -0.2935787 ],
[-2.22189802, 0.25133484],
[-3.6053038 , -0.04224385],
[ 1.38340578, 0.2935787 ],
[ 2.22189802, -0.25133484],
[ 3.6053038 , 0.04224385]])
그래서 당신은 원합니다.fit
RandomizedPCA
그리고 나서.transform
다음과 같이:
In [20]: pca = RandomizedPCA(n_components=3)
In [21]: pca.fit(X)
Out[21]:
RandomizedPCA(copy=True, iterated_power=3, n_components=3, random_state=None,
whiten=False)
In [22]: pca.transform(z)
Out[22]:
array([[ 2.76681156, 0.58715739],
[ 1.92831932, 1.13207093],
[ 0.54491354, 0.83849224],
[ 5.53362311, 1.17431479],
[ 6.37211535, 0.62940125],
[ 7.75552113, 0.92297994]])
In [23]:
특히 PCA.transform
PCA의 PCA 합니다.X
행렬에 이르기까지Z
.
각각을 사용하는 이유 및 시기fit()
,transform()
,fit_transform()
일반적으로 (X, y)를 데이터 세트로 하는 지도 학습 문제가 있으며, 이를 교육 데이터와 테스트 데이터로 나눕니다.
import numpy as np
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)
X_train_vectorized = model.fit_transform(X_train)
X_test_vectorized = model.transform(X_test)
우리가 토큰화기를 장착하고 있다고 상상해 보십시오. X를 장착하면 테스트 데이터를 토큰화기에 포함시킬 수 있습니다. 하지만 저는 이 오류를 여러 번 보았습니다.
올바른 방법은 X_train에만 적합하는 것입니다. "미래 데이터"를 모르기 때문에 X_test 데이터를 사용하여 아무것도 적합할 수 없습니다!
그러면 검정 데이터를 변환할 수 있지만, 별도로 여러 가지 방법이 있습니다.
팁: 최종팁:X_train_transformed = model.fit_transform(X_train)
는 다음과.X_train_transformed = model.fit(X_train).transform(X_train)
하지만 첫 번째 것이 더 빠릅니다.
제가 "모델"이라고 부르는 것은 보통 scaler, tfidf 변압기, 다른 종류의 벡터라이저, 토큰라이저 등이 될 것입니다.
X는 형상을 나타내고 y는 각 표본의 레이블을 나타냅니다.X는 데이터 프레임이고 y는 Panda Series 객체(일반적으로)입니다.
일반인의 용어로 fit_transform은 일부 계산을 수행한 다음 변환을 수행하는 것을 의미합니다(예: 일부 데이터에서 열 평균을 계산한 다음 결측값을 바꿉니다).따라서 교육 세트의 경우 계산과 변환을 모두 수행해야 합니다.
그러나 테스트 세트의 경우 머신 러닝은 교육 세트에서 학습한 내용을 기반으로 예측을 적용하므로 계산할 필요가 없고 변환만 수행합니다.
방법 간의 일반적인 차이:
- fit(raw_documents[, y]): 원시 문서에 있는 모든 토큰의 어휘 사전을 학습합니다.
- fit_transform(raw_documents[, y]): 어휘 사전을 배우고 용어-문서 행렬을 반환합니다.이 값은 적합한 값과 변환 후의 값과 같으나 보다 효율적으로 구현됩니다.
- 변환(raw_transform):문서를 문서 항 행렬로 변환합니다.적합한 어휘 또는 생성자에게 제공된 어휘를 사용하여 원시 텍스트 문서에서 토큰 카운트를 추출합니다.
fit_transform과 transform 모두 동일한 Document-term 행렬을 반환합니다.
서는 여서기본차다같습다니음과이는인기적▁diffe다▁betweenrence▁basic의 기본적인 차이를 보여줍니다..fit()
&.fit_transform()
:
.fit()
실행할 모델을 위해 두 )를 됩니다. 할 것인지 있습니다. 여기서 우리는 우리가 무엇을 예측할 것인지 알고 있습니다.
.fit_transform()
하나의 객체/파라미터(x)를 갖는 비지도 학습에서 사용되며, 여기서 우리가 무엇을 예측할지 알 수 없습니다.
서로 다른 요소를 가진 두 개의 배열이 '적합'하고 별도로 변환하는 경우, MinMaxScaler와 같은 내부 함수를 기준으로 '어레이 1'을 적합합니다(내부 함수는 평균 및 표준 편차를 찾는 것입니다).예를 들어, 평균과 변환 배열 2를 기준으로 'array 1'을 적합하면, 변환한 배열 2에 배열 1의 평균이 적용됩니다.간단히 말해서, 우리는 다른 배열의 기본적인 내부 함수에서 하나의 배열을 변환합니다.
코드 시연:
import numpy as np
from sklearn.impute import SimpleImputer
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
temperature = [32., np.nan, 28., np.nan, 32., np.nan, np.nan, 34., 40.]
windspeed = [ 6., 9., np.nan, 7., np.nan, np.nan, np.nan, 8., 12.]
n_arr_1 = np.array(temperature).reshape(3,3)
print('temperature:\n',n_arr_1)
n_arr_2 = np.array(windspeed).reshape(3,3)
print('windspeed:\n',n_arr_2)
출력:
temperature:
[[32. nan 28.]
[nan 32. nan]
[nan 34. 40.]]
windspeed:
[[ 6. 9. nan]
[ 7. nan nan]
[nan 8. 12.]]
fit
그리고.transform
적합(평균 기준) 배열 1에 대한 배열 2 변환:
imp.fit(n_arr_1)
imp.transform(n_arr_2)
산출량
아래 출력을 확인하고 이전 두 출력을 기준으로 출력을 관찰하면 차이가 나타납니다.기본적으로 배열 1에서는 결측값이 누락될 때마다 열에 따라 모든 열의 평균을 구하고 배열 2에 적합합니다.
array([[ 6., 9., 34.],
[ 7., 33., 34.],
[32., 8., 12.]])
이는 하나의 어레이를 다른 어레이를 기반으로 변환하려는 경우와 단일 어레이를 사용하여 자체 평균을 기반으로 변환하려는 경우에 수행됩니다.이 조건에서는 fit_transform을 함께 사용합니다.
아래 참조;
imp.fit_transform(n_arr_2)
산출량
array([[ 6. , 9. , 12. ],
[ 7. , 8.5, 12. ],
[ 6.5, 8. , 12. ]])
(위) 또는 다음을 수행합니다.
imp.fit(n_arr_2)
imp.transform(n_arr_2)
산출량
array([[ 6. , 9. , 12. ],
[ 7. , 8.5, 12. ],
[ 6.5, 8. , 12. ]])
동일한 배열을 개별적으로 적합하고 변환하는 이유는 두 개의 라인 코드가 필요합니다. 동일한 배열을 하나의 라인 코드에 적합하고 변환할 수 있는 simple fit_transform을 사용하면 어떨까요?이것이 적합성과 변환, 적합성_변환의 차이입니다.
아래 답변은 모든 종류의 sklearn 관련 lib에 적용 가능합니다.에 대해 알기 전에fit_transform
적합 방법이 무엇인지 살펴보겠습니다.
fit(X)
첫 번째 주성분을 추출하여 X로 모형을 적합시킵니다.
fit_transform(X)
X로 모형을 적합시키고 X에 치수 축소를 적용합니다.
fit_transform
--->fit(x).transform(x)
transform(x)
X에 치수 축소를 적용합니다.
자세한 내용은 여기에서 sklearn 랜덤 PCA 문서를 참조하십시오. 문서를 참조하십시오.
언급URL : https://stackoverflow.com/questions/23838056/what-is-the-difference-between-transform-and-fit-transform-in-sklearn
'programing' 카테고리의 다른 글
ReDim Preserve는 무엇을 합니까? (0) | 2023.06.08 |
---|---|
Vue + Vuex + Phaser 반응형 통화에서 '이' 스코프가 손실됨 (0) | 2023.06.08 |
Oracle: null 및 non-null 행을 카운트하는 방법 (0) | 2023.06.08 |
Xcode 8 - IB Designables - 자동 레이아웃 상태 렌더링 및 업데이트 실패, 에이전트 충돌 (0) | 2023.06.08 |
fputcsv and integer typcasting to string (0) | 2023.06.08 |