Scikit-Learn 是一个非常棒的 python 库,用于实现机器学习模型和统计建模。通过它,我们不仅可以实现各种回归、分类、聚类的机器学习模型,它还提供了降维、特征选择、特征提取、集成技术和内置数据集的功能。

今天我将详细地介绍一下 Scikit-Learn,相信通过本文你会对它有更深刻的理解与运用,喜欢点赞、收藏、分享。

1、数据集

学习算法时,我们都希望有一些数据集可以练手。Scikit learn 附带一些非常棒的数据集,如iris数据集、房价数据集、糖尿病数据集等。

这些数据集非常容易获取、同时也易于理解,你可以直接在其上实现ML模型,非常适合初学者。

你可以按如下方式即可获取:

import sklearn
from sklearn import datasets
import pandas as pd
dataset = datasets.load_iris()
df = pd.DataFrame(dataset.data, columns=dataset.feature_names)

同样,你可以用同样的方式导入其他数据集。

2、数据拆分

Sklearn 提供了拆分数据集以进行训练和测试的功能。拆分数据集对于预测性能的无偏见评估至关重要,可以定义训练和测试数据集中的数据比例。

我们可以按如下方式拆分数据集:

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=2, random_state=4)

在 train_test_split 的帮助下,我们对数据集进行了拆分,使得训练集有 80% 的数据和测试集有 20% 的数据。

3、线性回归

当输出变量为连续变量且与因变量呈线性关系时,使用监督机器学习模型,它可以通过分析前几个月的销售数据来预测未来几个月的销售。

借助sklearn,我们可以轻松实现线性回归模型,如下所示:

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
regression_model = LinearRegression()
regression_model.fit(x_train, y_train)
y_predicted = regression_model.predict(x_test)
rmse = mean_squared_error(y_test, y_predicted)
r2 = r2_score(y_test, y_predicted)

首先 LinerRegression()创建一个线性回归的对象,然后我们在训练集上拟合模型。最后,我们在测试数据集上预测了模型。"rmse"和"r_score"可用于检查模型的准确性。

4、逻辑回归

逻辑回归也是一种监督回归算法,就像线性回归一样。唯一的区别是输出变量是分类的。它可用于预测患者是否患有心脏病。

借助 sklearn,我们可以轻松实现 Logistic 回归模型,如下所示:

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
logreg = LogisticRegression()
logreg.fit(x_train, y_train)
y_predicted = logreg.predict(x_test)
confusion_matrix = confusion_matrix(y_test, y_pred)
print(confusion_matrix)
print(classification_report(y_test, y_pred))

混淆矩阵和分类报告用于检查分类模型的准确性。

5、决策树

决策树是一个强大的工具,可用于分类和回归问题。它由根和节点组成,根代表分裂的决定,节点代表输出变量值。当因变量与自变量不遵循线性关系时,决策树很有用。

用于分类的决策树实现

from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import confusion_matrix
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO
from IPython.display import Image
from pydot import graph_from_dot_data
dt = DecisionTreeClassifier()
dt.fit(x_train, y_train)
dot_data = StringIO()
export_graphviz(dt, out_file=dot_data, feature_names=iris.feature_names)
(graph, ) = graph_from_dot_data(dot_data.getvalue())
y_pred = dt.predict(x_test)

我们使用 DecisionTreeClassifier() 对象拟合模型,并使用进一步的代码来可视化 Python 中的决策树实现。

6、Bagging

Bagging是一种使用训练集中的随机样本训练相同类型的多个模型的技术。不同模型的输入是相互独立的。

对于前一种情况,可以使用多个决策树进行预测,而不仅仅是一个被称为随机森林的决策树。

7、Boosting

Boosting 多个模型的训练方式是,一个模型的输入取决于前一个模型的输出。在 Boosting 中,对预测错误的数据给予更多的优先权。

8、随机森林

随机森林是一种 bagging 技术,它使用成百上千的决策树来构建模型,用于分类和回归问题。比如:贷款申请人分类、识别欺诈活动和预测疾病。

在 python 中实现如下:

from sklearn.ensemble import RandomForestClassifier
num_trees = 100
max_features = 3
clf = RandomForestClassifier(n_estimators=num_trees, max_features=max_features)
clf.fit(x_train,y_train)
y_pred=clf.predict(x_test)
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))

