sklearnの機械学習、データマイニングを使用します

sklearnが最も重要なライブラリのPythonの機械学習の一つであり、データマイニングは、様々なアルゴリズム、sklearnフレームワークの概要を達成するために使用されます。

sklearn概要

、sklearnアルゴリズム:

分類、回帰、クラスタリング、次元削減:図から、あなたは主に4つのカテゴリのアルゴリズムライブラリを見ることができます。どこで:

  • 一般的な回帰:線形、決定木、SVM、KNN;統合回帰:ランダムフォレスト、アダブースト、GradientBoosting、バギング、ExtraTrees
  • 一般的に使用される分類:線形、決定木、SVM、KNN、ナイーブベイズ;統合分類:ランダムフォレスト、アダブースト、GradientBoosting、バギング、ExtraTrees
  • 一般的クラスタリング:k平均(K-手段)、階層的クラスタリング(階層的クラスタリング)、DBSCAN
  • 一般的な次元削減:LinearDiscriminantAnalysis、PCA

第二に、機械学習アプリケーションのsklearnにおける主な手順

(1)データ・セットに

一般的に3つのデータセットに分割ローディングのプロセスによって、sklearnの搬送別のsklearnデータを生成することができるデータの独自のセットが導入されます。
独自のデータセットをsklearn

(2)データ前処理/エンジニアリング機能/データの可視化

データの視覚化とエンジニアリングの特性、データ前処理のデータ部分が重要な役割を持っているモデルを適応させる、最も重要な作業です。

私の他のプロジェクトは、ブログを参照してくださいます

私は別の記事データの前処理のブログを参照してください

私は別の記事データ視覚化のブログを参照してください

データの前処理は:

  • 降维(sklearn.decomposition)
  • 欠損値
  • (sklearnインポート前処理からの)データの正規化
  • 正規化されたデータセット(preprocessing.StandardScaler()。フィット(traindata))
  • 数据集拆分(from sklearn.mode_selection import train_test_split)
  • 特征选择(sklearn.feature_selection)
  • 特征转换(one-hot)等

这在sklearn里面有很多方法,具体查看api,一般有三种方法

fit():训练算法,设置内部参数。
transform():数据转换。
fit_transform():合并fit和transform两个方法。

主要在sklearn.preprcessing包下。

规范化:

  • MinMaxScaler :最大最小值规范化
  • Normalizer :使每条数据各特征值的和为1
  • StandardScaler
    :为使各特征的均值为0,方差为1

编码:

  • LabelEncoder :把字符串类型的数据转化为整型
  • OneHotEncoder :特征用一个二进制数字来表示
  • Binarizer :为将数值型特征的二值化
  • MultiLabelBinarizer:多标签二值化

(3)模型选择

根据数据来选择模型

常用的回归:线性、决策树、SVM、KNN ;集成回归:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees

常用的分类:线性、决策树、SVM、KNN,朴素贝叶斯;集成分类:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees

常用聚类:k均值(K-means)、层次聚类(Hierarchical clustering)、DBSCAN

常用降维:LinearDiscriminantAnalysis、PCA

model一般有两个属性:
fit():训练算法,设置内部参数。接收训练集和类别两个参数。
predict():预测测试集类别,参数为测试集。

(4)模型评估

模型评估方法详见我另一篇博客
交叉验证方法详见我另一篇博客

交叉验证与模型评分

(from sklearn.model_selection import cross_val_score)

包:sklearn.cross_validation

KFold:K-Fold交叉验证迭代器。接收元素个数、fold数、是否清洗
LeaveOneOut:LeaveOneOut交叉验证迭代器
LeavePOut:LeavePOut交叉验证迭代器
LeaveOneLableOut:LeaveOneLableOut交叉验证迭代器
LeavePLabelOut:LeavePLabelOut交叉验证迭代器

常用方法

train_test_split:分离训练集和测试集(不是K-Fold)
cross_val_score:交叉验证评分,可以指认cv为上面的类的实例
cross_val_predict:交叉验证的预测。

处理过拟合问题

  • 学习曲线from sklearn.model_selection import learning_curve
  • 检验曲线from sklearn.model_selection import validation_curve

包:sklearn.metrics
sklearn.metrics包含评分方法、性能度量、成对度量和距离计算。

分类结果度量

参数大多是y_true和y_pred。

accuracy_score:分类准确度
condusion_matrix :分类混淆矩阵
classification_report:分类报告
precision_recall_fscore_support:计算精确度、召回率、f、支持率
jaccard_similarity_score:计算jcaard相似度
hamming_loss:计算汉明损失
zero_one_loss:0-1损失
hinge_loss:计算hinge损失
log_loss:计算log损失

回归结果度量

explained_varicance_score:可解释方差的回归评分函数
mean_absolute_error:平均绝对误差
mean_squared_error:平均平方误差

(5)模型保存

  • 保存为pickle文件
# 保存模型
with open('model.pickle', 'wb') as f:
    pickle.dump(model, f)

# 读取模型
with open('model.pickle', 'rb') as f:
    model = pickle.load(f)
model.predict(X_test)
  • sklearn自带方法joblib
from sklearn.externals import joblib

# 保存模型
joblib.dump(model, 'model.pickle')

#载入模型
model = joblib.load('model.pickle')

三、sklearn 使用技巧

(1)网格搜索

能够网格搜索最佳参数

包:sklearn.grid_search
网格搜索最佳参数

GridSearchCV:搜索指定参数网格中的最佳参数
ParameterGrid:参数网格
ParameterSampler:用给定分布生成参数的生成器
RandomizedSearchCV:超参的随机搜索
通过best_estimator_.get_params()方法,获取最佳参数。

代码示例

from sklearn import datasets,model_selection
iris=datasets.load_iris() # scikit-learn 自带的 iris 数据集
X=iris.data
y=iris.target

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=0)
alg=DecisionTreeClassifier()
parameters={'max_depth':range(1,100),'min_samples_split':range(2,30)}#参数空间
def fit_model(alg,parameters):
  X= X_train
  y= y_train
  scorer=make_scorer(roc_auc_score)
  grid = GridSearchCV(alg,parameters,scoring=scorer,cv=5)
  grid = grid.fit(X,y)
  print (grid.best_params_)
  print (grid.best_score_)
  return grid

fit_model(alg,parameters)

(2)流水线处理(Pipeline)

プロセスフロー
sklearn.pipeline包

流水线的功能与好处:

pipeline 实现了对全部步骤的流式化封装和管理,可以很方便地使参数集在新数据集上被重复使用。
跟踪记录各步骤的操作(以方便地重现实验结果)
对各步骤进行一个封装
确保代码的复杂程度不至于超出掌控范围
可以结合grid search对参数进行选择
直接调用fit和predict方法来对pipeline中的所有算法模型进行训练和预测。

基本使用方法

流水线的输入为一连串的数据挖掘步骤,其中最后一步必须是估计器,前几步是转换器。输入的数据集经过转换器的处理后,输出的结果作为下一步的输入。最后,用位于流水线最后一步的估计器(模型,有fit方法)对数据进行分类。
每一步都用元组( ‘名称’,步骤)来表示。现在来创建流水线。

    from sklearn.pipeline import Pipeline
    scaling_pipeline = Pipeline([
      ('scale', MinMaxScaler()),
      ('predict', KNeighborsClassifier())

(3)sklearn集成学习

sklearnは、スタッキング、高め、袋詰めを含め、いくつかの特によく知られている統合方法を学習統合、より良い結果を達成するために、統合モデルを可能にします。
私の他のブログ総合学習を参照してください。

おすすめ

転載: blog.csdn.net/qq_39751437/article/details/91786404