ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于sklearn机器学习

2021-11-10 07:02:08  阅读:130  来源: 互联网

标签:基于 机器 模型 接口 算法 train test sklearn


目录


1. 基本概念

1.1. 算法分类

回归算法(药物反应,股票价格):

  • 线性回归
  • 逻辑回归
  • 岭回归

分类算法(垃圾邮件检测,图像识别):

  • k近邻(KNN)
  • 贝叶斯
  • 支持向量机(SVM)
  • 决策树
  • 随机森林

聚类,无监督学习算法(客户细分,分组实验结果):

  • 聚类(k-Means)
  • 谱聚类
  • 均值漂移

降维(可视化,提高效率):

  • PCA
  • 特征选择
  • 非负矩阵分解

1.2. 基本流程

预估器(估计器)estimator:sklearn机器学习算法的实现都属于estimator的子类,estimator定义了每一种算法模型的操作流:

  1. 划分训练集与测试集

    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
    
  2. 数据预处理

  3. 标准化

    from sklearn.preprocessing import StandardScaler
    
    scaler = StandardScaler().fit(X_train)
    standardized_X = scaler.transform(X_train)
    standardized_X_test = scaler.transform(X_test)
    
  4. 归一化

    from sklearn.preprocessing import Normalizer
    
    scaler = Normalizer().fit(X_train)
    normalized_X = scaler.transform(X_train)
    normalized_X_test = scaler.transform(X_test)
    
  5. 二值化

    from sklearn.preprocessing import Binarizer
    
    binarizer = Binarizer(threshold=0.0).fit(X)
    binary_X = binarizer.transform(X)
    
  6. 模型选择与构建

  7. 模型训练

    clf = svm.SVC(gamma=0.001, C=100.)
    clf.fit(Xtrain, Ytrain)
    
  8. 模型测试 & 评估

    from sklearn.metrics import accuracy_score
    
    Ypred = clf.predict(Xtest)
    accuracy_score(Ytest, Ypred)
    

    或: estimator.score(x_test, y_test)

  9. 模型保存与加载

    from sklearn.externals import joblib
    
    joblib.dump(clf, 'digits_svm.pk1')
    clf = joblib.load('digits_svm.pk1')
    

scikit所有的评估模型对象都有 fit() 这个接口,是用来训练模型的接口。针对有监督学习的机器学习,使用 fit(X,y) 来进行训练,其中y是标记数据。针对无监督的机器学习算法,使用 fit(X) 来进行训练,因为无监督机器学习算法的数据集是没有标记的,不需要传入y。

针对所有的监督学习算法,scikit模型对象提供了 predict() 接口,经过训练的模型,可以用这个接口来进行预测。针对分类问题,有些模型还提供了 predict_proba() 的接口,用来输出一个待预测的数据,属于各种类型的可能性,而 predict() 接口直接返回了可能性最高的那个类别。

几乎所有的模型都提供了 scroe() 接口来评价一个模型的好坏,得分越高越好。不是所有的问题都只有准确度这个评价标准,比如异常检测系统,一些产品不良率可以控制到10%以下,这个时候最简单的模型是无条件地全部预测为合格,即无条件返回1,其准确率将达99.999%以上,但实际上这是一个不好的模型。评价这种模型,就需要使用查准率和召回率来衡量。

针对无监督的机器学习算法,scikit的模型对象也提供了 predict() 接口,用来对数据进行聚类分析,把新数据归入某个聚类里。无监督学习算法还有 transform() 接口,这个接口用来进行转换,比如PCA算法对数据进行降维处理时,把三维数据降为二维数据,此时调用 transform() 算法即可把一个三维数据转换为对应的二维数据。

模型接口也是scikit工具包的最大优势之一,即把不同的算法抽象出来,对外提供一致的接口调用。

1.3. Pipeline

Pipeline可以将许多算法模型串联起来,可以用于把多个estamitors级联成一个estamitor,比如将特征提取、归一化、分类组织在一起形成一个典型的机器学习问题工作流。

Pipleline中,除最后一个之外的所有estimators都必须是变换器(transformers),最后一个estimator可以是任意类型(transformer,classifier,regresser)。如果最后一个estimator是个分类器,则整个pipeline就可以作为分类器使用;如果最后一个estimator是个聚类器,则整个pipeline就可以作为聚类器使用。

标签:基于,机器,模型,接口,算法,train,test,sklearn
来源: https://www.cnblogs.com/brt2/p/15531778.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有