python實戰 資料分析 決策樹

2021-09-19 05:10:00 字數 3085 閱讀 3436

主要包括兩部分資料:訓練集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...

資料分析 決策樹演算法 決策樹的概念

顧名思義,決策樹將以樹狀結構表現出來,被用來輔助作出決策。具體結合例子來說,我們平時做決策時大多會伴隨著層層的選擇,比如找房子的時候,會考慮離工作 上課地點的距離 大小和 光照等等因素。如果乙個房子通勤快 低 光照好 空間大 雖然不太可能存在,但是只要存在這種房子 我們一定會作出 買 租 的決策。將...