机器学习(10)随机森林(预测泰坦尼克号旅客存活率)
目錄
一、基礎(chǔ)理論
1、集成學(xué)習(xí)方法
2、隨機(jī)森林
API
二、過程
1、創(chuàng)建隨機(jī)森林預(yù)估器
2、參數(shù)準(zhǔn)備(網(wǎng)格搜索)?
3、訓(xùn)練
模型評(píng)估結(jié)果:?
總代碼
一、基礎(chǔ)理論
1、集成學(xué)習(xí)方法
集成學(xué)習(xí)通過建立幾個(gè)模型組合的來解決單一預(yù)測(cè)問題。
工作原理:生成多個(gè)分類器/模型,各自獨(dú)立地學(xué)習(xí)和作出預(yù)測(cè)。這些預(yù)測(cè)最后結(jié)合成組合預(yù)測(cè),因此優(yōu)于任何一個(gè)單分類的做出預(yù)測(cè)。
2、隨機(jī)森林
?隨機(jī)森林是一個(gè)包含多個(gè)決策樹的分類器,輸出類別由個(gè)別樹輸出類別的眾數(shù)決定。
應(yīng)用場(chǎng)景:高維度、大數(shù)據(jù)。
例:
如果訓(xùn)練了五棵樹,有四棵樹的結(jié)果是True,一棵樹的結(jié)果是False,那么最終結(jié)果就是True。
隨機(jī):1、訓(xùn)練集隨機(jī);2、特征隨機(jī)
森林:多個(gè)決策樹。
API
from sklearn.ensemble import RandomForestClassifier
?
二、過程
讀取數(shù)據(jù)、數(shù)據(jù)處理、特征工程和前面的一樣。不同的是預(yù)估器的創(chuàng)建,用上隨機(jī)森林。
# 1、讀取數(shù)據(jù)
data = pd.read_csv('titanic.csv')
# print(data)# 2、設(shè)置特征值和目標(biāo)值
train = data[['pclass', 'age', 'room', 'sex']]
test = list(data['survived'])# 3、數(shù)據(jù)處理
# 3-1、缺失值處理
train['age'].fillna(train['age'].mean(), inplace=True)
train['room'].fillna(train['room'][0], inplace=True)# 3-2、特征值轉(zhuǎn)換為字典
train = train.to_dict(orient='records')# 3-3、劃分?jǐn)?shù)據(jù)集
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、創(chuàng)建隨機(jī)森林預(yù)估器
# 5-1、創(chuàng)建隨機(jī)森林預(yù)估器
estimator = RandomForestClassifier()
2、參數(shù)準(zhǔn)備(網(wǎng)格搜索)?
# 5-2、參數(shù)準(zhǔn)備(網(wǎng)格搜索)
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、訓(xùn)練
# 5-3、訓(xùn)練
estimator.fit(train_data, train_target)
模型評(píng)估結(jié)果:?
?
總代碼
# 隨機(jī)森林(泰坦尼克號(hào)游客存活率預(yù)估)
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、讀取數(shù)據(jù)
data = pd.read_csv('titanic.csv')
# print(data)# 2、設(shè)置特征值和目標(biāo)值
train = data[['pclass', 'age', 'room', 'sex']]
test = list(data['survived'])# 3、數(shù)據(jù)處理
# 3-1、缺失值處理
train['age'].fillna(train['age'].mean(), inplace=True)
train['room'].fillna(train['room'][0], inplace=True)# 3-2、特征值轉(zhuǎn)換為字典
train = train.to_dict(orient='records')# 3-3、劃分?jǐn)?shù)據(jù)集
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、創(chuàng)建決策樹預(yù)估器,訓(xùn)練
# 5-1、創(chuàng)建隨機(jī)森林預(yù)估器
estimator = RandomForestClassifier()
# 5-2、參數(shù)準(zhǔn)備(網(wǎng)格搜索)
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、訓(xùn)練
estimator.fit(train_data, train_target)# 6、模型評(píng)估
# 方法一:比對(duì)
predict = estimator.predict(test_data)
print(predict == test_target)# 方法二:計(jì)算分?jǐn)?shù)(正確率)
score = estimator.score(test_data, test_target)
print('準(zhǔn)確率為:', score)
總結(jié)
以上是生活随笔為你收集整理的机器学习(10)随机森林(预测泰坦尼克号旅客存活率)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(实战)泰坦尼克号(游客存活率预
- 下一篇: 机器学习(11)线性回归(1)理论:损失