from xgboost.sklearn import xgbclassifier
from sklearn.ensemble import randomforestclassifier
from sklearn.ensemble import gradientboostingclassifier
from sklearn.cross_validation import kfold
import pandas as pd
import numpy as np
#讀取資料,獲取訓練集
fila_name = 'dotdata.xlsx'
excel = pd.read_excel(fila_name , sheetname=none , skiprows = 500)
train_set = excel['data'].sample(frac=1 , random_state = 1).values
#獲得輸入與輸出
x = train_set[:,1:-1]
theta = 120 * np.pi / 180
x[:,-1] = ( 200 - x[:,-3]) * np.sin(theta) + x[:,-2] * np.cos(theta)
y = train_set[:, -1]
#%% 這裡有個#%%作為**分塊
if 0 :
clf = gradientboostingclassifier( max_depth = 3 )
#clf = randomforestclassifier( max_depth = 3 )
else:
clf = xgbclassifier( max_depth = 3 )
score = pd.dataframe(columns = ['accuracy'])
#下面進行交叉驗證
for train_index , test_index in kfold( x.shape[0] , n_folds = 8 ):
clf.fit( x[train_index] , y[train_index] )
y_hat = clf.predict( x[test_index] )
accuracy = np.mean( y[test_index] == y_hat )
ignore_index = true )
print(score)
print("總樣本量為\n",x.shape[0])
print("交叉驗證中驗證集的準確率為:\n",score.mean())
這樣分塊之後,在調參時,就只需讀取一次,後面的就不用再執行了
if a == 0 :
a = 25
elif a == 1 :
a = 0
elif a == 2 :
a = 15
elif a == 3 :
a = 35
elif a == 4 :
a = 40
可以改寫成下面這樣,**量會縮短很多
score_list = [25,0,15,35,40]
a = score_list[a]
對於在windows下才執行的**,比如輸出中間結果值或者,可以這樣做,生成乙個全域性變數進行判斷
import platform
a = 1
is_windows = (platform.system() == "windows")
if is_windows :
print(a)
對於測試集的判斷,可以運用一下**獲取執行機器的ip,然後執行測試機下才執行**
import socket
b = 2
def get_host_ip():
try:
s = socket.socket(socket.af_inet, socket.sock_dgram)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
return ip
ip = get_host_ip()
if ip == "123.45.123.456" :
print(b)
一些程式設計上的小技巧
下面介紹的方法 程式設計珠璣 裡也有所提及 下面的例子是用python寫的,但這些概念適用於任何程式語言。找出程式的主執行路徑 你的程式大部分時間都執行這些模組。首先優化這部分 但也不要在程式實現的第一次迭代中進行優化。那些處理邊界情況或失敗 異常處理的地方,這部分 不需要優化,除非它們引起了值得注...
一些程式設計上的小技巧
下面介紹的方法 程式設計珠璣 裡也有所提及 下面的例子是用python寫的,但這些概念適用於任何程式語言。找出程式的主執行路徑 你的程式大部分時間都執行這些模組。首先優化這部分 但也不要在程式實現的第一次迭代中進行優化。那些處理邊界情況或失敗 異常處理的地方,這部分 不需要優化,除非它們引起了值得注...
一些 ssh 小技巧
ssh 經常需要使用的,每次使用都 ssh abc def.com p 12138 i ssh id rsa來一遍顯然太麻煩了,下面分享一點使用ssh的小技巧 linux 下,ssh會去讀 ssh config 裡的配置的,只需要配置檔案裡寫入如下配 host 1 配置的名稱,選方便自己識別的就行h...