資源簡介
用隨機森林實現(xiàn)泰坦尼克號數(shù)據(jù)集的分類預測,包含參數(shù)調(diào)試過程和分類結(jié)果評估,并繪制ROC曲線。
代碼片段和文件信息
#?!/usr/bin/env?python
#?_*_?coding:?utf-8?_*_
#?_*_?coding:?utf-8?_*_
import?numpy?as?np
import?pandas?as?pd
from?matplotlib?import?pyplot?as?plt
from?sklearn.ensemble?import?RandomForestClassifier
from?sklearn.model_selection?import?GridSearchCV
from?sklearn.model_selection?import?train_test_split
from?sklearn?import?metrics
import?time
np.seterr(divide=‘ignore‘?invalid=‘ignore‘)
train?=?pd.read_csv(“titanic/train.csv“?dtype={“Age“:?np.float64})
#?數(shù)據(jù)清洗
def?harmonize_data(titanic):
????#?填充空數(shù)據(jù)?和?把string數(shù)據(jù)轉(zhuǎn)成integer表示
????#?對于年齡字段發(fā)生缺失,我們用所有年齡的均值替代
????titanic[“Age“]?=?titanic[“Age“].fillna(titanic[“Age“].median())
????#?性別男:?用0替代
????titanic.loc[titanic[“Sex“]?==?“male“?“Sex“]?=?0
????#?性別女:?用1替代
????titanic.loc[titanic[“Sex“]?==?“female“?“Sex“]?=?1
????titanic[“Embarked“]?=?titanic[“Embarked“].fillna(“S“)
????titanic.loc[titanic[“Embarked“]?==?“S“?“Embarked“]?=?0
????titanic.loc[titanic[“Embarked“]?==?“C“?“Embarked“]?=?1
????titanic.loc[titanic[“Embarked“]?==?“Q“?“Embarked“]?=?2
????titanic[“Fare“]?=?titanic[“Fare“].fillna(titanic[“Fare“].median())
????return?titanic
train_data?=?harmonize_data(train)
test?=?pd.read_csv(“titanic/test.csv“?dtype={“Age“:?np.float64})
test_data?=?harmonize_data(test)
#?列出對生存結(jié)果有影響的字段
predictors?=?[“Pclass“?“Sex“?“Age“?“SibSp“?“Parch“?“Fare“?“Embarked“]
#?不調(diào)參
x?=?train[predictors]
y?=?train_data[‘Survived‘]
x_test?=?test[predictors]
y_test?=?test_data[‘Survived‘]
#?拆分訓練集和測試集(這里由于給了另外給了測試集,此處無需拆分)
#?feature_train?feature_test?target_train?target_test?=?train_test_split(x?y?test_size=0.3?random_state=10)
rf?=?RandomForestClassifier(oob_score=True?random_state=10?n_jobs=-1)
#?start?=?time.perf_counter()?
- 上一篇:基于Python的SVM解決異或問題
- 下一篇:利用爬蟲獲取IP的地理位置
評論
共有 條評論