国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用決策樹對(duì)鳶尾花進(jìn)行分類python

這篇具有很好參考價(jià)值的文章主要介紹了使用決策樹對(duì)鳶尾花進(jìn)行分類python。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

鳶尾花數(shù)據(jù)集介紹

決策樹實(shí)現(xiàn)鳶尾花分類,python,決策樹,分類

一:讀取數(shù)據(jù)

from sklearn.datasets import load_iris
# 導(dǎo)入數(shù)據(jù)集Iris
iris = load_iris() #導(dǎo)入數(shù)據(jù)
iris_feature= iris.data #特征數(shù)據(jù)
iris_target = iris.target #分類數(shù)據(jù)
# print(iris.data)  # 輸出數(shù)據(jù)
print(type(iris))
print(type(iris_feature))
print(type(iris_target))  # numpy 數(shù)據(jù)類型
<class 'sklearn.utils.Bunch'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
# numpy數(shù)據(jù)查看--索引
print(iris_feature[2])
print(iris_feature[2,1])
[4.7 3.2 1.3 0.2]
3.2

二:鳶尾花類別

target介紹

決策樹實(shí)現(xiàn)鳶尾花分類,python,決策樹,分類

# print(iris.data)  # 輸出數(shù)據(jù)
print(iris.target) #輸出真實(shí)標(biāo)簽
print(len(iris.target)) #樣本個(gè)數(shù)
print(iris.data.shape)
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]
150
(150, 4)

三:數(shù)據(jù)可視化

決策樹實(shí)現(xiàn)鳶尾花分類,python,決策樹,分類

1:繪制直方圖

import pandas as pd
# 將特征的numpy數(shù)據(jù)轉(zhuǎn)換為pandas數(shù)據(jù)
names=['length_sepal','width_speal','petal_length','petal_width ']
d_iris_feature = pd.DataFrame(iris_feature, columns=names)
d_iris_target=pd.DataFrame(iris_target,columns=['label_'])
print(d_iris_feature.head())
print(d_iris_target.head())

# 描述性分析
print(d_iris_feature.describe())

# hist(),輸出各個(gè)特征對(duì)比的直方圖
d_iris_feature.hist()
   length_sepal  width_speal  petal_length  petal_width 
0           5.1          3.5           1.4           0.2
1           4.9          3.0           1.4           0.2
2           4.7          3.2           1.3           0.2
3           4.6          3.1           1.5           0.2
4           5.0          3.6           1.4           0.2
   label_
0       0
1       0
2       0
3       0
4       0
       length_sepal  width_speal  petal_length  petal_width 
count    150.000000   150.000000    150.000000    150.000000
mean       5.843333     3.057333      3.758000      1.199333
std        0.828066     0.435866      1.765298      0.762238
min        4.300000     2.000000      1.000000      0.100000
25%        5.100000     2.800000      1.600000      0.300000
50%        5.800000     3.000000      4.350000      1.300000
75%        6.400000     3.300000      5.100000      1.800000
max        7.900000     4.400000      6.900000      2.500000





array([[<AxesSubplot:title={'center':'length_sepal'}>,
        <AxesSubplot:title={'center':'width_speal'}>],
       [<AxesSubplot:title={'center':'petal_length'}>,
        <AxesSubplot:title={'center':'petal_width '}>]], dtype=object)

決策樹實(shí)現(xiàn)鳶尾花分類,python,決策樹,分類
2.png)]

四:訓(xùn)練和分類

1:劃分訓(xùn)練集和測試集

構(gòu)建訓(xùn)練集和測試集,分別保存在X_train,y_train,X_test,y_test

from sklearn.model_selection import train_test_split

from sklearn.model_selection import train_test_split

for i in range(1000):
	X_train, X_test, y_train, y_test = train_test_split(d_iris_feature,d_iris_target, test_size=0.3)  
    # 不要設(shè)置隨機(jī)種子random_state保證每次劃分的隨機(jī)性
print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)
(105, 4)
(45, 4)
(105, 1)
(45, 1)
# 構(gòu)造訓(xùn)練集和測試集
# <pre name="code" class="python"><span style="font-size:14px;">
from sklearn.model_selection import train_test_split

