주피터노트북 44

[머신러닝7] 계층적 군집 알고리즘: Hierarchical Clustering / Dendogram

Hierarchical Clustering 계층적 군집이란 가까운 두개데이터끼리 묶고 또 그 묶음과 가까운 데이터를 묶고 이런식으로 완전히 모든 데이터가 묶일때 까지 작업하는 알고리즘 유사 개채끼리 계속 군집화를 수행하다 보니 k-means와 달리 클러스팅갯수를 사전에 정하지 않아도가능하다 개체들이 결합되는 순서를 나타내는 트리형태의 구조인 덴드로그램을 통해 시각적으로 k의 갯수를 쉽게 정할 수 있다. 데이터는 수입별 구매점수를 의미 이데이터를 통해 군집화하여 최적의 그룹으로 나누기 트레이닝 기본 1. nan확인 2.x와y분리 언수퍼 바이즈드 러닝은 결과값이 없기때문에 x데이터는 존재하지만 y데이터는 존재하지 않는다 3.문자열이 있다면 숫자로 바궈주기 4.피셔츠케일링을 통해 값 맞춰주기 5.트레이닝 / ..

[머신러닝6] 데이터평균군집 알고리즘: K-means

unsupervised는 결과값을 정하는 supervised 머신러닝과 다르게 데이터를 군집(클러스팅)화 하여 자동으로 묶어주는 머신러닝을 의미한다 k-means 알고리즘이란 데이터를 k개의 묶음을 정해 그거리의 평균을 내는 알고리즘을 뜻한다. 아직 군집이 정해지지 않은 데이터 무리들 사이에 임의점 점(좌표)를 찍고 그 좌표를 중심으로선을 나눠 집단을 형성 그리고 또다른 좌표를 찍고 다시 선을 그어 데이터가 나눠보면서 계속해서 이과정을 반복을한다. 이과정을 반복하다가 더이상 데이터의 변동이 일어나지 않을때 최적의 클러스팅을 찾은것 데이터는 수입별 구매점수를 의미 이데이터를 통해 여러 소비군집을 나누기 트레이닝 기본 1. nan확인 2.x와y분리 언수퍼 바이즈드 러닝은 결과값이 없기때문에 x데이터는 존재하..

가장 적합한 매개변수찾기: grid search

[머신러닝4] Support Vector Machine (tistory.com) [머신러닝4] Support Vector Machine 서포트 벡터 머신 서포트 벡터머신이란 데이터를 분류하는 선중에 마진을 최대화 하는 경계면을 찾아서 나눠준다 마진이란 데이터를 분류해서 나눴을때 그 분류에서 가장 먼 데이터끼리의 사 seonggongstory.tistory.com 이렇게 커널값 하나만으로 정확도 차이가 많이 나기 때문에 이데이터 프레임에 맞는 정확도 높은 커널을 찾기 위해 여러번 작업을 해야한다. 그런 수고를 덜기위해 그리드 서치가 있다 Grid Search 그리드 서치란 머신러닝중 여러 하이퍼파라미터 값 조합을두고 가능한 모든 조합을 시도해보는 라이브러리를 뜻한다. from sklearn.model_se..

[머신러닝4] Support Vector Machine

