본문 바로가기

머신러닝

머신러닝 6일차

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

'머신러닝' 카테고리의 다른 글

머신러닝 5일차  (1) 2023.05.15
머신러닝 4일차  (0) 2023.05.11
머신러닝 3일차  (0) 2023.05.10
머신러닝 2일차  (0) 2023.05.09
ML 1일차  (2) 2023.05.08