일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코드업 1020 자바
- 나누어 떨어지는 숫자 배열 java
- 빅데이터분석기사
- 청년 Ai Big Data 아카데미
- 프로그래머스 가운데 글자 가져오기 python
- 트리의 지름 자바
- 청년 AI Big Data 아카데미 13기
- docker 삭제
- m1 docker install
- 최단 경로 알고리즘
- 최소 스패닝 트리 자바
- 가운데 글자 가져오기 python
- docker 완전 삭제
- 최소 스패닝 트리
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- 나누어 떨어지는 숫자 배열 python
- docker remove
- codeup 1020 자바
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- codeup 1020 java
- 트리의 지름 java
- 핸즈온 머신러닝
- 빅분기실기
- 프로그래머스 가운데 글자 가져오기 파이썬
- 프로그래머스 가운데 글자 가져오기 자바
- 가운데 글자 가져오기 java
- 가운데 글자 가져오기 자바
- m1 docker
- 가운데 글자 가져오기 파이썬
- 코드업 1020 java
- Today
- Total
NineTwo meet you
[빅분기 실기 타파 - 2] 만능코드 만들기 - Classification/Regression 🥊 본문
- Drop
- Fillna
- Encoding & Scaling
- Splite Test, Train
- Modeling
- Submit result
0. 데이터 준비
[빅분기 실기 타파 - 1] Google Colaboratory에 Kaggle 데이터셋 가져오기 🥊
위의 글을 참고로 아래 데이터를 섞어서 설명할 예정입니다.
https://www.kaggle.com/competitions/titanic/data
https://www.kaggle.com/datasets/uciml/pima-indians-diabetes-database
https://www.kaggle.com/datasets/uciml/adult-census-income
https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques
가져온 데이터를 살펴보기
test_data = pd.read_csv("test.csv")
train_data = pd.read_csv("train.csv")
train_data.info()
train_data.describe()
train_data.isnull().sum()
1. Drop
위에서 확인한 데이터 중 필요 없는 칼럼 & 로우를 삭제하자.
아래 코드는 Y 값으로 사용되는 값인 'Glucose'가 0인 로우를 삭제하는 코드다.
d_ind = diabetes_data[diabetes_data['Glucose'] == 0].index
# d_ind
# Int64Index([75, 182, 342, 349, 502], dtype='int64')
diabetes_data.drop(index = d_ind)
2. Fillna
데이터 결측치 처리하기.
3. Encoding & Scaling
데이터의 형에 따라 범주형 데이터는 인코딩을 하거나 수치형 데이터는 스케일링을 통해 데이터를 갈고닦자.
adult_data.info()
cat_features = [
'workclass',
'education',
'marital.status',
'occupation',
'relationship',
'race',
'sex',
'native.country'
]
numeric_features = [
'age',
'fnlwgt',
'education.num',
'capital.gain',
'capital.loss',
'hours.per.week',
]
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
for i in cat_features :
adult_data[i] = le.fit_transform(adult_data[i])
상황에 따라 값을 직접 조건에 맞는 값으로 대체할 수 도 있어야 한다.
adult_data['income'].value_counts()
adult_data['income'] = np.where(adult_data['income'] == '<=50K', 0, 1)
adult_data['income'].value_counts()
# 데이터가 -1과 1 사이에 위치하도록 스케일링
from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler()
adult_data[numeric_features] = scaler.fit_transform(adult_data[numeric_features])
# 데이터의 평균 = 0, 분산 = 1이 되도록 스케일링
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
cols = ['Pregnancies','Glucose','BloodPressure','SkinThickness','Insulin','BMI','DiabetesPedigreeFunction','Age']
diabetes_data[cols] = scaler.fit_transform(diabetes_data[cols])
4. Splite Test, Train
모델링을 위해 위에서 지지고 볶은 데이터 나눠주기 전에 X와 Y가 하나의 데이터로 되어 있다면 우선 X와 Y를 나눠야 한다.
diabetes_data.describe()
Outcome이 Y 나머지 컬럼이 X들이라고 한다면, 다음과 같이 나눌 수 있다.
feature_cols = list(diabetes_data.columns.difference(['Outcome']))
X = diabetes_data[feature_cols]
Y = diabetes_data['Outcome']
# print(X.shape)
# (768, 8)
# print(Y.shape)
# (768,)
Train set 70%와 Test set 30%를 이용해 모델링을 진행해 보자.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, train_size = 0.7, random_state= 1234)
5. Modeling
실제 시험에서 모델링이 잘됐는지 r2 score 라던지, Accuracy score 라던지 확인할 수 있지만 건너뛰고,,
classifier 이면 냅다 RandomForestClassifier , Regression 면 RandomForestRegressor 돌렸습니다.
저는 혹시 몰라 from xgboost import XGBClassifier 도 외워갔습니다.
!pip install sklearn
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
pred = model.predict(X_test)
print(model.score(X_train, y_train))
from sklearn.ensemble import RandomForestRegressor
model = RandomForestClassifier()
model.fit(X_train, y_train)
pred = model.predict(X_test)
print(model.score(X_train, y_train))
from sklearn.linear_model import LogisticRegression
model1 = LogisticRegression()
model1.fit(X_train, y_train)
pred = model1.predict(X_test)
print(model1.score(X_train, y_train))
6. Submit result
시험에서 제출한 csv를 통해 채점을 진행한다고 하니 잘 제출하기.
output.to_csv('titanic.csv', index = False)
'머신러닝' 카테고리의 다른 글
[빅분기 실기 타파 - 1] Google Colaboratory에 Kaggle 데이터셋 가져오기 🥊 (0) | 2023.06.27 |
---|---|
[핸즈온 머신러닝] 1장 정리 (0) | 2021.06.27 |