获取梯度提升树GDBT模型的重要特征

获取梯度提升树GDBT模型的重要特征

 模型训练之后,想要得到比较重要的特征,可以通过python的sklearn包来实现。

python实现代码如下所示:

 GradientBoostingClassifier.py

# -*- coding: utf-8 -*-
import IOUtil as iou
import numpy as np
import pandas as pd
from sklearn import svm
from sklearn import metrics
import csv
 
def report():
    
    report = metrics.classification_report(y_test, y_predict)
    m = metrics.confusion_matrix(y_test, y_predict)
    print (report)
    print (m)
      
 
def result():
 
    pred= model.predict_proba(X_test)
    result= pd. DataFrame(pred)
    result.to_csv('result_GradientBoostingClassifier.csv')
    
#### 训练
print ("GradientBoostingClassifier Start")
 
X = iou.readArray("X_train.csv")
y = iou.readArray("y_train.csv")
y = y.ravel()
print ("GradientBoostingClassifier Data OK")
 
from sklearn.ensemble import GradientBoostingClassifier
model = GradientBoostingClassifier()
 
model.fit(X, y)
 
n=model.feature_importances_#模型的重要特征
print(n)
 
 
###### 预测
 
X_test = iou.readArray("X_test.csv")
y_test = iou.readArray("y_test.csv")
 
print ("GradientBoostingClassifier predict...")
y_predict = model.predict(X_test)
 
 
result()
report()
 
 
print ("GradientBoostingClassifier Done!!!!!!")

 

 读取文件的代码如下所示:

IOUtil.py 


import csv
import numpy as np
from sklearn.externals import joblib
 
 
def readArray( file ):
    Data = []
    reader = csv.reader(open(file),delimiter=',', quotechar='\'')
 
    for row in reader:
        row = [float(x) for x in row]
        Data.append(row)
 
    Data = np.array(Data)
 
    return Data
 

 

### 使用机器学习进行信用卡欺诈检测 #### 1. 数据获取与预处理 数据集通常包含交易记录,每条记录可能有多个特征,如时间戳、金额、商户类别码(MCC)等。对于不平衡的数据集,正样本(即欺诈交易)远少于负样本(正常交易),因此需要特别注意采样策略。 ```python import pandas as pd from sklearn.model_selection import train_test_split # 加载数据集 data = pd.read_csv('creditcard.csv') # 查看前几行数据 print(data.head()) # 将标签列分离出来作为目标变量y X = data.drop(columns=['Class']) y = data['Class'] # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` #### 2. 特征工程 通过分析现有特征之间的关系来创建新的特征可以帮助模型更好地理解潜在规律。例如计算某些数值型字段的标准差或均值变化率等统计量;也可以尝试降维算法减少维度带来的噪声影响。 #### 3. 模型选择与评估 考虑到二分类问题的特点,在此推荐几种常用的监督式学习器: - **逻辑回归(Logistic Regression)**:简单易解释,适合线性可分的情况。 - **随机森林(Random Forest Classifier)**:能够自动处理缺失值并具有较强的抗过拟合能力。 - **梯度提升树(Gradient Boosting Decision Tree,GDBT)**:迭代优化弱分类器组合而成强分类器,效果较好但参数调优复杂度较高。 - **支持向量机(Support Vector Machine,SVM)**:适用于高维空间下的小规模样本建模任务。 针对本案例中的极度不均衡分布现象,建议采用SMOTE (Synthetic Minority Over-sampling Technique) 对少数类做适当扩充后再投入上述任一模型中训练[^2]。 ```python from imblearn.over_sampling import SMOTE from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report smote = SMOTE(random_state=42) X_resampled, y_resampled = smote.fit_resample(X_train, y_train) model = LogisticRegression(max_iter=1000).fit(X_resampled, y_resampled) predictions = model.predict(X_test) print(classification_report(y_test, predictions)) ``` #### 4. 结果解读与部署上线 完成以上步骤后即可得到一个初步可用的预测系统原型。然而实际应用时还需考虑更多因素比如实时响应速度要求、误报成本控制等问题。最终版本应该经过严格的性能评测并与业务需求紧密结合才能正式投入使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值