sklearn的模型训练与预测

sklearn的模型训练与预测

sklearn是强大的python机器学习工具,支持丰富的机器学习算法数据预处理,在学术界和企业中应用广泛,下面是sklearn的代码编写流程和各种算法使用示例(以分类为例)。

分类任务流程三步走

  1. 创建模型对象
  2. 训练
  3. 预测与性能评价

xgboost算法分类

'''
 * xgboost分类
'''

from classifier import LogRegClassifier
import numpy as np
import json
import math
import time
import os
import random
from sklearn.model_selection import train_test_split
from sklearn import metrics


def main():
    time_begin = time.time()
    # 原始数据(省略)
    data = d.data
    labels = d.labels
    # 数据标准化
    from sklearn.preprocessing import StandardScaler
    data = StandardScaler().fit_transform(data)
    x_train, x_test, y_train, y_test = train_test_split(data, labels, test_size=0.3)

    # 1.创建模型对象
    import sklearn
    from xgboost import XGBClassifier
    clf = XGBClassifier(learning_rate=0.1,
                        n_estimators=1000,  # 树的个数--1000棵树建立xgboost
                        max_depth=6,  # 树的深度
                        min_child_weight=1,  # 叶子节点最小权重
                        gamma=0.,  # 惩罚项中叶子结点个数前的参数
                        subsample=0.8,  # 随机选择80%样本建立决策树
                        colsample_btree=0.8,  # 随机选择80%特征建立决策树
                        objective='multi:softmax',  # 指定损失函数
                        scale_pos_weight=1,  # 解决样本个数不平衡的问题
                        random_state=27  # 随机数
                        )

    # 2.训练
    clf = clf.fit(x_train, y_train, eval_set=[(x_test, y_test)], eval_metric="mlogloss", early_stopping_rounds=10,
                  verbose=True)

    # 3.预测与性能评价
    np.set_printoptions(threshold=np.inf)
    predicted = clf.predict(x_test)
    predicted = np.array(predicted)
    print(metrics.classification_report(y_test, predicted))
    print(metrics.confusion_matrix(y_test, predicted))
    time_end = time.time()
    print("total time is ", time_end-time_begin)


# 程序入口
if __name__ == "__main__":
    main()

随机森林算法分类

n_estimators是随机森林的一个重要调优参数,表示树的个数。

'''
 * 随机森林分类
'''

from classifier import LogRegClassifier
import numpy as np
import json
import math
import time
import os
import random
from sklearn.model_selection import train_test_split
from sklearn import metrics


def main():
    time_begin = time.time()
    # 原始数据(省略)
    data = d.data
    labels = d.labels
    # 数据标准化
    from sklearn.preprocessing import StandardScaler
    data = StandardScaler().fit_transform(data)
    x_train, x_test, y_train, y_test = train_test_split(data, labels, test_size=0.3)

    # 1.创建模型对象
    import sklearn
    from xgboost import XGBClassifier
    clf = sklearn.ensemble.RandomForestClassifier(n_estimators=100)

    # 2.训练
    clf = clf.fit(x_train, y_train, eval_set=[(x_test, y_test)], eval_metric="mlogloss", early_stopping_rounds=10,
                  verbose=True)

    # 3.预测与性能评价
    np.set_printoptions(threshold=np.inf)
    predicted = clf.predict(x_test)
    predicted = np.array(predicted)
    print(metrics.classification_report(y_test, predicted))
    print(metrics.confusion_matrix(y_test, predicted))
    time_end = time.time()
    print("total time is ", time_end-time_begin)


# 程序入口
if __name__ == "__main__":
    main()

sklearn,可以使用多种机器学习模型对信号进行分类,比如支持向量机(SVM)、决策树(Decision Tree)、随机森林(Random Forest)等等。下面以SVM为例,介绍一下如何搭建和训练模型。 首先,需要准备数据集。假设我们有一个信号分类的数据集,包含若干个信号样本,每个样本都有一个标签,表示该样本属于哪一类别。 接下来,需要将数据集分成训练集和测试集。一般来说,训练集占总数据集的70%~80%,测试集占20%~30%。可以使用sklearn的train_test_split函数来实现数据集的划分。 ```python from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) ``` 其,X是特征数据,y是标签数据。test_size表示测试集所占比例,random_state用于随机种子,保证每次划分的结果一致。 接下来,可以使用sklearn的SVM模型训练数据。 ```python from sklearn.svm import SVC model = SVC(kernel='linear') model.fit(X_train, y_train) ``` 其,kernel参数表示SVM的核函数,这里选择线性核函数。fit函数用于训练模型,将训练集的特征数据和标签数据作为参数传入。 训练完成后,可以使用测试集来评估模型的性能。 ```python y_pred = model.predict(X_test) from sklearn.metrics import accuracy_score accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` 其,predict函数用于对测试集进行预测,accuracy_score函数用于计算预测准确率。 以上就是使用sklearn搭建和训练SVM模型的基本流程,其他模型的操作类似。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值