机器学习(10)随机森林(预测泰坦尼克号旅客存活率)
生活随笔
收集整理的這篇文章主要介紹了
机器学习(10)随机森林(预测泰坦尼克号旅客存活率)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一、基礎理論
1、集成學習方法
2、隨機森林
API
二、過程
1、創建隨機森林預估器
2、參數準備(網格搜索)?
3、訓練
模型評估結果:?
總代碼
一、基礎理論
1、集成學習方法
集成學習通過建立幾個模型組合的來解決單一預測問題。
工作原理:生成多個分類器/模型,各自獨立地學習和作出預測。這些預測最后結合成組合預測,因此優于任何一個單分類的做出預測。
2、隨機森林
?隨機森林是一個包含多個決策樹的分類器,輸出類別由個別樹輸出類別的眾數決定。
應用場景:高維度、大數據。
例:
如果訓練了五棵樹,有四棵樹的結果是True,一棵樹的結果是False,那么最終結果就是True。
隨機:1、訓練集隨機;2、特征隨機
森林:多個決策樹。
API
from sklearn.ensemble import RandomForestClassifier
?
二、過程
讀取數據、數據處理、特征工程和前面的一樣。不同的是預估器的創建,用上隨機森林。
# 1、讀取數據
data = pd.read_csv('titanic.csv')
# print(data)# 2、設置特征值和目標值
train = data[['pclass', 'age', 'room', 'sex']]
test = list(data['survived'])# 3、數據處理
# 3-1、缺失值處理
train['age'].fillna(train['age'].mean(), inplace=True)
train['room'].fillna(train['room'][0], inplace=True)# 3-2、特征值轉換為字典
train = train.to_dict(orient='records')# 3-3、劃分數據集
train_data, test_data, train_target, test_target = train_test_split(train, test)
# print(train_data)# 4、特征工程(字典特征值提取)
transfer = DictVectorizer()
train_data = transfer.fit_transform(train_data)
test_data = transfer.transform(test_data)
# print(train_data)
1、創建隨機森林預估器
# 5-1、創建隨機森林預估器
estimator = RandomForestClassifier()
2、參數準備(網格搜索)?
# 5-2、參數準備(網格搜索)
param_dict = {'n_estimators':[120,200,300,500,800,1200], 'max_depth':[5,8,15,25,30]}
estimator = GridSearchCV(estimator, param_grid=param_dict, cv=3)
3、訓練
# 5-3、訓練
estimator.fit(train_data, train_target)
模型評估結果:?
?
總代碼
# 隨機森林(泰坦尼克號游客存活率預估)
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV# 1、讀取數據
data = pd.read_csv('titanic.csv')
# print(data)# 2、設置特征值和目標值
train = data[['pclass', 'age', 'room', 'sex']]
test = list(data['survived'])# 3、數據處理
# 3-1、缺失值處理
train['age'].fillna(train['age'].mean(), inplace=True)
train['room'].fillna(train['room'][0], inplace=True)# 3-2、特征值轉換為字典
train = train.to_dict(orient='records')# 3-3、劃分數據集
train_data, test_data, train_target, test_target = train_test_split(train, test)
# print(train_data)# 4、特征工程(字典特征值提取)
transfer = DictVectorizer()
train_data = transfer.fit_transform(train_data)
test_data = transfer.transform(test_data)
# print(train_data)# 5、創建決策樹預估器,訓練
# 5-1、創建隨機森林預估器
estimator = RandomForestClassifier()
# 5-2、參數準備(網格搜索)
param_dict = {'n_estimators':[120,200,300,500,800,1200], 'max_depth':[5,8,15,25,30]}
estimator = GridSearchCV(estimator, param_grid=param_dict, cv=3)
# 5-3、訓練
estimator.fit(train_data, train_target)# 6、模型評估
# 方法一:比對
predict = estimator.predict(test_data)
print(predict == test_target)# 方法二:計算分數(正確率)
score = estimator.score(test_data, test_target)
print('準確率為:', score)
總結
以上是生活随笔為你收集整理的机器学习(10)随机森林(预测泰坦尼克号旅客存活率)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(实战)泰坦尼克号(游客存活率预
- 下一篇: 机器学习(11)线性回归(1)理论:损失