9、XGBoost

XGBoost 是一种提升技术,可提供梯度提升决策树的高性能实现。它可以自行处理丢失的数据,支持正则化并且通常比其他模型给出更准确的结果。

在 python 中实现如下:

from xgboost import XGBClassifier
from sklearn.metrics import mean_squared_error
xgb = XGBClassifier(colsample_bytree = 0.3, learning_rate = 0.1,max_depth = 5, alpha = 10, n_estimators = 10)
xgb.fit(x_train,y_train)
y_pred=xgb.predict(x_test)
rmse = np.sqrt(mean_squared_error(y_test, preds))
print("RMSE: %f" % (rmse))

10、支持向量机(SVM)

SVM是一种监督机器学习算法,通过找到最好的超平面来进行分类,它通常被用于许多应用程序,例如人脸检测、邮件分类等。

在 python 中实现为

from sklearn import svm
from sklearn import metrics
clf = svm.SVC(kernel='linear')
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))

11、混淆矩阵

混淆矩阵是用于描述分类模型性能的表格。混淆矩阵以如下4项的帮助下进行分析:

  • 真阳性(TF)

这意味着模型预测为正,实际上为正。

  • 真阴性(TN)

这意味着模型预测为负,实际上为负。

  • 误报(FP)

这意味着模型预测为正,但实际上为负。

  • 假阴性(FN)

这意味着模型预测为负,但实际上为正。

Python 可以实现

from sklearn.metrics import confusion_matrix
confusion_matrix = confusion_matrix(y_test, y_pred)
print(confusion_matrix)

12、K-均值聚类

K-Means 聚类是一种用于解决分类问题的无监督机器学习算法。无监督算法是数据集中没有标签或输出变量的算法。

在聚类中,数据集根据特征分成不同的组,称为集群。k-means 聚类有很多应用,例如市场分割、文档聚类、图像分割。

它可以在python中实现为:

from sklearn.cluster import KMeans
import statsmodels.api as sm
kmeans = KMeans(3)
means.fit(x)
identified_clusters = kmeans.fit_predict(x)

13、DBSCAN 聚类

DBSCAN 也是一种无监督聚类算法,它根据数据点之间的相似性进行聚类。在 DBSCAN 中,只有当指定半径的簇中的点数最少时,才会形成簇。

DBSCAN 的优势在于它对异常值具有鲁棒性,即它可以自行处理异常值,这与 k 均值聚类不同。DBSCAN 算法用于创建热图、地理空间分析、温度数据中的异常检测。

它可以实现为

from sklearn.cluster import DBSCAN
from sklearn import metrics
from sklearn.preprocessing import StandardScaler
db = DBSCAN(eps=0.3, min_samples=10).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
print(labels)

14、标准化和规范化

标准化

标准化是一种缩放技术,我们将属性的均值设为 0,将标准差设为 1,从而使值以具有单位标准差的均值为中心。它可以做为 X'= (X-μ)/σ

归一化

归一化是一种使值的范围从 0 到 1 的技术,它也称为最小-最大缩放。归一化可以通过给定的公式 X= (X -Xmin)/(Xmax-Xmin) 来完成。

from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler

Python 提供了 StandardScaler 函数用于实现标准化,MinMaxScaler 函数用于规范化。

15、特征提取

特征提取是从数据中提取特征的方法。如果将数据转换为数字格式,我们只能将数据传递给机器学习模型。Scikit-Learn 提供了将文本和图像转换为数字的功能。

Bag of Words 和 TF-IDF 是 scikit-learn 提供的自然语言处理中最常用的将单词转换为数字的方法。

概括

这篇文章详细地介绍了 scikit-learn 的15个最重要的特性以及 python 代码实现。

参考

https://ml2quantum.com/scikit-learn/

(完)

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件

本站qq群955171419,加入微信群请扫码:

【机器学习】机器学习初学者绕不开的 15 个 Scikit-Learn 重要技能!相关推荐

  1. 我爱机器学习 机器学习干货站- 资源

    我爱机器学习 机器学习干货站 跳至正文 机器学习 Deep Learning 所有主题 关注我们 DeepMind团队的<Deep Reinforcement Learning in Large ...

  2. 我爱机器学习--机器学习方向资料汇总

    转载:http://blog.csdn.net/shuimanting520/article/details/45748505 机器学习爱好者资料 机器学习领域的几种主要学习方式 From Stump ...

  3. [转载]Scikit Learn: 在python中机器学习

    原址:http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据集大小的示例:数码 ...

  4. 机器学习与Scikit Learn学习库

    摘要: 本文介绍机器学习相关的学习库Scikit Learn,包含其安装及具体识别手写体数字案例,适合机器学习初学者入门Scikit Learn. 在我科研的时候,机器学习(ML)是计算机科学领域中最 ...

  5. 狼人杀要做社交,绕不开语音视频连麦 | 深度

    本文作者冼牛,即构科技市场运营总监,香港大学MBA,十年研发经验,音视频云服务技术专家,专注连麦互动直播技术应用研究. 本文系雷锋网独家文章. 忽如一夜春风来,千树万树梨花开. 回首看狼人杀在过去几个 ...

  6. 狼人杀要做社交,绕不开音视频连麦

    本文转自雷锋网. 忽如一夜春风来,千树万树梨花开. 回首看狼人杀在过去几个月的强势崛起,这句满带活力的诗句很自然地进入笔者的脑海. 如果狼人杀只是一款游戏爆品,那么它还远远搭不上风口这个词儿.可是狼人 ...

  7. 重来之大学版|社交生活篇——大学生群体绕不开的恋爱话题,大学生男女的那些事儿,大学生性健康教育,大学生性教育

    谈性色变,大可不必.这不是什么羞耻的事情,现代社会应该勇敢面对"性",大学生更是应该如此. 一.人流,大学生之痛 学校里面会有许多广告,电视机.广播电台.互联网全部都是.然而在诸多 ...

  8. 做用户,绕不开画像!

    正文开始 导读:做用户,绕不开画像!画像不仅可以提升对用户的认知,还可以通过落地赋能业务.今天我们聊聊用户画像在用户生命周期中的应用,主要介绍用户画像在电商场景下如何驱动产品链路优化.将按照用户生命周 ...

  9. bilibili源码_Java开源商城源码推荐,从菜鸡到大神,永远绕不开的商城系统

    每个Java程序员,从懵逼菜鸡,再到懵懂菜鸟,再到小鸟,大鸟,最后到技术大神,始终绕不开商城系统,里面蕴含了大量的业务,涉及到了大量的知识点和解决方案. 今天介绍一款Java开源商城源码 xmall- ...

最新文章

  1. arm编译安装openCV整理
  2. linux下载哪个python版本-Linux升级python版本
  3. python版本的策略模式
  4. [leetcode] remove duplicate letters
  5. webpack4.x最详细入门讲解
  6. Day 9 函数的初识1
  7. php无法创建cookie,php-curl cookie无法成功创建
  8. Enterprise Library 2.0 插件介绍:Avanade Integration Pack
  9. 安装指定的vue-router版本
  10. leetcode 181 Employees Earning More Than Their Managers 不会分析的数据库复杂度
  11. AI新生 人类最后一个大问题 破解人机共存密码 Human Compatible Stuart Russell
  12. PHP宝塔IDC分销系统,PHP宝塔IDC分销系统,宝塔面板开虚拟主机程序–Bty1.0
  13. 20190625——特征抽取 主成分分析
  14. 著名的“三门问题”的验证
  15. 查看服务器网卡和网口对应关系
  16. Android studio突然报错Entry name ‘META-INF/androidx.vectordrawable_vectordrawable.version‘ collided的解决办法
  17. 记录一次数据库被黑的过程
  18. 利用word2vec训练词向量
  19. 单场淘汰制场次计算方法_体育编排
  20. 希望三号GMSK遥测接收教程

热门文章

  1. 链表操作---面向过程--到---面型对象---到模板类
  2. 研究:低智商男人易出轨
  3. 北师大听讲座-张建华-走近Russia
  4. Linux网络技术管理
  5. HTTPS是如何加密的
  6. html5中高德、腾讯、百度 地图api调起手机app
  7. 非刚性人脸跟踪 —— 实用工具
  8. Linux CentOS服务启动
  9. linux查找文件find
  10. GraphPad Prism 平均值的标准误差