목록Python/Machine Learning (13)
군침이 싹 도는 코딩
계층적 군집 ( Hierarchical clustering ) 은 K-means 와 마찬가지로 unsupervised 에 사용되는 머신러닝 기법이다 따라서 y값이 존재하지않아 따로 검증하지않는다 이 데이터 프레임으로 계층적 군집을 만들어보겠다 1. X 값을 지정해준다 X = df.loc[:,'Annual Income (k$)':] X 2. 최적의 클러스터 갯수를 찾기 import scipy.cluster.hierarchy as sch sch.dendrogram( sch.linkage(X,method='ward')) plt.title('Dendrogram') plt.xlabel('Customers') plt.ylabel('Euclidean Distances') plt.show() # 세로선이 길어질수록 먼..
동작원리는 먼저 그룹을 몇개로 나눈다음 각 그룹의 중심점을 랜덤으로 잡고 그 중심점을 기준으로 선을 그어 영역을 나눈다 그 영역안을 자신의 색깔로 바꾸고 그 영역안의 중심점을 또 찾아 중심점이 이동한다 이러한 방식을 무한반복하는것이다. 주로 그루핑을 할때 사용한다 이 데이터프레임으로 K-means를 해보겠다 1. nan 을 확인 df.isna().sum() >>> CustomerID 0 Genre 0 Age 0 Annual Income (k$) 0 Spending Score (1-100) 0 dtype: int64 2. X,y 값을 세팅 X = df.iloc[:,3:] X # X의 값만 세팅한 이유는 언수퍼바이즈드 러닝에서는 y값이 없기때문이다 따라서 분류나 수치예측이 아니기때문에 피쳐 스케일링도 필요없..
Decision Tree 의 알고리즘은 이러하다 어떤 결과값을 가지고 계속해서 이분화하는것이다 이 데이터 프레임으로 구매를 예측하는 디시전 트리를 만들어보겠다 1. nan 을 확인 df.isna().sum() >>> User ID 0 Gender 0 Age 0 EstimatedSalary 0 Purchased 0 dtype: int64 2. X,y 를 나눈다 y = df['Purchased'] X = df.loc[:,'Age':'EstimatedSalary'] 3. 피쳐 스케일링 해준다 from sklearn.preprocessing import MinMaxScaler scaler_X = MinMaxScaler() X = scaler_X.fit_transform(X.values) # y는 이미 0과 1이..
그리드 서치란 인공지능을 만들때 여러개의 조건으로 한번에 학습을 돌려주고 최적의 결과값을 뽑아낼 때 사용하는것을 그리드서치라한다 우선은 파라미터로 사용할것을 딕셔너리로 만들어준다 param_grid= {'kernel':['linear','rbf','poly'],'C':[0.1,1,10], 'gamma':[0.01,0.1,1] } 그 후 그리드서치를 사용한다 from sklearn.model_selection import GridSearchCV grid = GridSearchCV( SVC(),param_grid,refit=True,verbose= 4 ) grid.fit(X_train,y_train) # SVC는 사용할 인공지능 param_grid 는 파라미터로 사용할 딕셔너리 refit은 각 파라미터마다 ..
서포트 백터 머신은 실제값과 예측값의 경계에 가장 가까운 두 값을 기준으로 선을 긋고 분류해준다 이때 분류선을 Maximum Margin Classifier 라고 한다 SVM의 차별점은 구분하기 힘든것들까지 구분해준다는것이다 SVM 역시 로지스틱 리그레이션과 동일한 자료를 가지고 동일한 방식으로 만들었기때문에 다른점만 후술한다 1 X,y 를 나눈다 X = df.loc[:,"Age":'EstimatedSalary'] y = df['Purchased'] 2. 피쳐 스케일링을 한다 from sklearn.preprocessing import MinMaxScaler scaler_X = MinMaxScaler() X = scaler_X.fit_transform(X) 3. 트레이닝,테스트셋을 만든다 from skl..
K-NN 알고리즘은 기준점을 기준으로 가까운곳으로 분류하는 알고리즘이다 만드는 방법은 여타 분류 인공지능과 같고 로지스틱 리그레이션과 동일한 데이터프레임으로 했다 따라서 만드는 방법은 생략하고 다른부분만 후술하겠다 classifier = KNeighborsClassifier(n_neighbors=5) # n_neighbors 부분을 지정하지 않는다면 디폴트값이 5이다 이후 정상적으로 인공지능에게 트레인 값을 학습시켜주고 그래프를 시각화해보면 # 이런식으로 나오는데 로지스틱과는 다르게 선형이 아니다 분류를 할때 기준점을 기준으로 가까운곳에 분류를 하기때문이다 cm = confusion_matrix(y_test,y_pred) cm >>> array([[50, 8], [ 4, 38]], dtype=int64)..
인공지능 학습을 위해서는 데이터의 균형이 중요한데 데이터가 불균형할때 이를 맞춰주는 두가지 방법이 있다 up sampling , down sampling 이다 up sampling은 둘중 낮은쪽의 데이터를 추가하는 방식이고 down sampling 은 둘중 높은곳의 데이터를 삭제하는 방법이다 위 데이터 프레임은 당뇨병인 환자와 아닌 환자의 데이터프레임인데 이것을 통해 당뇨병을 분류하는 모델을 만들것이다 우선 당뇨병인 환자와 아닌 사람이 몇명인지 확인해보자 df['class'].value_counts() >>> 0 500 1 268 Name: class, dtype: int64 import seaborn as sb import matplotlib.pyplot as plt sb.countplot(data=d..
이 데이터 프레임은 당뇨병 환자와 아닌 환자의 데이터 프레임이다 이 데이터 프레임에는 이상한점이 있다 위 데이터 프레임의 describe를 보면 Plasma의 최소값이 0 이거나 blood pressure 최소값이 0 이거나 하는등 이상한점이 발견된다 이는 nan이였던곳을 전부 0으로 처리한것이다 인공지능을 만들기전 데이터 전처리를 위해서는 이러한 점을 해결해줘야한다 해결 방법은 데이터가 0인곳을 nan으로 다시바꿔 nan이 들어있는 데이터를 제거하거나 nan을 다른값으로 바꿔주면 된다. df.loc[:,'Plas':'age'] = df.loc[:,'Plas':'age'].replace(0,np.nan) df # replace 함수를 사용해 0인 데이터를 다시 NaN으로 돌린다 df.fillna( df...