# 交叉驗(yàn)證
X_train,X_test,y_train,y_test=train_test_split(d_iris_feature,d_iris_target,random_state=1)
print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)
# 默認(rèn)為75%為訓(xùn)練,25%為測試
(112, 4)
(38, 4)
(112, 1)
(38, 1)
print(X_train)
     length_sepal  width_speal  petal_length  petal_width 
54            6.5          2.8           4.6           1.5
108           6.7          2.5           5.8           1.8
112           6.8          3.0           5.5           2.1
17            5.1          3.5           1.4           0.3
119           6.0          2.2           5.0           1.5
..            ...          ...           ...           ...
133           6.3          2.8           5.1           1.5
137           6.4          3.1           5.5           1.8
72            6.3          2.5           4.9           1.5
140           6.7          3.1           5.6           2.4
37            4.9          3.6           1.4           0.1

[112 rows x 4 columns]
print(y_train)
     label_
54        1
108       2
112       2
17        0
119       2
..      ...
133       2
137       2
72        1
140       2
37        0

[112 rows x 1 columns]

2:訓(xùn)練和分類

from sklearn.tree import DecisionTreeClassifier

DecisionTreeClassifier()

決策樹實(shí)現(xiàn)鳶尾花分類,python,決策樹,分類

DecisionTreeClassifier(criterion=‘entropy’, min_samples_leaf=3)函數(shù)為創(chuàng)建一個(gè)決策樹模型,其函數(shù)的參數(shù)含義如下所示

class_weight : 指定樣本各類別的的權(quán)重,主要是為了防止訓(xùn)練集某些類別的樣本過多導(dǎo)致訓(xùn)練的決策樹過于偏向這些類別。這里可以自己指定各個(gè)樣本的權(quán)重,如果使用“balanced”,則算法會(huì)自己計(jì)算權(quán)重,樣本量少的類別所對(duì)應(yīng)的樣本權(quán)重會(huì)高。

criterion : gini或者entropy,前者是基尼系數(shù),后者是信息熵;

max_depth : int or None, optional (default=None) 設(shè)置決策隨機(jī)森林中的決策樹的最大深度,深度越大,越容易過擬合,推薦樹的深度為:5-20之間;

max_features: None(所有),log2,sqrt,N 特征小于50的時(shí)候一般使用所有的;

max_leaf_nodes : 通過限制最大葉子節(jié)點(diǎn)數(shù),可以防止過擬合,默認(rèn)是"None”,即不限制最大的葉子節(jié)點(diǎn)數(shù)。

min_impurity_split: 這個(gè)值限制了決策樹的增長,如果某節(jié)點(diǎn)的不純度(基尼系數(shù),信息增益,均方差,絕對(duì)差)小于這個(gè)閾值則該節(jié)點(diǎn)不再生成子節(jié)點(diǎn)。即為葉子節(jié)點(diǎn) 。

min_samples_leaf : 這個(gè)值限制了葉子節(jié)點(diǎn)最少的樣本數(shù),如果某葉子節(jié)點(diǎn)數(shù)目小于樣本數(shù),則會(huì)和兄弟節(jié)點(diǎn)一起被剪枝。

min_samples_split : 設(shè)置結(jié)點(diǎn)的最小樣本數(shù)量,當(dāng)樣本數(shù)量可能小于此值時(shí),結(jié)點(diǎn)將不會(huì)在劃分。

min_weight_fraction_leaf: 這個(gè)值限制了葉子節(jié)點(diǎn)所有樣本權(quán)重和的最小值,如果小于這個(gè)值,則會(huì)和兄弟節(jié)點(diǎn)一起被剪枝默認(rèn)是0,就是不考慮權(quán)重問題。

presort :

splitter : best or random 前者是在所有特征中找最好的切分點(diǎn) 后者是在部分特征中,默認(rèn)的”best”適合樣本量不大的時(shí)候,而如果樣本數(shù)據(jù)量非常大,此時(shí)決策樹構(gòu)建推薦”random” 。

