背景
背景:
報名參加一週帶做算法實踐的小項目
數據:
數據是金融數據, 我們要做的是預測貸款用戶是否會逾期。
表格中, status是標籤: 0表示未逾期, 1表示逾期。
實驗
- 讀取數據
import pandas as pd
# A.讀取數據
data_all = pd.read_csv('./data_all.csv', encoding='gbk')
data_all.head()
注:數據預處理已經處理好 每個column都是一個feature
- 劃分數據集
from sklearn.model_selection import train_test_split
features = [x for x in data_all.columns if x not in ['status']] # 特徵
X = data_all[features] # 特徵向量
y = data_all['status'] # labels
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,random_state=2018)
X_train.head()
注如下:
# train_test_split(*array,test_size=0.25,train_size=None,random_state=None,shuffle=True,stratify=None)
# *array:切分數據源(list/np.array/pd.DataFrame/scipy_sparse matrices)
# test_size和train_size是互補和爲1的一對值
# shuffle:對數據切分前是否洗牌
# stratify:是否分層抽樣切分數據( If shuffle=False then stratify must be None.)
- 構建模型
- 邏輯迴歸
from sklearn.linear_model import LogisticRegression
log_model = LogisticRegression(random_state =2018) # 邏輯迴歸模型
log_model.fit(X_train, y_train)
log_model.score(X_test, y_test)
- svm
# C.構建模型--SVM 支持向量機 & 評分
from sklearn.svm import SVC
svc=SVC(random_state =2018)
svc.fit(X_train, y_train)
print(svc.score(X_test, y_test))
- 決策樹
# C.構建模型--決策樹 & 評分
from sklearn.tree import DecisionTreeClassifier
tre = DecisionTreeClassifier(random_state =2018)
tre.fit(X_train,y_train)
tr_score = tre.score(X_test,y_test)
tr_score
思考:
- 爲什麼是 random_state=2018???
A:沒有設置 random_state=2018,每次取得的結果就不一樣,它的隨機數種子與當前系統時間有關。
- 使用的工具是jupyter notebook ,在運行某一個cell的時候,出現一直run 但是不出結果的情況
A:懷疑數據傾斜 但是當Restart & Run All 的時候就好了,應該是某一個cell的代碼寫的有問題2⃣️不是數據傾斜
- 使用SVM和線性迴歸測出得準確率一模一樣 why?
暫不清楚
4.scikit-learn algorithm cheat-sheet