劃分資料集

2021-08-21 20:38:55 字數 2569 閱讀 9466

如果要在乙個二維資料散點圖中間畫一條線將資料集分開,是按照x劃分還是y劃分呢

from math import log

defcreatedataset

(): dataset = [[1, 1, 'yes'],

[1, 1, 'yes'],

[1, 0, 'no'],

[0, 1, 'no'],

[0, 1, 'no']]

labels = ['no su***cing','flippers']

return dataset, labels

defcalcshannonent

(dataset):

numentries = len(dataset)

labelcounts = {}

for featvec in dataset:

currentlabel = featvec[-1]

if currentlabel not

in labelcounts.keys(): labelcounts[currentlabel] = 0

labelcounts[currentlabel] += 1

shannonent = 0.0

for key in labelcounts:

prob = float(labelcounts[key])/numentries

shannonent -= prob * log(prob,2)

return shannonent

defsplitdataset

(dataset, axis, value):

retdataset =

for featvec in dataset:

if featvec[axis] == value:

reducedfeatvec = featvec[:axis]#去除特徵值

reducedfeatvec.extend(featvec[axis+1:])

return retdataset

reducedfeatvec = featvec[:axis] # [ )左包含關係

reducedfeatvec.extend(featvec[axis+1:])# [m:]從m開始全部

>>> import trees

>>> from imp import reload

>>> reload(trees)

'trees' from 'e:\\python\\trees.py'>

>>> mydat,labels=trees.createdataset()

>>> mydat

[[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]

>>> trees.splitdataset(mydat,0,1)

[[1, 'yes'], [1, 'yes'], [0, 'no']]

>>> trees.splitdataset(mydat,0,0)

[[1, 'no'], [1, 'no']]

>>>

def

choosebestfeaturetosplit

(dataset):

numfeatures = len(dataset[0]) -1

baseentropy = calcshannonent(dataset)

bestinfogain = 0.0;bestfeature = -1

for i in range(numfeatures):

featlist = [example[i] for example in dataset]

uniquevals = set(featlist)

newentropy = 0.0

for value in uniquevals:

subdataset = splitdataset(dataset,i,value)

prob = len(subdataset)/float(len(dataset))

newentropy += prob * calcshannonent(subdataset)

infogain = baseentropy - newentropy

if (infogain > bestinfogain):

bestinfogain = infogain

bestfeature = i

return bestfeature

主要是由兩個迴圈構成,第一層迴圈為「不浮出水面……」和「是否有腳蹼」,第二層迴圈實在去除特徵值的情況下,value取0或1時。

>>> trees.splitdataset(mydat,0,1)

[[1, 'yes'], [1, 'yes'], [0, 'no']]

>>> trees.splitdataset(mydat,0,0)

[[1, 'no'], [1, 'no']]

資訊增益 = 原始夏農熵 - 特徵值對應的夏農熵*p的和

劃分資料集

import glob import shutil total file total file.txt train train.txt val val.txt bin path data l v bin 總的點雲資料集檔案路徑 如果是自己的路徑,就是 自己點雲資料夾 bin bin train di...

sklearn劃分資料集

train test split是用得最多的資料集劃分包,它的引數有五個 arrays 要切分的資料集,通過傳入兩個,x資料集和目標y test size 測試集樣本大小 random state 隨機種子數 shuffle 是否要對資料集隨機打亂 stratify 可以理解為分層抽樣的設定值,通過...

資料集按類劃分 資料集劃分方法

留出法 直接將資料集d劃分為兩個互斥的集合,乙個為訓練集s,乙個為測試集t,即d s t,s t 在s上進行模型學習,然後用t來評估其測試誤差,作為對泛化誤差的估計。單次使用留出法得到的估計結果往往不夠穩定可靠,在使用留出法時,一般要採用若干次隨機劃分 重複進行模型評估後取平均值作為留出法的評估結果...