목록Python (138)
군침이 싹 도는 코딩
그리드 서치란 인공지능을 만들때 여러개의 조건으로 한번에 학습을 돌려주고 최적의 결과값을 뽑아낼 때 사용하는것을 그리드서치라한다 우선은 파라미터로 사용할것을 딕셔너리로 만들어준다 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...
해당 데이터 프레임으로 구매여부를 예측하는 로지스틱 리그레이션을 만들어보자 로지스틱 리그레이션은 분류예측을 할때 사용되는 인공지능이다. 코딩방식은 리니어 리그레이션과 비슷하므로 다른점만 # 로 후술한다 1. nan 을 찾는다 df.isna().sum() >>> User ID 0 Gender 0 Age 0 EstimatedSalary 0 Purchased 0 dtype: int64 2.카테고리컬 데이터인 Purchased 데이터를 정렬해준다 df['Purchased'].unique() >>> array([0, 1], dtype=int64) 3.X,y를 나눈다 X = df.loc[:,'Age':'EstimatedSalary'] y = df['Purchased'] 4. 피쳐 스케일링을 한다 from sklea..
경력과 연봉이 있는 데이터 프레임을 리니어 리그레이션으로 모델링 해보자 1. nan 확인 df.isna().sum() >>> YearsExperience 0 Salary 0 dtype: int64 # nan 이 없는것을 확인했다 만약 있다면 값을 바꿔줘야한다 2. X와 y로 분리 X = df.loc[:,'YearsExperience'].to_frame() y = df['Salary'] # X는 경력 y는 연봉 3. 문자열 데이터를 숫자로 바꿔준다. # 위 데이터 프레임은 문자열이 없으므로 생략 4. 피쳐 스케일링 # 리니어 리그레이션은 자체적으로 피쳐스케일링을 해주기때문에 생략 5. Training / Test 셋으로 분리 from sklearn.model_selection import train_tes..
X >>> array([[1. , 0. , 0. , 0.73913043, 0.68571429], [0. , 0. , 1. , 0. , 0. ], [0. , 1. , 0. , 0.13043478, 0.17142857], [0. , 0. , 1. , 0.47826087, 0.37142857], [1. , 0. , 0. , 0.34782609, 0.28571429], [1. , 0. , 0. , 0.91304348, 0.88571429], [0. , 1. , 0. , 1. , 1. ], [1. , 0. , 0. , 0.43478261, 0.54285714]]) y >>> array([0, 1, 0, 0, 1, 1, 0, 1]) X와 y를 트레이닝용과 테스트용으로 나눠보겠다 from sklearn.model_s..