日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python决策树分类 导入数据集_python+sklearn实现决策树(分类树)

發布時間:2025/3/19 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python决策树分类 导入数据集_python+sklearn实现决策树(分类树) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

整理今天的代碼……

采用的是150條鳶尾花的數據集fishiris.csv

# 讀入數據,把Name列取出來作為標簽(groundtruth)

import pandas as pd

data = pd.read_csv(‘fishiris.csv‘)

print(data.head(5))

X = data.iloc[:, data.columns != ‘Name‘]

Y = data[‘Name‘]

df.iloc[rows, columns]取出符合條件的列。查看數據讀取是否正確(關于pandas使用最熟練的一條……orz),如果csv文件或者其他數據沒有列名需要加上names=[]?

SepalLength SepalWidth PetalLength PetalWidth Name

0 5.1 3.5 1.4 0.2 setosa

1 4.9 3.0 1.4 0.2 setosa

2 4.7 3.2 1.3 0.2 setosa

3 4.6 3.1 1.5 0.2 setosa

4 5.0 3.6 1.4 0.2 setosa

確認數據無誤后就可以分出驗證集和測試集,挺方便的!查看一下返回數據的格式和數據集好像是相同的:type(Xtrain):

# 分割驗證集和訓練集

from sklearn.model_selection import train_test_split

Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,Y,test_size=0.2)

數據準備好就可以建模了。注意,因為這個數據集里沒有空缺值所以沒管,但是sklearn里這個模塊好像是不能處理空缺的?要手動寫個函數填進去。

# 導入分類樹的模塊

from sklearn.tree import DecisionTreeClassifier

# 需要整理一下序號,也就是更新df.index,前面的可以看到挺亂的,因為是隨機取的

for i in [Xtrain,Xtest,Ytrain,Ytest]: # 這里的意思是i依次為Xtrain,Xtest……并修改它們的index值

print(i,‘before‘)

i.index = range(i.shape[0])

print(i,‘after changed‘)

clf = DecisionTreeClassifier(random_state=3) # 初始化

clf = clf.fit(Xtrain,Ytrain) # 擬合

score_ = clf.score(Xtest, Ytest) # 驗證集查看得分,這個得分好像就是分類的準確率

# 可以輸入數據送到訓練好的模型里,輸出預測的類

y_pred = clf.predict(Xtest)

看看:

# 之前的index

SepalLength SepalWidth PetalLength PetalWidth

19 5.1 3.8 1.5 0.3

67 5.8 2.7 4.1 1.0

6 4.6 3.4 1.4 0.3

100 6.3 3.3 6.0 2.5

39 5.1 3.4 1.5 0.2

.. ... ... ... ...

106 4.9 2.5 4.5 1.7

25 5.0 3.0 1.6 0.2

138 6.0 3.0 4.8 1.8

84 5.4 3.0 4.5 1.5

94 5.6 2.7 4.2 1.3

[120 rows x 4 columns] before

# 之后的index

SepalLength SepalWidth PetalLength PetalWidth

0 5.1 3.8 1.5 0.3

1 5.8 2.7 4.1 1.0

2 4.6 3.4 1.4 0.3

3 6.3 3.3 6.0 2.5

4 5.1 3.4 1.5 0.2

.. ... ... ... ...

115 4.9 2.5 4.5 1.7

116 5.0 3.0 1.6 0.2

117 6.0 3.0 4.8 1.8

118 5.4 3.0 4.5 1.5

119 5.6 2.7 4.2 1.3

[120 rows x 4 columns] after changed

輸出驗證集的預測結果以及和真值的對比:

[‘virginica‘ ‘setosa‘ ‘versicolor‘ ‘setosa‘ ‘setosa‘ ‘versicolor‘ ‘setosa‘

‘setosa‘ ‘setosa‘ ‘versicolor‘ ‘virginica‘ ‘versicolor‘ ‘setosa‘

‘virginica‘ ‘setosa‘ ‘virginica‘ ‘versicolor‘ ‘versicolor‘ ‘virginica‘

‘virginica‘ ‘versicolor‘ ‘versicolor‘ ‘versicolor‘ ‘virginica‘

‘virginica‘ ‘versicolor‘ ‘setosa‘ ‘setosa‘ ‘setosa‘ ‘virginica‘]

0 True

1 True

2 True

3 True

4 True

5 True

6 True

7 True

8 True

9 True

10 True

11 True

12 True

13 True

14 True

15 True

16 True

17 True

18 True

19 True

20 True

21 True

22 True

23 True

24 True

25 True

26 True

27 True

28 True

29 True

Name: Name, dtype: bool

更高級的建模方法:利用GridSearchCV這個模塊!

# 預測結果不準確,可以使用網格法優化,這里設定了模型訓練的多個參數,利用sklearn里的模塊可以自己測試并選擇結果最好的一個模型?我還不是很懂

parameters = {‘splitter‘:(‘best‘,‘random‘)

,‘criterion‘:("gini","entropy")

,"max_depth":[*range(1,10)]

,‘min_samples_leaf‘:[*range(1,50,5)]

,‘min_impurity_decrease‘:[*np.linspace(0,0.5,20)]

}

from sklearn.model_selection import GridSearchCV

GS = GridSearchCV(clf, parameters, cv=10)

GS.fit(Xtrain,Ytrain)

print(GS.best_params_)

print(GS.best_score_)

{‘criterion‘: ‘gini‘, ‘max_depth‘: 5, ‘min_impurity_decrease‘: 0.0, ‘min_samples_leaf‘: 1, ‘splitter‘: ‘random‘}

0.9703296703296704

score_ = clf.score(Xtest, Ytest)

print(score_,‘score‘) # 1.0 score

明天想把圖畫出來嗷嗷,然后再試試回歸樹!

原文地址:https://www.cnblogs.com/sweetsmartrange/p/13352474.html

總結

以上是生活随笔為你收集整理的python决策树分类 导入数据集_python+sklearn实现决策树(分类树)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。