一些Python程式設計小技巧

2021-08-20 19:42:15 字數 2238 閱讀 8504

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...