18강 최종 실습 - 타이타닉3
##데이터 전처리 이어서
df1 = train
df1['Age'].fillna(df1['Age'].median(), inplace=True) #결측치에 중위값
df2 = test
df2['Age'].fillna(df2['Age'].median(), inplace=True)
train['Age'].isnull.sum() #잘 처리되었는지 확인 -> 0 출력
test['Age'].isnull.sum()
train['Embarked'].value_counts() #Embarked 결측치 2개 있는 거 처리
train["Embarked"] = train["Embarked"].fillna("S") #결측치 S로 채워넣음
train['Embarked'][train["Embarked"] == "S"] = 0
train['Embarked'][train["Embarked"] == "C"] = 1
train['Embarked'][train["Embarked"] == "Q"] = 2
#train 값 매핑시키기
test['Embarked'][test["Embarked"] == "S"] = 0
test['Embarked'][test["Embarked"] == "C"] = 1
test['Embarked'][test["Embarked"] == "Q"] = 2
#test 값 매핑시키기
train.head() #잘 바뀌었는지 확인
train['Embarked'].isnull().sum() #결측치 없는지 확인
test['Embarked'].isnull().sum()
test['Fare'].fillna(df["Fare"].mean(), inplace=True) #평균값으로 결측치 채우기
#성별 매핑
sex_mapping = {"male": 0, "female": 1}
train['Sex'] = train['Sex'].map(sex_mapping)
test['Sex'] = test['Sex'].map(sex_mapping)
#필요없는 데이터 삭제
train = train.drop(['Name'], axis = 1)
test = test.drop(['Name'], axis = 1)
train = train.drop(['PassengerId'], axis = 1)
test = test.drop(['PassengerId'], axis = 1)
train = train.drop(['Title'], axis = 1)
test = test.drop(['Title'], axis = 1)
train = train.drop(['Cabin'], axis = 1)
test = test.drop(['Cabin'], axis = 1)
train = train.drop(['Ticket'], axis = 1)
test = test.drop(['Ticket'], axis = 1)
test.head() #잘 됐는지 확인
train.isnull().sum()
test.isnull().sum()
## 전처리 끝
##데이터 모델링
from sklearn.model_selection import train_test_split
pred = train.drop(['Survived'], axis = 1)
target = train["Survived"]
x_train, x_test, y_train, y_test = train_test_split(pred, target, test_size = 0.3)
#예측해야 할 것이 Survived 이기 때문에 따로 떼어내서 이걸로 예측을 해보는 거(설명 개구려..)
#로지스틱 회귀
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
logr = LogisticRegression()
logr.fit(x_train, y_train)
y_pred = logr.predict(x_test)
acc_logr = round(accuracy_score(y_pred, y_test) * 100, 2)
print(acc_logr) #79.85
#결정트리
from sklearn.tree import DecisionTreeClassifier
decisiontree = DecisionTreeClassifier()
decisiontree.fit(x_train, y_train)
y_pred = decisiontree.predict(x_test)
acc_decisiontree = round(accuracy_score(y_pred, y_test) * 100, 2)
print(acc_decisiontree) #77.24
#랜덤 포레스트
from sklearn.ensemble import RandomForestClassifier
randomforest = RandomForestClassifier()
randomforest.fit(x_train, y-train)
y_pred = randomforest.predict(x_test)
acc_randomforest = round(accuracy_score(y_pred, y_test) * 100, 2)
print(acc_randomforest) #80.6
#KNN
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
knn.fit(x_train, y_train)
y_pred = knn.predict(x_test)
acc_knn = round(accuracy_score(y_pred, y_test) * 100, 2)
print(acc_knn) #74.25
# 총 정리
models = pd.DataFrame({
'Model' : ['KNN', 'Logistic Regression', 'Random Forest', 'Decision Tree'],
'Score' : [acc_knn, acc_logr, acc_randomforest, acc_decisiontree]
})
models.sort_values(by='Score', ascending=False)
#스코어 높은 순으로 표로 정렬
이렇게 강의가 끝났다..
설명도 아주 빈약하고.. 해서.. 아쉬움이 많이 남는 강의지만 애초에 많은 걸 얻기 위해 들은 강의가 아니었기에 이정도면 나름 만족한다.
그리고 실습하는 코드들을 직접 따라쳐보니 아직 잘은 모르지만, 대충 구조정도는 감이 오는 것 같다. 이제 앞으로 더 자세히 배워나가면 되겠지😥
'스터디📖 > ML, DL' 카테고리의 다른 글
Tensorflow (python) - 5, 6강 표를 다루는 도구 '판다스' (0) | 2021.08.23 |
---|---|
Tensorflow (python) - 1, 2, 3, 4강 (0) | 2021.08.21 |
머신러닝 처음 시작하기(인프런) - 17강 최종실습 - 타이타닉2 (0) | 2021.08.18 |
머신러닝 처음 시작하기(인프런) - 16강 최종실습 - 타이타닉1 (0) | 2021.08.17 |
머신러닝 처음 시작하기(인프런) - 15강 데이터 전처리 (0) | 2021.08.16 |