機器學習 相親資料決策樹實戰

2021-10-05 17:30:44 字數 2201 閱讀 1614

需求:根據訓練集**是否要見相親物件

機器學習處理問題流程:

1.準備資料,匯入資料集

2.資料探索性分析,eda分析

3.特徵工程(資料處理、特徵的預處理)

4.資料切分:訓練集+測試集,訓練集佔比例高的

5.模型訓練(訓練集+機器學習演算法—決策樹演算法)

6.利用測試資料進行**—通過測試資料x灌入演算法中得到乙個**值y1

7.|y-y1|誤差,模型訓練過程中使得模型的誤差變小

8.模型評價:準確率、錯誤率、誤差

1.準備資料,這裡的資料已經完成了123步驟,檔名為sklearntest.txt

特徵分別為height,house,car,handsome,job,類標籤為is_date 表示是否約會,其中0表示不約,1表示約,-1則是我們需要**是否約會的標記

height,house,car,handsome,job,is_date

1.80,1,0,6.5,2,1

1.62,1,0,5.5,0,1

1.71,0,1,8.5,1,1

1.58,1,1,6.3,1,1

1.68,0,1,5.1,0,0

1.63,1,0,5.3,1,0

1.78,0,0,4.5,0,0

1.64,0,0,7.8,2,0

1.65,0,1,6.6,0,-1

讀取資料集

import pandas as pd#呼叫numpy裡強大的資料處理庫padndas 起別名pd

df= pd.read_csv(

"sklearntest.txt"

)#讀取csv檔案為dataframe型別

4.資料切分:訓練集+測試集

注:訓練集和測試集一般比例為82分

train=df.query(

"is_date!=-1"

)#建立是否約會不等於-1的訓練集

test=df.query(

"is_date==-1"

)#建立是否約會為-1的測試集

#進一步提取x和y(這裡的x和y其實就是我們初中學的類似2x=y x是變數 y是值)

#對訓練資料和測試資料進行進一步處理

y_train=train[

"is_date"

]#訓練集的值為是否約會

x_train=train.drop(

["is_date"

],axis=1)

#axis=1代表按照列進行刪除,訓練集的x為刪除是否約會的類標籤

print (y_train)

#列印訓練集值y在控制台上

print (x_train)

#列印訓練集變數x在控制台上

#對測試資料進行處理

y_test=test[

"is_date"

]#定義測試集y

x_test=test.drop(

["is_date"

],axis=1)

#定義測試集x

5.模型訓練(這裡呼叫的是決策樹分類器演算法)

#準備決策樹演算法進行**

from sklearn.tree import decisiontreeclassifier#匯入演算法

dtc=decisiontreeclassifier(

)#初始化

dtc.fit(x_train,y_train)

#把訓練集的x和y扔進去進行訓練,從而得到模型

6.利用測試資料進行**

y_pred=dtc.predict(x_test)

#利用模型進行**

print (y_pred)

#列印**值

決策樹視覺化展示

from sklearn.tree import export_graphviz#呼叫graphviz工具生成檔案

export_graphviz(dtc.tree_,out_file=

"love.dot",filled=true,feature_names=df.columns,class_names=

["is_data:no","is_date:yes"])

#引數分別為型別,輸出檔名,是否填充,以及將是否約會的結果01進行置換為"不約","約"

相親決策樹

相親所以 作為乙個女孩子,你媽媽一直很為你的終身大事擔心,今天又要給你介紹物件了。你隨口一問 多大了?她說 26。你問 長得帥不帥?她說 挺帥的。你問 收入高不高?她說 不算很高,中等情況。你說 那好的,我去見見。找男朋友,絕對是比找工作 創業 投資公司,更重要的戰略決策。這麼重要的決策,有沒有一些...

機器學習實戰 決策樹

決策樹 2 python語言在函式中傳遞的是列表的引用,在函式內部對列表物件的修改,將會影響該列表物件的整個生存週期。為了消除這個不良影響,我們需要在函式的開始宣告乙個新列表物件。在本節中,指的是在劃分資料集函式中,傳遞的引數dataset列表的引用,為了不影響dataset我們重新宣告了乙個ret...

機器學習實戰決策樹

這幾天一直在學習機器學習實戰python 實現,在程式清單的3 6 獲取及誒單數程式,書上的程式是這樣的 def getnumleafs mytree numleafs 0.0 firststr list dict.keys mytree 0 seconddict mytree firststr p...