preprocessing
데이터 전처리 모듈
- 데이터의 특징 스케일링(feature scaling)을 위한 방법으로 표준화(Standardization)와 정규화(Normalization) 사용
- 표준화 방법
- 정규화 방법
- scikit-learn에서는 개별 벡터 크기를 맞추는 형태로 정규화
StandardScaler
: 표준화 클래스
In [37]:
iris = load_iris()
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
iris_df.describe()
Out[37]:
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | |
---|---|---|---|---|
count | 150.000000 | 150.000000 | 150.000000 | 150.000000 |
mean | 5.843333 | 3.057333 | 3.758000 | 1.199333 |
std | 0.828066 | 0.435866 | 1.765298 | 0.762238 |
min | 4.300000 | 2.000000 | 1.000000 | 0.100000 |
25% | 5.100000 | 2.800000 | 1.600000 | 0.300000 |
50% | 5.800000 | 3.000000 | 4.350000 | 1.300000 |
75% | 6.400000 | 3.300000 | 5.100000 | 1.800000 |
max | 7.900000 | 4.400000 | 6.900000 | 2.500000 |
In [42]:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
iris_scaled = scaler.fit_transform(iris_df)
iris_df_scaled = pd.DataFrame(data=iris_scaled, columns=iris.feature_names)
iris_df.describe()
Out[42]:
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | |
---|---|---|---|---|
count | 150.000000 | 150.000000 | 150.000000 | 150.000000 |
mean | 5.843333 | 3.057333 | 3.758000 | 1.199333 |
std | 0.828066 | 0.435866 | 1.765298 | 0.762238 |
min | 4.300000 | 2.000000 | 1.000000 | 0.100000 |
25% | 5.100000 | 2.800000 | 1.600000 | 0.300000 |
50% | 5.800000 | 3.000000 | 4.350000 | 1.300000 |
75% | 6.400000 | 3.300000 | 5.100000 | 1.800000 |
max | 7.900000 | 4.400000 | 6.900000 | 2.500000 |
In [44]:
X_train, X_test, y_train, y_test = train_test_split(iris_df_scaled, iris.target, test_size=0.3)
model = LogisticRegression()
model.fit(X_train, y_train)
print('훈련 데이터 점수: {}'.format(model.score(X_train, y_train)))
print('평가 데이터 점수: {}'.format(model.score(X_test, y_test)))
훈련 데이터 점수: 0.9809523809523809
평가 데이터 점수: 0.9111111111111111
MinMaxScaler
: 정규화 클래스
In [49]:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
iris_scaled = scaler.fit_transform(iris_df)
iris_df_scaled = pd.DataFrame(data=iris_scaled, columns=iris.feature_names)
iris_df_scaled.describe()
Out[49]:
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | |
---|---|---|---|---|
count | 150.000000 | 150.000000 | 150.000000 | 150.000000 |
mean | 0.428704 | 0.440556 | 0.467458 | 0.458056 |
std | 0.230018 | 0.181611 | 0.299203 | 0.317599 |
min | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
25% | 0.222222 | 0.333333 | 0.101695 | 0.083333 |
50% | 0.416667 | 0.416667 | 0.567797 | 0.500000 |
75% | 0.583333 | 0.541667 | 0.694915 | 0.708333 |
max | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
In [51]:
X_train, X_test, y_train, y_test = train_test_split(iris_df_scaled, iris.target, test_size=0.3)
model = LogisticRegression()
model.fit(X_train, y_train)
print('훈련 데이터 점수: {}'.format(model.score(X_train, y_train)))
print('평가 데이터 점수: {}'.format(model.score(X_test, y_test)))
훈련 데이터 점수: 0.9238095238095239
평가 데이터 점수: 0.8888888888888888
출처, 참고자료: www.suanlab.com
'Data Science > 파이썬 머신러닝 완벽 가이드' 카테고리의 다른 글
[Dacon] 보스턴 집값 예측 (0) | 2023.04.20 |
---|---|
[sklearn] (3) 모델 성능 평가 지표 (0) | 2023.04.20 |
[sklearn] (1) model_selection 모듈 (0) | 2023.04.20 |
[sklearn] 사이킷런(scikit-learn) 시작하기 (0) | 2023.04.20 |
머신러닝 개념/Concept of Machine Learning (0) | 2023.03.30 |