Datawhale 演算法實戰第1期 Task 1.1
阿新 • • 發佈:2018-12-20
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 資訊看出其中的端倪