from  sklearn.tree import DecisionTreeClassifier

#clf:決策樹對(duì)象
clf=DecisionTreeClassifier(criterion='entropy', min_samples_leaf=3) #
# 調(diào)用對(duì)象訓(xùn)練數(shù)據(jù)
clf.fit(X_train,y_train)
print(clf)

#預(yù)測
predicted=clf.predict(X_test)
print(predicted)

DecisionTreeClassifier(criterion='entropy', min_samples_leaf=3)
[0 1 1 0 2 1 2 0 0 2 1 0 2 1 1 0 1 1 0 0 1 1 2 0 2 1 0 0 1 2 1 2 1 2 2 0 1
 0]

3:算法精度

# from sklearn.metrics import roc_curve

# fpr,tpr,threshold=roc_curve(y_test,predicted)

# 多分類不用RoC曲線評(píng)估

使用ROC曲線評(píng)估分類模型是非常通用的手段,但是,使用它的時(shí)候要注意兩點(diǎn):

1、分類的類型。

必須為數(shù)值型。

2、只針對(duì)二分類問題。

ROC曲線是根據(jù)一系列不同的二分類方式(分界值或決定閾),以真陽性率(靈敏度)為縱坐標(biāo),假陽性率(1-特異度)為橫坐標(biāo)繪制的曲線。傳統(tǒng)的診斷試驗(yàn)評(píng)價(jià)方法有一個(gè)共同的特點(diǎn),必須將試驗(yàn)結(jié)果分為兩類,再進(jìn)行統(tǒng)計(jì)分析。

3.1 accuracy_score

sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)

normalize:默認(rèn)值為True,返回正確分類的比例;如果為False,返回正確分類的樣本數(shù)

決策樹實(shí)現(xiàn)鳶尾花分類,python,決策樹,分類

3.2 f1_score()

決策樹實(shí)現(xiàn)鳶尾花分類,python,決策樹,分類

from sklearn import metrics

# 計(jì)算模型評(píng)估指標(biāo)
acc = metrics.accuracy_score(y_test, predicted)
print('acc: '+str(acc))
f1 = metrics.f1_score(y_test, predicted,average='micro')
print('f1: '+str(f1))

# class_names = np.unique(y_train)
# y_binarize = label_binarize(y_test, classes=class_names)
# y_fit=label_binarize(y_pred, classes = class_names)
# fpr, tpr, _= metrics.roc_curve(y_binarize.ravel(),y_fit.ravel())
# auc = metrics.auc(fpr, tpr)
# print('auc: '+str(auc))

acc: 0.9736842105263158
f1: 0.9736842105263158

4:

predicted.reshape(len(predicted))
array([0, 1, 1, 0, 2, 1, 2, 0, 0, 2, 1, 0, 2, 1, 1, 0, 1, 1, 0, 0, 1, 1,
       2, 0, 2, 1, 0, 0, 1, 2, 1, 2, 1, 2, 2, 0, 1, 0])
import numpy as np

type(X_test)
# scatter()的輸入為array
X_test_=np.array(X_test)
# X_test為datafram數(shù)據(jù),需要轉(zhuǎn)換為numpy 的數(shù)組array形式
# 獲取花卉的兩列數(shù)據(jù)集

# 繪圖
import matplotlib.pyplot as plt
plt.scatter(X_test_[:,0],X_test_[:,1], c=predicted.reshape(len(predicted)), marker='x')
plt.show()

# X_test_[:,0],X_test_[:,1]用前兩個(gè)特征畫圖,沒有降維

決策樹實(shí)現(xiàn)鳶尾花分類,python,決策樹,分類文章來源地址http://www.zghlxwxcb.cn/news/detail-735038.html

