主要包括兩部分資料:訓練集train.csv 和測試集 test.csv
運用sklearn中運用decisiontreeclassifier 分類器來進行**
到目前為止,sklearn 中只實現了 id3 與 cart決策樹,
在構造 decisiontreeclassifier 類時,其中有乙個引數是 criterion,意為標準。它決定了構造的分類樹是採用 id3 分類樹,還是 cart分類樹,對應的取值分別是 entropy 或者 gini:
在這裡建立的是 id3 分類樹。
該**模型**過程可用下圖進行描述
"""#利用決策樹的方法**鐵達尼號乘客的生存率
from sklearn.tree import decisiontreeclassifier
import pandas as pd
from sklearn.feature_extraction import dictvectorizer
#1 資料探索
#讀取csv 檔案
train_data=pd.read_csv(r'f:\lhy\train.csv')
test_data=pd.read_csv(r'f:\lhy\test.csv')
#檢視資料表的基本資訊
print('-'*30)
print(test_data)
print('-'*100)
print(train_data.describe()) # 檢視資料表的基本資訊包括總和,平均值,標準差,最大值和最小值
print('-'*100)
print(train_data.info()) #檢視屬性資訊
print('-'*100)
print(train_data.head()) #輸出前五
print('-'*100)
print(train_data.tail())#輸出後五
print('-'*100)
print(train_data.describe(include=['o'])) #檢視資料表中的字串型別的情況
#2 清晰資料,把屬性缺失的項用均值或最大值進行填充
train_data['age'].fillna(train_data['age'].mean(),inplace=true) #true 表示在原來的基礎上填補
test_data['age'].fillna(test_data['age'].mean(),inplace=true) #true 表示在原來的基礎上填補
train_data['fare'].fillna(train_data['fare'].mean(),inplace=true) #true 表示在原來的基礎上填補
test_data['fare'].fillna(test_data['fare'].mean(),inplace=true) #true 表示在原來的基礎上填補
print(train_data['embarked'].value_counts())
train_data['embarked'].fillna('s',inplace=true) #true 表示在原來的基礎上填補
test_data['embarked'].fillna('s',inplace=true) #true 表示在原來的基礎上填補
# 3特徵選擇,選擇影響乘客生存率的特徵組成特徵向量
features=['pclass','***','age','sibsp','parch','fare','embarked']
train_features=train_data[features]
train_labels=train_data['survived']
test_features=test_data[features]
#轉換成特徵矩陣
dvec=dictvectorizer(sparse=false)
train_features=dvec.fit_transform(train_features.to_dict(orient='record'))
print(dvec.feature_names_)
#4 建立id3決策樹
clf=decisiontreeclassifier(criterion='entropy')
test_features=dvec.fit_transform(test_features.to_dict(orient='record'))
clf.fit(train_features,train_labels)
test_predict=clf.predict(test_features)
# 5得到決策樹準確率
acc_decision_tree = clf.score(train_features, train_labels)
print('score 準確率為 %.4lf' % acc_decision_tree)
print(test_predict)
#k折交叉驗證,統計決策樹準確率,提高正確率
from sklearn.model_selection import cross_val_score
import numpy as np
print(u'cross_val_score 準確率為 %.4lf' % np.mean(cross_val_score(clf, train_features, train_labels, cv=10)))
from sklearn import tree
#6 實現決策樹的視覺化
import graphviz
dot_data = tree.export_graphviz(clf, out_file=none)
graph = graphviz.source(dot_data)
graph.view()
資料分析 決策樹
引言高二 1 班的小明同學和小方同學為了準備即將進行的校園羽毛球大賽,準備近乙個月的時間去練習打球。不過,並不是每一天都適合練球。通常,小明和小方需要考慮一些因素來決定今天是否適合打羽毛球,比如 今天是否有場地 若沒有室內場地,就只能選擇室外場地 如果是要在室外練習的話,天氣是否合適,是否會颳風等,...
python資料分析實戰 決策樹演算法的分類與回歸
cart演算法實現鸞尾花分類 和波士頓房價回歸 1 這兩個演算法差別不是特別大,乙個是用資訊增益來判斷,乙個是用資訊增益率來判斷,在sklearn庫中指定 criterion entropy 即可,只是準確度不一樣。2 這兩個演算法只能做分類,不能做回歸。匯入相關的包 coding utf 8 fr...
資料分析 決策樹演算法 決策樹的概念
顧名思義,決策樹將以樹狀結構表現出來,被用來輔助作出決策。具體結合例子來說,我們平時做決策時大多會伴隨著層層的選擇,比如找房子的時候,會考慮離工作 上課地點的距離 大小和 光照等等因素。如果乙個房子通勤快 低 光照好 空間大 雖然不太可能存在,但是只要存在這種房子 我們一定會作出 買 租 的決策。將...