기계 학습 입문vol.10차원 삭감
16193 단어 scikit-learn차원 삭감Python기계 학습 입문기계 학습
각 코드는 Jupyter 시리즈와 iPython에 기술된 대로 실행됩니다.
AI/DX/기계학습/파이톤의 컨설턴트, 사내연수, 세미나 등을 받는다.
웹 사이트에서 문의하세요.
BeeComb Grid 주식회사
기계 학습 입문 시리즈 보도
강좌 3회머신러닝 입문vol.1 Python의 기초1 기술 및 데이터형에 해당->
강좌 3회기계 학습 입문vol.2 Python의 기초 2조건 지점 및 처리에 해당->
강좌 3회기계 학습 입문vol.3 Python의 기본 3 함수 클래스 모듈에 해당->
머신 러닝 시작 vol.4 테이블(Pandas)의 기본 작업->워크숍 3회/4회
강좌 3/4회기계 학습 입문vol.5 도표(Seabrn)의 기본 조작에 해당->
기계학습 입문vol.6회귀-선형회귀-> 강의 4회
기계학습 입문vol.7회귀-랜덤 숲과 파라미터 조화-> 강의 4회
기계학습 입문vol.8회귀-기타회귀(k부근법, 라소회귀, 척추회귀.etc)-> 강의 4회
강좌 제5회기계 학습 입문vol.9 판별(분류)에 해당->
강좌 제6회기계 학습 입문vol.11 컬렉션에 해당->
기계 학습 입문vol.10차원 삭감
차원이 깎이면워크숍에서는 PCA 및 랜덤 매핑, t-SNE를 실천했습니다.차원 삭감을 통해 PCA의 요소 간의 중요성을 볼 수 있을 뿐만 아니라 PCA의 총괄 설명 변수를 통해 기계 학습 훈련의 계산 원가를 삭감할 수 있다.또한 고차원 데이터를 2차원, 3차원으로 자주 변환하여 도표를 통해 데이터의 분포 상황을 볼 수 있는 용법도 있다.
import numpy as np
import pandas as pd
import seaborn as sb
from sklearn.decomposition import PCA
보스턴 데이터 세트를 읽다.# ボストンデータセット
from sklearn import datasets
boston = datasets.load_boston()
boston
데이터 상자에 저장합니다.# データフレームに格納
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['Price'] = boston.target
df
PCA(주성분 분석)PCA 클래스를 사용하여 차원 축소를 진행합니다.학급 문서sklearn.decomposition.PCA는 본가를 확인하세요.매개 변수 ncomponents는 삭감된 차원수를 유지하는 구성 요소라고 생각하십시오.
강좌에서는 시간 관계에서 갑자기 2차원으로 내려간 코드가 소개됐지만, 의도가 없었다면 10차원 이상의 물건이 갑자기 아무런 분석 없이 2차원으로 떨어졌다면 많지 않았을 것이다.
# PCA(主成分分析)を使って次元を2次元に削減
pca = PCA(n_components=2)
vectors = pca.fit_transform(df)
vectors
2차원 공간에서 삭감된 벡터를 배치해 보세요.모든 점이 겹치지 않도록 2차원으로 압축된 모습을 볼 수 있다.# 散布グラフで表示
dfv = pd.DataFrame(vectors, columns=["x","y"])
sb.relplot(x="x", y="y", data=dfv)
계산된 고유 벡터, 주성분의 분산, 기여율 등을 살펴본다.
print('寄与率(%): ', pca.explained_variance_ratio_)
print('累積寄与率(%): ', np.cumsum(pca.explained_variance_ratio_))
print('固有値(主成分の分散): ', pca.explained_variance_)
print('固有ベクトル(主成分の方向): ', pca.components_)
임의 매핑무작위 매핑 클래스 사용sklearn.random_projection.SparseRandomProjection.자세한 매개 변수는 공식 문서를 확인하세요.
무작위 매핑은 다음 기초 위에서'광점'과'배경 스크린'을 준비하여 투영된 그림자를 보고 차원을 낮추는 기법이다.3차원인 사람이 빛을 발하면 뒤쪽 벽에 비친 그림자가 2차원으로 변한다는 이유에서다.
# ランダム写像インポート
from sklearn.random_projection import SparseRandomProjection
rp = SparseRandomProjection(n_components=2)
vectors = rp.fit_transform(df) # ランダムだけに毎回結果は変わるので試行錯誤が必要
vectors
퍼즐로 보여주세요.# 散布グラフで表示
dfv = pd.DataFrame(vectors, columns=["x","y"])
sb.relplot(x="x", y="y", data=dfv)
그 고유의 가치를 살펴봅시다.print('固有ベクトル: ', rp.components_)
print('デンシティ: ', rp.density_)
print('写像フィット時の要素の数: ', rp.n_features_in_)
t-SNE티SNE로 볼게요.자세한 매개 변수는 sklearn.manifold.TSNE의 공식 문서를 참조하십시오.
쉽게 말하면 t-SNE의 목적은'고차원에서의 데이터 사이의 거리를 최대한 줄이는 것'이기 때문에 차원 삭감 시 t분포를 확률 분포에 사용하기 때문에 t-SNE라고 불린다.
어려운 일을 적었지만 PCA와 랜덤 프로젝터 등은 차원이 깎일 때 "사실 거리가 가까운 데이터도 멀리 찍힌다"고 빈번하게 발생해 이를 해결하는 방법으로 활용됐다.(총괄적으로 말하면 데이터 간의 유사도를 손상시키지 않고 차원을 낮추기를 바란다)
항목은 다음과 같습니다.
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2)
vectors = tsne.fit_transform(df)
vectors
퍼즐로 보여주세요.# 散布グラフで表示
dfv = pd.DataFrame(vectors, columns=["x","y"])
sb.relplot(x="x", y="y", data=dfv)
MDS(다차원 척도 구성법)
다차원 척도 구성법(MDS)에서 가져오기sklearn.manifold.MDS 클래스가 사용됩니다.MDS는 데이터 간 거리, 유사도, 비유사도 등을 토대로 차원을 깎아주는 기법이다.
from sklearn.manifold import MDS
mds = MDS(n_components=2)
vectors = mds.fit_transform(df)
vectors
산포도를 보여 보세요.# 散布グラフで表示
dfv = pd.DataFrame(vectors, columns=["x","y"])
sb.relplot(x="x", y="y", data=dfv)
기계 학습 입문 시리즈 보도
강좌 3회머신러닝 입문vol.1 Python의 기초1 기술 및 데이터형에 해당->
강좌 3회기계 학습 입문vol.2 Python의 기초 2조건 지점 및 처리에 해당->
강좌 3회기계 학습 입문vol.3 Python의 기본 3 함수 클래스 모듈에 해당->
머신 러닝 시작 vol.4 테이블(Pandas)의 기본 작업->워크숍 3회/4회
강좌 3/4회기계 학습 입문vol.5 도표(Seabrn)의 기본 조작에 해당->
기계학습 입문vol.6회귀-선형회귀-> 강의 4회
기계학습 입문vol.7회귀-랜덤 숲과 파라미터 조화-> 강의 4회
기계학습 입문vol.8회귀-기타회귀(k부근법, 라소회귀, 척추회귀.etc)-> 강의 4회
강좌 제5회기계 학습 입문vol.9 판별(분류)에 해당->
강좌 제6회기계 학습 입문vol.11 컬렉션에 해당->
AI/DX/기계학습/파이톤의 컨설턴트, 사내연수, 세미나 등을 받는다.
웹 사이트에서 문의하세요.
BeeComb Grid 주식회사
Reference
이 문제에 관하여(기계 학습 입문vol.10차원 삭감), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mychaelstyle/items/69aab0c098dfa1e19e7d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)