728x90
회귀분석 복습
분류 이산값
회귀 연속값
시그모이드함수 최적선 통과 하면 0에서 1사이의 값으로 조정됨
y값은 0과 1사이값 반환
회귀값은 -1 을 곱하기때문에 사용시 -1 다시 곱해야함
----------------------------------------------------------------------------------------------------------------------
차원축소
PCA 주성분분석
기존피처를 저차원의 중요피처로 압축(축소)
중요피처 : 분산이 높은 데이터
높은 분산을 가지는 데이터 축 찾아 차원축소
첫번째 벡터 축: 가장 큰 데이터 변동성기반 생성
두번째 벡터 축: 위 벡터에 직각이되는 벡터 축 생성
세번째 벡터 : 두번째 축과 직각이되는 벡터 축 생성 생성된 축에 원본데이터 투영 -> 벡터 축개수만큼 차원축
.
.
.
##pca 전 스케일링 진행
from sklearn.preprocessing import StandardScaler
df_scaled = StandardScaler().fit_transform(df.iloc[:,:-1])
from sklearn.decomposition import PCA
##pca 생성
## 변환할 차원의수 :2 설정 ,이후 입력데이터 세트 호출
pca = PCA(n_components=2)
pca_df=pca.fit_transform(df_scaled)
#데이터 프레임으로 변경하고 칼럼명 설정
df_pca1 = pd.DataFrame(df_pca,columns=['pca1','pca2'])
# 타겟값 넣고 확인
df_pca1['target'] = iris.target
df_pca1.head(2)
markers= ['^','s','o']
for i,marker in enumerate(markers):
#타겟이 i값이랑 같으면 sepal_length값 넣음
#setosa 의 target값은 0, vversicolor는 2, virginica는 2
#각 target 별로 다른 모양으로 산점도 표시 세모, 네모 ,동그라미 로
#sepal_length는 iris.feature_names에서 확인
x = df[df['target']==i]['sepal_length']
y = df[df['target']==i]['sepal_width']
plt.scatter(x,y,marker=marker,label=iris.target_names[i])
plt.legend()
plt.xlabel('sepal_length')
plt.ylabel('sepal_width')
plt.show()
개별 컴포넌트 변동성 확인
# 전체변동성에서 개별pca컴포넌트별로 차지하는 변동성 비율
pca.explained_variance_ratio_
결과
array([0.72962445, 0.22850762])
728x90