python 交叉驗證1

2021-09-26 12:08:30 字數 2380 閱讀 9987

# 2> 十折決策樹演算法

from sklearn.tree import decisiontreeclassifier #匯入決策樹模型

from __future__ import division

from sklearn.metrics import confusion_matrix

p = 0.1 #設定訓練集的比例

n = 1/p

correctrate =

for i in range(int(n)):

demotest = dt[int(len(dt)*(p*i)):int(len(dt)*(p*(i+1))), :]

demotrain = np.row_stack((dt[:int(len(dt)*(p*i)), :], dt[int(len(dt)*(p*(i+1))):, :]))#訓練集的取法

tree = decisiontreeclassifier() # 建立決策樹模型

tree.fit(demotrain[:,:3], demotrain[:,3]) #訓練模型

predict_cartresult = tree.predict(demotest[:,:3]) # 測試模型

cm = confusion_matrix(demotest[:,3], predict_cartresult)

crate = (cm[1,1] + cm[0,0]) / cm.sum()

cartprecision = sum(correctrate)/len(correctrate) # 求這是個正確率的均值 #predict_classes(隨資料集的組合而變化)0.914137931034

cartprecision

# 3> 十折lm神經網路

# #構建lm神經網路模型

from keras.models import sequential #匯入神經網路初始化函式

from keras.layers.core import dense, activation #匯入神經網路層函式、啟用函式

from __future__ import division

from sklearn.metrics import confusion_matrix

import time

p = 0.1 #設定訓練集的比例

n = 1/p

correctratelm =

start0 = time.clock()

for i in range(int(n)):

demotest = dt[int(len(dt)*(p*i)):int(len(dt)*(p*(i+1))), :]

demotrain = np.row_stack((dt[:int(len(dt)*(p*i)), :], dt[int(len(dt)*(p*(i+1))):, :]))#行資料合併

net = sequential() # 建立神經網路

net.add(dense(input_dim = 3, output_dim = 10)) # 新增輸入層(3節點)到隱藏層(10節點)的連線

net.add(activation('relu')) # 隱藏層使用relu啟用函式(通過實驗確定的relu函式)

net.add(dense(input_dim = 10, output_dim = 1)) # 新增隱藏層(10節點)到輸出層(1節點)的連線

net.add(activation('sigmoid')) # 輸出層使用sigmoid啟用函式

net.compile(loss = 'binary_crossentropy', optimizer = 'adam',metrics=none)#編譯模型,用adam方法求解

net.fit(demotrain[:,:3], demotrain[:,3], nb_epoch=1000, batch_size=1)# 訓練模型,迴圈1000次

predict_result = net.predict_classes(demotest[:,:3]).reshape(len(demotest)) #**結果變形,**結果都是nx1維陣列

cm = confusion_matrix(demotest[:,3],predict_result)

crate = (cm[1,1] + cm[0,0]) / cm.sum()

lmprecision = sum(correctratelm)/len(correctratelm) # 求這是個正確率的均值0.

print(lmprecision) #0.910459770115

end0 = time.clock()

usetime0 = end0-start0

print("all time is"+ str(usetime0) +'s!')

機器學習隨筆(1) 交叉驗證

基本思想 交叉驗證的基本思想是把在某種意義下將原始資料 dataset 進行分組,一部分做為訓練集 train set 另一部分做為驗證集 validation set or test set 首先用訓練集對分類器進行訓練,再利用驗證集來測試訓練得到的模型 model 以此來做為評價分類器的效能指標...

scikit learning 交叉驗證

import numpy as np from sklearn import datasets from sklearn.cross validation import train test split from sklearn.neighbors import kneighborsclassifi...

交叉驗證(cross validation)

交叉驗證是資料分析時模型選擇的方法之一,將資料集分為三份,分別為訓練集 training set 驗證集 valication set 和測試集 test set 分別功能為訓練模型,選擇模型和對學習方法的評估。其演算法的思想為重複的使用資料,使得模型的精度越來越高。交叉驗證的方法有以下三種 1.簡...