서포트 벡터 머신 서포트 벡터머신이란 데이터를 분류하는 선중에 마진을 최대화 하는 경계면을 찾아서 나눠준다 마진이란 데이터를 분류해서 나눴을때 그 분류에서 가장 먼 데이터끼리의 사이를 의미함 가장 분류가 잘 나타나는 것들끼리 선에서 멀어지고 구분하기 힘든 데이터는 클래서파이어에 가까워짐 마진을 최대화 하여 분류하기 때문에 특이한것 까지 비슷한 부류로 묶는데에 많이 사용 동일하게 연봉과 나이 성별, 구매여부가 있는 데이터 이데이터를 KNN 머신러닝을 통해 새로운데이터가 나타났을때 어느쪽으로 분류를 할지 정하기 트레이닝 기본 1. nan확인 2.x와y분리 3.문자열이 있다면 숫자로 바궈주기 4.피셔츠케일링을 통해 값 맞춰주기 5.트레이닝 / 테스트 셋으로 분리시키기 [머신러닝0] 머신러닝의 기초(총정리) (..

머신러닝중 샘플표본이 부족할때: oversampling

머신러닝에 필요한 데이터를 수집한후 러닝을 돌리려할때 모은 표본의 비율이 불균형하거나 너무 양이 적을때가 있다. 정상과 비정상의 결과중 정상이 과대수집되어있다면 비정상의 결과도 정상으로 예측해버리는 결과가 나올수 있다는것 즉 '정확도'가 낮아진다는것이다. 이경우가 반대 경우보다 심각한문제를 야기하는데 맞는걸 틀리다고 예측하는경우 직접 수정해주면 문제가 해결이 되지만 비정상을 정상으로 처리해버리면 추적이 쉽지 않기 때문이다. 이런경우 up sampling기법으로 1의결과값의 데이터를 늘려주면됨 from imblearn.over_sampling import SMOTE ※imblearn 라이브러리는 설치를 해줘야함 sm = SMOTE() sm.fit_resample(X,y) 이렇게 하면 둘의 수가 맞춰진다. ..

데이터프레임안 nan대신 0으로 채워저 있을때 : pandas replace

머신러닝 작업하기위해 데이터를 수집하는 단계에서 데이터프레임안 NaN데이가 있는지 판단하기 위해 df.isna().sum()을 사용할때 이런식으로 nan데이터는 없다고 나오지만 디스크라이브를 통해 분석을 해보면 나이나 피부 등등 0이 나올수 없는 값이 0이 나오는경우가 있다. 이런경우 데이터프레임에 nan대신 0을 집어 넣었다는 이야기가 된다. 이런경우 판다스 데이터프레임 함수 replace를 활용하면 좋다 df.loc[ :,컬럼].replace(바꾸기전 내용, 바꿀 내용) 저 데이터에선 df.loc[ :,'Plas':'age'].replace(0, np.nan) 이렇게 하면 0을 nan데이터로 바꿔버릴수 있음 df.loc[ :,컬럼].replace(바꾸기전 내용, 바꿀 내용)

[머신러닝2] 범주형 변수예측: Logistic Regression

Logistic Regression 리그레이션(회귀분석) 이지만 독립 변수간의 관계를 구체적인 함수로 나타내어 향후 예측 모델에 사용하는 것이다. 사건발생의 가능성을 예측하는데 사용하며 확률의 문제이기 때문에 일반회귀분석과 다르게 값은 0,1로 예측을 해준다고 생각하면 된다. 그렇다면 나이와 연봉으로 물건을 구매할지 안할지 분류를 해보자 사용할 데이터프레임은 성별, 나이, 연봉, 구매유무로 나뉜 데이터로 유도 마지막 컬럼인 구매유무는 구매 했는지 안했는지 값이니까 0과 1이다 트레이닝 기본 1. nan확인 2.x와y분리 3.문자열이 있다면 숫자로 바궈주기 4.피셔츠케일링을 통해 값 맞춰주기 5.트레이닝 / 테스트 셋으로 분리시키기 -----------------------------------------..

[머신러닝1] 수치예측: regression

regression regression은 y=ax+b라는 직선 방정식으로 봤을때 x와 y값의 데이터를 학습시켜서 a와 b를 찾아 내는것이 이 머신러닝의 목표 직선의 방정식을 컴퓨터가 계산하여 직선의 기울기와 Y절편을 구해줌 계수를 찾아내고 예측치와 실제값의 오차를 줄여나가는것 예를 들면 y가 연봉 x가 연차라고 생각하면 편하다. 그럼 이러한 데이터들을 모아 연차별 연봉을예측함 이런식으로 어떤 데이터가 예측된 직선에 가까운 값을 찾아준다 벌어진 오차만큼의 간격을 많은 데이터를 통해 줄여나가는것 연차별 연봉데이터가 있을때 특정연차의 연봉을 예상하기 x와 y데이터로 분리 할때 내가 알고싶은 값이 연봉이니까 연봉이 y X = df.loc[ : ,'YearsExperience' ].to_frame() 여기서 to..

Dataset traing, test set으로 나누기

어떠한 결과를 도출해내기 위한 머신러닝을 위해 도출해내려는 값y 학습시킬 데이터를 x로 표현하는데 머신러닝을 돌렸을때 학습용만 데이터가 있다면 나중에 결과값이 정확하지 않는경우가 있음 그래서 테스트용과 트레이닝용으로 값을 나눠준다 from sklearn.model_selection import train_test_split 머신러닝을 위해 준비한 데이터는 x값이든 y값이든 트레이닝용 데이터와 테스트용 데이터 준비 train_test_split(X,y, test_size = 0.n , random_state=n) 테스트 사이즈는 0.n => 준비된 데이터의 n% 랜덤 스테이트 n은 random으로 돌릴값 sedd라고 생각 각각 순서대로 첫번째 array는 x데이터 학습 두번째는 x데이터 테스트용 3번째는 ..

[numpy, pandas] time Seires: datetime64 / pd.to_datetime / pd.date_range()

[numpy] datetime64 기존의 파이썬 datetime 을 보강하기 위해, date 의 array 도 처리할 수 있게 numpy 에서 64-bit 로 처리하도록 라이브러리를 강화한 형태 np.array('날짜', dtype = np.datetime64) 이렇게 datetiem64를 활용할경우 연산이 훨씬 편해진다 당연히 넘파이 함수이기 때문에 arange와 연산도 가능하다 판다스 to_datetime 문자열로 되어있는 날짜의 리스트를 한번에 파이썬의 날짜형식으로 변환하는 함수 pd.to_datetime(date_list) 그냥 눈으로 봤을때는 날짜 형식이지만 실제로는 문자열로 되어있는 데이터를 쉽게 날짜로 바꿔버림 전체 데이터를 날짜로 바꿨기 때문에 모든 데이터를 쉽게 가공할수있음 [pandas..