分享15 个python中的 Scikit-Learn 技能

目录
  • 1、数据集
  • 2、数据拆分
  • 3、线性回归
  • 4、逻辑回归
  • 5、决策树
  • 6、Bagging
  • 7、Boosting
  • 8、随机森林
  • 9、XGBoost
  • 10、支持向量机(SVM)
  • 11、混淆矩阵
  • 12、K-均值聚类
  • 13、DBSCAN聚类
  • 14、标准化和规范化
    • 标准化
    • 正常化
  • 15、特征提取

前言:

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 代码实现。

到此这篇关于分享15 个python中的 Scikit-Learn 技能的文章就介绍到这了,更多相关 Scikit-Learn 技能内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python的scikit-learn将特征转成one-hot特征的方法

    如下所示: enc = OneHotEncoder(categorical_features=np.array([0,1,2]),n_values=[5,4,2]) enc.fit(train_data) train_data = enc.transform(train_data).toarray() test_data = enc.transform(test_data).toarray() 以上这篇python的scikit-learn将特征转成one-hot特征的方法就是小编分享给大家的全

  • 基于Python和Scikit-Learn的机器学习探索

    你好,%用户名%! 我叫Alex,我在机器学习和网络图分析(主要是理论)有所涉猎.我同时在为一家俄罗斯移动运营商开发大数据产品.这是我第一次在网上写文章,不喜勿喷. 现在,很多人想开发高效的算法以及参加机器学习的竞赛.所以他们过来问我:"该如何开始?".一段时间以前,我在一个俄罗斯联邦政府的下属机构中领导了媒体和社交网络大数据分析工具的开发.我仍然有一些我团队使用过的文档,我乐意与你们分享.前提是读者已经有很好的数学和机器学习方面的知识(我的团队主要由MIPT(莫斯科物理与技术大学)和

  • Python机器学习算法库scikit-learn学习之决策树实现方法详解

    本文实例讲述了Python机器学习算法库scikit-learn学习之决策树实现方法.分享给大家供大家参考,具体如下: 决策树 决策树(DTs)是一种用于分类和回归的非参数监督学习方法.目标是创建一个模型,通过从数据特性中推导出简单的决策规则来预测目标变量的值. 例如,在下面的例子中,决策树通过一组if-then-else决策规则从数据中学习到近似正弦曲线的情况.树越深,决策规则越复杂,模型也越合适. 决策树的一些优势是: 便于说明和理解,树可以可视化表达: 需要很少的数据准备.其他技术通常需要

  • python机器学习库scikit-learn:SVR的基本应用

    scikit-learn是python的第三方机器学习库,里面集成了大量机器学习的常用方法.例如:贝叶斯,svm,knn等. scikit-learn的官网 : http://scikit-learn.org/stable/index.html点击打开链接 SVR是支持向量回归(support vector regression)的英文缩写,是支持向量机(SVM)的重要的应用分支. scikit-learn中提供了基于libsvm的SVR解决方案. PS:libsvm是台湾大学林智仁教授等开发设

  • python中scikit-learn机器代码实例

    我们给大家带来了关于学习python中scikit-learn机器代码的相关具体实例,以下就是全部代码内容: # -*- coding: utf-8 -*- import numpy from sklearn import metrics from sklearn.svm import LinearSVC from sklearn.naive_bayes import MultinomialNB from sklearn import linear_model from sklearn.data

  • Python机器学习之scikit-learn库中KNN算法的封装与使用方法

    本文实例讲述了Python机器学习之scikit-learn库中KNN算法的封装与使用方法.分享给大家供大家参考,具体如下: 1.工具准备,python环境,pycharm 2.在机器学习中,KNN是不需要训练过程的算法,也就是说,输入样例可以直接调用predict预测结果,训练数据集就是模型.当然这里必须将训练数据和训练标签进行拟合才能形成模型. 3.在pycharm中创建新的项目工程,并在项目下新建KNN.py文件. import numpy as np from math import s

  • Python机器学习库scikit-learn安装与基本使用教程

    本文实例讲述了Python机器学习库scikit-learn安装与基本使用.分享给大家供大家参考,具体如下: 引言 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上能够为用户提供各种机器学习算法接口,可以让用户简单.高效地进行数据挖掘和数据分析. scikit-learn安装 python 中安装许多模板库之前都有依赖关系,安装 scikit-learn 之前需要以下先决条件: Python(>= 2.6 or >= 3

  • Python机器学习工具scikit-learn的使用笔记

    scikit-learn 是基于 Python 语言的机器学习工具 简单高效的数据挖掘和数据分析工具 可供大家在各种环境中重复使用 建立在 NumPy ,SciPy 和 matplotlib 上 开源,可商业使用 - BSD许可证 sklearn 中文文档:http://www.scikitlearn.com.cn/ 官方文档:http://scikit-learn.org/stable/ sklearn官方文档的类容和结构如下: sklearn是基于numpy和scipy的一个机器学习算法库,

  • Python scikit-learn 做线性回归的示例代码

    一.概述 机器学习算法在近几年大数据点燃的热火熏陶下已经变得被人所"熟知",就算不懂得其中各算法理论,叫你喊上一两个著名算法的名字,你也能昂首挺胸脱口而出.当然了,算法之林虽大,但能者还是有限,能适应某些环境并取得较好效果的算法会脱颖而出,而表现平平者则被历史所淡忘.随着机器学习社区的发展和实践验证,这群脱颖而出者也逐渐被人所认可和青睐,同时获得了更多社区力量的支持.改进和推广. 以最广泛的分类算法为例,大致可以分为线性和非线性两大派别.线性算法有著名的逻辑回归.朴素贝叶斯.最大熵等,

  • 分享15 个python中的 Scikit-Learn 技能

    目录 1.数据集 2.数据拆分 3.线性回归 4.逻辑回归 5.决策树 6.Bagging 7.Boosting 8.随机森林 9.XGBoost 10.支持向量机(SVM) 11.混淆矩阵 12.K-均值聚类 13.DBSCAN聚类 14.标准化和规范化 标准化 正常化 15.特征提取 前言: Scikit-Learn 是一个非常棒的 python 库,用于实现机器学习模型和统计建模.通过它,我们不仅可以实现各种回归.分类.聚类的机器学习模型,它还提供了降维.特征选择.特征提取.集成技术和内置

  • 分享4个Python中高效省时的技巧

    目录 反转列表 交换两个值 在函数内部循环 减少函数调用次数 总结 今天我想和大家分享 4 个省时的 Python 技巧,可以节省 10~20% 的 Python 执行时间. 反转列表 Python 中通常有两种反转列表的方法:切片或 reverse() 函数调用.这两种方法都可以反转列表,但需要注意的是内置函数 reverse() 会更改原始列表,而切片方法会创建一个新列表. 但是他们的表现呢?哪种方式更有效?让我们看一下下面的例子: 使用切片: $ python -m timeit -n 1

  • Python中字符串对象语法分享

    目录 一.字符串的外观 1.字符串字面量 2.字符串与多行注释 3.字符串编码方式 二.字符串对象 1.str 2.str实现原理 3.str中的内置方法 4.字符串切片 前言:前面提到了Python中的数值型内置数据类型,接下来呢我们就着重介绍一下字符串类型.在Python中字符串是一个有序的字符集合,没有独立的字符数据类型,当字符串长度为1时就可以认为其是字符.Python的内置数据类型str用于字符串处理.str对象的值为字符系列字符串是不可变序列. 一.字符串的外观 1.字符串字面量 顾

  • python中not、and和or的优先级与详细用法介绍

    前言 (小白专用)本次所分享的是Python中的not.and.or的执行时的优先级,以及他们的具体用法.本文比较详细,不喜勿喷. 一.not.and.or的含义以及优先级 对象 返回结果 优先顺序 not x if x is false,then True,else False 1 x and y if x is false,then x,else y 2 x or y if x is false,then y,else x 3 含义:not是 "非" :and是 "与&q

  • Python中的字典合并与列表合并技巧

    目录 前言 1 合并字典 2 合并列表 前言 又到了每日分享Python小技巧的时候了,今天给大家分享的是Python中两种常见的数据类型合并方法. 1 合并字典 在某些场景下,我们需要对两个(多个)字典进行合并.例如需要将如下两个字典进行合并: dict1 = {"a": 2, "b": 3, "c": 5} dict2 = {"a": 1, "c": 3, "d": 8} 且合并后的

  • Python中的pygal安装和绘制直方图代码分享

    有关pygal的安装,大家可以参阅<pip和pygal的安装实例教程>. 直方图: 直方图是一个特殊的条,它可以取3个数值:纵坐标高度,横坐标开始和横坐标结束. import pygal hist = pygal.Histogram() hist.add('Wide bars', [(5, 0, 10), (4, 5, 13), (2, 0, 15)]) hist.add('Narrow bars', [(10, 1, 2), (12, 4, 4.5), (8, 11, 13)]) hist.

  • 分享15 超级好用得 Python 实用技巧

    目录 01 all or any 02 dir 03 列表(list)推导式 04 pprint 05 repr 06 sh 07 Type hints 08 uuid 09 wikipedia 10 xkcd 11 zip 12 emoji 13 howdoi 14 Jedi 15 **kwargs 01 all or any Python 语言如此流行的众多原因之一,是因为它具有很好的可读性和表现力. 人们经常开玩笑说 Python 是可执行的伪代码.当你可以像这样写代码时,就很难反驳. x

  • Python中隐藏的五种实用技巧分享

    目录 1. ... 对象 2.解压迭代对象 3.展开的艺术 4.下划线 _ 变量 5.多种用途的else 循环 异常处理 1. ... 对象 没错,你没看错,就是 "..." 在Python中 ... 代表着一个名为 Ellipsis 的对象.根据官方说明,它是一个特殊值,通常可以作为空函数的占位符,或是用于Numpy中的切片操作. 如: def my_awesome_function():     ... 等同于: def my_awesome_function():     Ell

  • 10 个Python中Pip的使用技巧分享

    目录 Python pip 1.安装 pip 2.升级 pip 3.安装库 4. 库的批量安装 5.卸载和升级包 6. 冻结 Python pip 依赖 7.查看库信息 8.查看需要升级的库 9. 检查兼容性问题 10. 将库下载到本地 众所周知,pip 可以安装.更新.卸载 Python 的第三方库,非常方便.你们中的许多人可能已经使用 pip 很长时间了,但不清楚它有哪些还不错的功能.希望我今天分享的技巧能让你从 Python pip 中受益. Python pip 让我们从 Python

  • 分享Python中四个不常见的小技巧

    目录 1. 引言 2. 获取 n 个最大数字 3. 获取 n 个最小数字 4. 删除字符串的特定部分 5. 从列表中删除重复元素 6. 总结 1. 引言 在编程界,每个人都希望自己可以写出世界上最好的代码,其实最好的代码往往需要具备最好的代码质量.勤能补拙,善于总结往往可以快速提升大家的编程技巧. 本文重点对日常中不常使用的四个Python技巧进行简明阐述,希望可以提升大家编码时的工作效率. 闲话少说,我们直接开始吧! 2. 获取 n 个最大数字 我们知道,要获得列表中的最大数字,我们往往使用​

随机推荐