使用sklearn对数据库中的数据跑LDA、RF、SVM、LR算法

sys.modules['hs'].__dict__.clear()

Python编程——sys模块的使用详解
python sys.modules模块

对数据库中的数据进行转换

  • 把数据根据具体情景转换为0,1,特征和lable都得是数字
  • 把数据换成array data_d = np.array(data_d)
#将数据转换成0,1,2
def digitization_data(origin_data):
    d_data = []
    for i in origin_data:
        d = []
        for j in i:
        	# 自变量X
            if type(j) == type('A'):
                if j == 'A':
                    d.append(0)
                elif j == 'B':
                    d.append(1)
             # 因变量y
            elif type(j) == float:
                if j > 70.0:
                    d.append(1)
                else:
                    d.append(0)
        d_data.append(d)
    return d_data

对一维或者多维数组切片得到X y

data_d = digitization_data(obtain_d_data())
X, y = data[:, :-1], data[:, -1]

python 二维数组切片
Python高级特性——多维数组切片(Slice)
python中的切片

输入数据,训练模型代码

  • 跑数据 无论是数据库还是矩阵都要清楚数据的格式m*n
def RF_d(data):
    obtain_features = []
    roc_auc = []  # 记录不同特征数执行模型的到的auc值
    index = []  # 执行模型使用的特征数

    # 随机森林法
    X, y = data[:, :-1], data[:, -1]
    model = RandomForestClassifier(n_estimators=30, min_samples_split=2, random_state=0)
    #训练
    model.fit(X, y)
    importances = model.feature_importances_
    print(importances)

    # 根据特征重要性进行向前特征选择
    l = len(importances)
    for j in range(l):
        # 添加第j+1大的特征
        a = heapq.nlargest(j + 1, range(len(importances)), importances.take)
        i = a[j]
        obtain_features.append(i)

        # 获取特征对应的数据
        X1, y1 = data[:, obtain_features], data[:, -1]
        score = cross_val_score(model, X1, y1, cv=10, scoring='roc_auc')
        index.append(j + 1)
        roc_auc.append(score.mean())

    selectfeature = []
    t = 0
    for r in roc_auc:
        selectfeature.append(obtain_features[t])
        if r > 0.91:
            break
        t += 1

    X2, y2 = data[:, selectfeature], data[:, -1]
    acc = cross_val_score(model, X2, y2, cv=10, scoring='accuracy')
    return index, roc_auc, obtain_features, selectfeature

如何调参

cross_val_score()函数返回值
LinearDiscriminantAnalysis类概述
scikit-learn中的cross_val_score函数scoring参数设置
sklearn中SVC和SVR的参数说明
SVC和SVR的区别
Sklearn参数详解—LR模型
对random_state参数的理解
scikit-learn中随机森林(RF)和梯度提升决策树(GBDT)的参数调优
如何用sklearn对随机森林调参

模型调参利器 gridSearchCV(网格搜索)
RF调参小结
Python机器学习笔记:Grid SearchCV(网格搜索)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值