到了這里,關(guān)于使用決策樹對(duì)鳶尾花進(jìn)行分類python的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【決策樹-鳶尾花分類】

    【決策樹-鳶尾花分類】

    決策樹是一種基于樹狀結(jié)構(gòu)的分類與回歸算法。它通過對(duì)數(shù)據(jù)集進(jìn)行遞歸分割,將樣本劃分為多個(gè)類別或者回歸值。決策樹算法的核心思想是通過構(gòu)建樹來對(duì)數(shù)據(jù)進(jìn)行劃分,從而實(shí)現(xiàn)對(duì)未知樣本的預(yù)測。 決策樹的構(gòu)建過程包括以下步驟: 選擇特征 :從數(shù)據(jù)集中選擇一個(gè)最優(yōu)

    2024年02月15日
    瀏覽(24)
  • 機(jī)器學(xué)習(xí):KNN算法對(duì)鳶尾花進(jìn)行分類

    機(jī)器學(xué)習(xí):KNN算法對(duì)鳶尾花進(jìn)行分類

    1.算法概述 KNN(K-NearestNeighbor)算法經(jīng)常用來解決分類與回歸問題, KNN算法的原理可以總結(jié)為\\\"近朱者赤近墨者黑\\\",通過數(shù)據(jù)之間的相似度進(jìn)行分類。就是通過計(jì)算測試數(shù)據(jù)和已知數(shù)據(jù)之間的距離來進(jìn)行分類。 如上圖,四邊形代表測試數(shù)據(jù),原型表示已知數(shù)據(jù),與測試數(shù)據(jù)最

    2024年02月09日
    瀏覽(45)
  • 經(jīng)典案例——利用 KNN算法 對(duì)鳶尾花進(jìn)行分類

    經(jīng)典案例——利用 KNN算法 對(duì)鳶尾花進(jìn)行分類

    實(shí)現(xiàn)流程: ? ? ? ? 1、獲取數(shù)據(jù)集 ????????2、數(shù)據(jù)基本處理 ????????3、數(shù)據(jù)集預(yù)處理-數(shù)據(jù)標(biāo)準(zhǔn)化 ????????4、機(jī)器學(xué)習(xí)(模型訓(xùn)練) ????????5、模型評(píng)估 ????????6、模型預(yù)測 具體API: 1、獲取數(shù)據(jù)集 ?查看各項(xiàng)屬性 ?2、數(shù)據(jù)基本處理 ? 3、數(shù)據(jù)集預(yù)處理

    2024年02月02日
    瀏覽(20)
  • 【IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 構(gòu)建鳶尾花決策樹分類預(yù)測模型】

    【IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 構(gòu)建鳶尾花決策樹分類預(yù)測模型】

    通過IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 構(gòu)建鳶尾花決策樹分類預(yù)測模型,這是一個(gè)分類模型案例,通過該案例,可以快速了解Spark MLlib分類預(yù)測模型的使用方法。

    2024年02月14日
    瀏覽(25)
  • 【機(jī)器學(xué)習(xí)案例】不同的模型算法對(duì)鳶尾花數(shù)據(jù)集進(jìn)行分類

    【機(jī)器學(xué)習(xí)案例】不同的模型算法對(duì)鳶尾花數(shù)據(jù)集進(jìn)行分類

    經(jīng)典機(jī)器學(xué)習(xí)入門項(xiàng)目,使用邏輯回歸、線性判別分析、KNN、分類與回歸樹、樸素貝葉斯、向量機(jī)、隨機(jī)森林、梯度提升決策樹對(duì)不同占比的訓(xùn)練集進(jìn)行分類 數(shù)據(jù)源 :Iris Species | Kaggle 150行,5列,分三種鳶尾花類型,每種類型50個(gè)樣本,每行數(shù)據(jù)包含花萼長度、花萼寬度、花

    2024年02月04日
    瀏覽(28)
  • Python鳶尾花SVM分類模型代碼

    Python鳶尾花SVM分類模型代碼

    ? ? ? ?機(jī)器學(xué)習(xí)的經(jīng)典實(shí)驗(yàn),對(duì)于數(shù)據(jù)集進(jìn)行分類,網(wǎng)上看了一點(diǎn)其他的和GPT寫的,好像只展示了4個(gè)特征中兩個(gè)特征與3種類別的分類圖,在我做這個(gè)實(shí)驗(yàn)交報(bào)告時(shí),老師就問這個(gè)特征之間有很多交叉的點(diǎn),在線性模型不應(yīng)該得到分類準(zhǔn)確度接近1的效果,后面改進(jìn)加上另外

    2024年01月21日
    瀏覽(22)
  • Python基于Pytorch Transformer實(shí)現(xiàn)對(duì)iris鳶尾花的分類預(yù)測,分別使用CPU和GPU訓(xùn)練

    Python基于Pytorch Transformer實(shí)現(xiàn)對(duì)iris鳶尾花的分類預(yù)測,分別使用CPU和GPU訓(xùn)練

    iris數(shù)據(jù)集是機(jī)器學(xué)習(xí)中一個(gè)經(jīng)典的數(shù)據(jù)集,由英國統(tǒng)計(jì)學(xué)家Ronald Fisher在1936年收集整理而成。該數(shù)據(jù)集包含了3種不同品種的鳶尾花(Iris Setosa,Iris Versicolour,Iris Virginica)各50個(gè)樣本,每個(gè)樣本包含了花萼長度(sepal length)、花萼寬度(sepal width)、花瓣長度(petal length)、花瓣寬度

    2024年02月01日
    瀏覽(27)
  • 初識(shí)機(jī)器學(xué)習(xí)——感知機(jī)(Perceptron)+ Python代碼實(shí)現(xiàn)鳶尾花分類

    初識(shí)機(jī)器學(xué)習(xí)——感知機(jī)(Perceptron)+ Python代碼實(shí)現(xiàn)鳶尾花分類

    ??假設(shè)輸入空間 χ ? R n chisubseteq R^n χ ? R n ,輸出空間為 γ = { + 1 , ? 1 } gamma=left { +1,-1right } γ = { + 1 , ? 1 } 。其中每一個(gè)輸入 x ? χ xsubseteq chi x ? χ 表示對(duì)應(yīng)于實(shí)例的特征向量,也就是對(duì)應(yīng)于輸入空間(特征空間)的一個(gè)點(diǎn), y ? γ ysubseteq gamma y ? γ 輸出表

    2023年04月08日
    瀏覽(28)
  • sklearn實(shí)驗(yàn)1——使用感知器對(duì)鳶尾花數(shù)據(jù)分類

    sklearn實(shí)驗(yàn)1——使用感知器對(duì)鳶尾花數(shù)據(jù)分類

    感知器算法是最簡單的可以學(xué)習(xí)的機(jī)器。感知器算法是很多更復(fù)雜算法的基礎(chǔ),如支持向量機(jī)和多層感知器人工神經(jīng)網(wǎng)絡(luò)。 感知器算法要求樣本是線性可分的,通過梯度下降法有限次的迭代后就可以收斂得到一個(gè)解。 當(dāng)樣本非線性時(shí),使用感知器算法不會(huì)收斂。為了使感知

    2024年02月05日
    瀏覽(29)
  • python機(jī)器學(xué)習(xí)(三)特征預(yù)處理、鳶尾花案例--分類、線性回歸、代價(jià)函數(shù)、梯度下降法、使用numpy、sklearn實(shí)現(xiàn)一元線性回歸

    python機(jī)器學(xué)習(xí)(三)特征預(yù)處理、鳶尾花案例--分類、線性回歸、代價(jià)函數(shù)、梯度下降法、使用numpy、sklearn實(shí)現(xiàn)一元線性回歸

    數(shù)據(jù)預(yù)處理的過程。數(shù)據(jù)存在不同的量綱、數(shù)據(jù)中存在離群值,需要穩(wěn)定的轉(zhuǎn)換數(shù)據(jù),處理好的數(shù)據(jù)才能更好的去訓(xùn)練模型,減少誤差的出現(xiàn)。 標(biāo)準(zhǔn)化 數(shù)據(jù)集的標(biāo)準(zhǔn)化對(duì)scikit-learn中實(shí)現(xiàn)的大多數(shù)機(jī)器學(xué)習(xí)算法來說是常見的要求,很多案例都需要標(biāo)準(zhǔn)化。如果個(gè)別特征或多或

    2024年02月16日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包