1. 程式人生 > >Datawhale 演算法實戰第1期 Task 1.1

Datawhale 演算法實戰第1期 Task 1.1

Datawhale Task 1.1

1 概述

看到你們的程式碼和文件,你們都很優秀,無可挑剔,繼續加油~~
這裡給小夥伴幾點程式碼相關建議,可以參考下

2 程式碼優化

2.1 dataframe資料提取的方法

@all 可能是參考程式碼的原因,我有個看起來更加Dataframes的資料提取的方法,可以參考:

# 先把y提取出來
y = data[
"status"] # 再刪除y x = data_all.drop(["status"], axis=1)

更多的 Dataframes 的操作可以參考 http://t.cn/EUhteZK

@004 查了官方文件:http://t.cn/EUhcVgW train_test_split 支援輸入 是 lists列表,numpy陣列,matrices矩陣,dataframes格式的資料,

sklearn.model_selection.train_test_split(*arrays, **options)
*arrays : sequence of indexables with same length /
shape[0] Allowed inputs are lists, numpy arrays, scipy-sparse matrices or pandas dataframes.

使用的時候可以不用as_matrix()轉換格式

#用pandas讀取data_all.csv中的資料
data = pd.read_csv("data_all.csv")
#已知status是標籤,所以將剔除status後的資料集作為特徵集,同時用as_matrix()將資料框轉為矩陣
X = data.drop(columns=["status"]).as_matrix()
#只提取資料集中的status這一列作為標籤集,同時用as_matrix()將資料框轉為矩陣
y = data[["status"]].as_matrix() #由於標籤集格式要求是一維陣列,所以用ravel()將二維資料轉一維陣列 y = y.ravel()

@012 提取資料的時候,x和y 的對應關係是不是寫反了,看著不是常用的含義

# 劃分資料集
df_X = data_all['status']
df_y = data_all.drop(columns=['status'])
y_train, y_test, X_train, X_test = train_test_split(df_X, df_y, test_size=0.3,random_state=2018)
print("訓練集數量:", X_train.shape[0], "測試集數量:", X_test.shape[0])

2.2 AUC的計算可以直接調包

@010 @013 看到你們自己寫了這部分的程式碼,我自己也在整理這部分的知識,建議非開源可查的程式碼可以多加註釋和說明,不然很難理解到這部分的內容,另外sklearn有可以直接呼叫的包,官方文件 可以參考下:

from sklearn.metrics import roc_auc_score
print('LR fit finished, auc: {}'.format(roc_auc_score(y_test, predictions)))

關於ACC和AUC的計算可以整理一下原理,可以參考知乎的文章 https://www.zhihu.com/question/39840928

2.3 Warnings警告的處理

@009 可以使用這段程式碼去除warnings 的警告

# 去除 warnings 的警告
import warnings
warnings.filterwarnings('ignore')

但是不能濫用,有時候排查問題的時候,還是需要通過 warnings 資訊看出其中的端倪