基于Scikit-Learn库的机器学习算法编程入门

Scikit-Learn是一个Python机器学习库。尽管当前深度学习发展火热,Tensorflow、PyTorch和MXNet之类的框架很流行。但是并不是所有的数据挖掘任务都需要深度学习来解决。在数据规模有限的情况下,传统机器学习算法如Random Forest、Regression等都有着非常好的效果。Scikit-Learn在传统机器学习算法的支撑方面非常完善,而且效率和准确性也都很好,是非常优秀的机器学习算法Python库。

Scikit-Learn相关信息

Scikit-Learn的主要特点包括:

  1. 简单有效的数据挖掘和数据分析工具
  2. 可供所有人访问,并可在各种环境中重复使用
  3. 基于NumPy,SciPy和matplotlib构建
  4. 开源,商业上可用 - BSD许可证

Scikit-Learn支持的算法也很多,包括:

分类:SVM/最近邻/random forest等

回归:SVR/Ridge Regression等

聚类:K-Means/Spectral Clustering等

维度约减:PCA/Non-Negative Matrix Factorizaion等

模型选择:Grid Search/Cross Validation

预处理等。

Scikit-Learn使用

这个库的使用非常简单。核心步骤基本都是一样。我们举个例子,假设我们有训练数据,X、y,其中X是特征数据,y是标签数据。那么我们可以如下方式使用。

1、导入相关的包

这里我们导入了多个模型了

from sklearn.model_selection import train_test_split
from sklearn import metrics
rom sklearn.linear_model import LogisticRegression
from sklearn.ensemble import GradientBoostingClassifier, RandomForestClassifier

1、划分训练数据和验证数据集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

这里的X_train/y_train就是训练的数据特征和标签,X_test和y_test就是测试集的特征和标签。

2、建立模型

这里我们列举几种分类模型,我们只保留了RandomForest,其他模型都注释了,只是展示一下使用方法,模型的参数也在这里设定:

# model = LogisticRegression(random_state=0, solver='lbfgs', multi_class='multinomial')
# model = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)
# model = svm.SVC(gamma='scale', decision_function_shape='ovo')
model = RandomForestClassifier(n_estimators=30, max_depth=5, min_samples_split=2, random_state=0)

3、模型训练

模型训练很简单,所有的模型都使用fit方法进行训练,训练的结果可以得出分数。

model.fit(X_train, y_train)
score = model.score(X_train, y_train)

4、模型使用和评价

这里如果我们要用模型预测,也很简单,直接使用predict方法就好。评价当然也是顺便了:

predicted = model.predict(X_test)
# print(metrics.accuracy_score(y_test, predicted))
probs = model.predict_proba(X_test)
# print(metrics.roc_auc_score(y_test, probs[:, 1]))

总结

以上就是Scikit-Learn的使用和简介,非常容易。在初步尝试探索数据的时候,它也是极其合适的。可以很快的看到各个经典算法的效果。非常值得学习。当然,他也提供了超参数搜索的方法等。这个以后可以继续讲解一下。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();