利用python實現資料分析的大致主要流程(簡)
前提:這段程式碼只適用於對資料分析有簡單的基礎認識者
data是樣本資料集,target是對應的樣本目標
1. 分析特徵值
如果特徵值過多,將不需要的特徵值刪減,保留有影響或者影響較大的特徵值
2. 分解data和target
如果target目標值的資料量差異巨大可以使用過取樣,也就是將訓練集樣本量小的目標資料擴大,
3. 交叉驗證
4. 模型引數自動調優
-
決策樹、梯度提升樹
決策樹
from sklearn.tree import DecisionTreeClassifier
dtree=DecisionTreeClassifier()
dtree.fit(data,target)
dtree_feature=dtree.feature_importances_梯度提升樹
gbc=GradientBoostingClassifier()
gbc.fit(X_train_new,y_train_new)
gbc_feature=gbc.feature_importances_
將權重為0或者權重過小的特徵刪除
Index=some_feature.argsort()
some_feature[index] #這個就是根據權重顯示排序後的特徵
data.columns[index] #這個是分局權重排序後顯示的列名
用排序後的列名擷取後面幾個後面有意義的特徵
data2=data [data.columns[index][6:]] #這個例子是擷取下表為6及以後的列 -
過取樣:
先要分解出訓練集和測試集:
X_train_new,y_train_new=smote.fit_resample(X_train,y_train)
from imblearn.over_sampling import SMOTE
smote=SMOTE()
X_train_new,y_train_new=smote.fit_resample(X_train,y_train) -
交叉驗證:混淆矩陣、交叉表:
混淆矩陣
from sklearn.metrics import confusion_matrix
confusion_matrix(y_test,y_)
y_test 是目標值的測試資料
y_ 是利用模型測試資料得到的結果交叉表
pd.crosstab(y_test,y_)
-
模型引數自動調優:
- 針對邏輯迴歸模型:
lg=LogisticRegression()
param_grid={
‘C’:[0.1,1,10,100],
‘tol’:[1e-3,1e-4,1e-5]
}
from sklearn.model_selection import GridSearchCV
gs=GridSearchCV(lg,param_grid)
gs.fit(X_test,y_test)
lg_best=gs.best_estimator_
lg.score(X_test,y_test)
- 針對邏輯迴歸模型: