close

參考了 https://www.itread01.com/content/1541158743.html 的資料

import pandas as pd

titanic=pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')

擷取.PNG

數據資料可以用的大概就是 age年紀, sex性別, 可以看到有很多NaN

Features=titanic[['age','sex']]
Ans=titanic['survived']

所以我們取這三個做為輸入, 存活與否作為Ans

首先把sex裡面female, male數值化

Features['sex'].replace(['female','male'],[0,1], inplace=True)

然後可以把年齡缺失的值補上

Features['age'].fillna(Features['age'].mean(),inplace=True)

把NaN填入年齡平均

擷取.PNG

可以看到很多地方都填入31.194........

擷取.PNG

性別的部分也可以看到轉成0和1

from sklearn.model_selection import train_test_split
train_test_split(Features,Ans,test_size=0.1)

然後我們import入train_test_split, 喜歡九一切, 所以test_size選擇0.1, 代表一成是test資料

擷取.PNG

得到四個list, 細看就可以發現是train, test個別的資料, 所以改成

x_train,x_test,y_train,y_test = train_test_split(Features,Ans,test_size=0.1)

分別賦值給x_train等四個變數

from sklearn.tree import DecisionTreeClassifier

clf = DecisionTreeClassifier()

clf.fit(x_train, y_train)

擷取.PNG

把我們的訓練資料套進去, 會顯示很多參數

clf.predict(x_test)

然後拿x_test來做預測, 會得到下面這堆0101的東西

擷取.PNG

這些是什麼的0101呢? 其實是survived的預測

那我們怎麼看到底預測正不正確?

參考 https://blog.csdn.net/CherDW/article/details/55813071

from sklearn.metrics import accuracy_score

pre = clf.predict(x_test)

accuracy_score(pre,y_test)

擷取.PNG

準確率大約73%, 好像沒有很厲害~

那怎麼把她畫出來

import graphviz

from sklearn.tree import export_graphviz

g=export_graphviz(clf, feature_names=['age','sex'], class_names='survived', filled= True)

graphviz.Source(g)

就會得出一個超大的圖, 我就不放了

那再加一個pclass也就是船艙等級看看呢? 這次我想把1st直接換成1, 2nd改成2, 3rd是3

完整程式碼如下 : 

import pandas as pd

titanic=pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')

Features=titanic[['pclass','age','sex']]
Ans=titanic['survived']

Features['sex'].replace(['female','male'],[0,1], inplace=True)

Features['pclass'].replace(['1st','2nd','3rd'],[1,2,3], inplace=True)

from sklearn.model_selection import train_test_split
train_test_split(Features,Ans,test_size=0.1)

x_train,x_test,y_train,y_test = train_test_split(Features,Ans,test_size=0.1)

from sklearn.tree import DecisionTreeClassifier

clf = DecisionTreeClassifier()

clf.fit(x_train, y_train)

clf.predict(x_test)

from sklearn.metrics import accuracy_score

pre = clf.predict(x_test)

accuracy_score(pre,y_test)

擷取.PNG

八十五趴是不是感覺有點準呀???

 

 

 

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 張郎屋 的頭像
    張郎屋

    張郎生活的筆記

    張郎屋 發表在 痞客邦 留言(0) 人氣()