sklearnが最も重要なライブラリのPythonの機械学習の一つであり、データマイニングは、様々なアルゴリズム、sklearnフレームワークの概要を達成するために使用されます。
、sklearnアルゴリズム:
分類、回帰、クラスタリング、次元削減:図から、あなたは主に4つのカテゴリのアルゴリズムライブラリを見ることができます。どこで:
- 一般的な回帰:線形、決定木、SVM、KNN;統合回帰:ランダムフォレスト、アダブースト、GradientBoosting、バギング、ExtraTrees
- 一般的に使用される分類:線形、決定木、SVM、KNN、ナイーブベイズ;統合分類:ランダムフォレスト、アダブースト、GradientBoosting、バギング、ExtraTrees
- 一般的クラスタリング:k平均(K-手段)、階層的クラスタリング(階層的クラスタリング)、DBSCAN
- 一般的な次元削減:LinearDiscriminantAnalysis、PCA
第二に、機械学習アプリケーションのsklearnにおける主な手順
(1)データ・セットに
一般的に3つのデータセットに分割ローディングのプロセスによって、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は、スタッキング、高め、袋詰めを含め、いくつかの特によく知られている統合方法を学習統合、より良い結果を達成するために、統合モデルを可能にします。
私の他のブログ総合学習を参照してください。