返回顶部
首页 > 资讯 > 后端开发 > Python >分享15 个python中的 Scikit-Learn 技能
  • 600
分享到

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

2024-04-02 19:04:59 600人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1、数据集2、数据拆分3、线性回归4、逻辑回归5、决策树6、Bagging7、Boosting8、随机森林9、XGBoost10、支持向量机(SVM)11、混淆矩阵12、K-均值

前言:

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 技能内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 分享15 个python中的 Scikit-Learn 技能

本文链接: https://lsjlt.com/news/141140.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 分享15 个python中的 Scikit-Learn 技能
    目录1、数据集2、数据拆分3、线性回归4、逻辑回归5、决策树6、Bagging7、Boosting8、随机森林9、XGBoost10、支持向量机(SVM)11、混淆矩阵12、K-均值...
    99+
    2024-04-02
  • Python利用scikit-learn实现近邻算法分类的示例详解
    scikit-learn库 scikit-learn已经封装好很多数据挖掘的算法 现介绍数据挖掘框架的搭建方法 1.转换器(Transformer)用于数据预处理,数据转换 2.流水...
    99+
    2023-02-28
    Python scikit-learn近邻算法分类 Python 近邻算法分类 Python scikit-learn
  • 15分钟15个SQL Server复制的技巧
    15分钟15个SQL Server复制的技巧 翻译自:15 SQL Server replication tips in 15 minutes 这个技巧和窍门的列表将帮助你增强复制技术。...
    99+
    2024-04-02
  • 分享15超级好用得Python实用技巧
    目录01 all or any02 dir03 列表(list)推导式04 pprint05 repr06 sh07 Type hints08 uuid09 wikipedia10 ...
    99+
    2024-04-02
  • 详解让Python性能起飞的15个技巧
    目录前言如何测量程序的执行时间1.使用map()进行函数映射2.使用set()求交集3.使用sort()或sorted()排序4.使用collections.Counter()计数5...
    99+
    2024-04-02
  • 分享Python 的十个小技巧
      一. 列表、字典、集合、元组的使用  from random import randint, sample  # 列表解析  data = [randint(-10, 10) for _ in xrange(10)]  filter(l...
    99+
    2023-01-31
    小技巧 Python
  • 10个Python中Pip的使用技巧分享
    目录Python pip1.安装 pip2.升级 pip3.安装库4. 库的批量安装5.卸载和升级包6. 冻结 Python pip 依赖7.查看库信息8.查看需要升级的库9. 检查...
    99+
    2024-04-02
  • 7个Python中的隐藏小技巧分享
    目录前言1、功能属性2、不完整代码的占位符3、 eval() 函数4、在 Python 解析器中使用以下命令启动文件托管服务器5、无限参数6、Zip() 方法7、旋转列表前言 Pyt...
    99+
    2023-03-20
    Python隐藏技巧分享 Python隐藏技巧 Python技巧
  • 分享15个JavaScript的重要数组方法
    目录1、ForEach2、Map3、Filter4、Find5、FindIndex6、Reduce7、Every8、Some9、 Sort10、Flat11、 Reverse12、I...
    99+
    2024-04-02
  • 分享15个Mysql索引失效的场景
    目录背景1.数据库及索引准备创建表结构初始化数据数据库版本及执行计划2.联合索引不满足最左匹配原则3.使用了select *4.索引列参与运算5.索引列参使用了函数6.错误...
    99+
    2024-04-02
  • 分享9个实用的Python技巧
    本篇内容介绍了“分享9个实用的Python技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!清理字符串输入对用户输入进行清理的问题几乎适用于...
    99+
    2023-06-16
  • 分享9个好用的Python技巧
    目录1.引言2.Trick 13.Trick 24.Trick35.Trick46.Trick57.Trick68.Trick79.Trick810.Trick911.总结1.引言 ...
    99+
    2024-04-02
  • 分享4个Python中高效省时的技巧
    目录反转列表交换两个值在函数内部循环减少函数调用次数总结今天我想和大家分享 4 个省时的 Python 技巧,可以节省 10~20% 的 Python 执行时间。 反转列表 Pyth...
    99+
    2024-04-02
  • 分享Python中四个不常见的小技巧
    目录1. 引言2. 获取 n 个最大数字3. 获取 n 个最小数字4. 删除字符串的特定部分5. 从列表中删除重复元素6. 总结1. 引言 在编程界,每个人都希望自己可以写出世界上最...
    99+
    2024-04-02
  • 总结15个Python库的功能
    这篇文章主要介绍“总结15个Python库的功能”,在日常操作中,相信很多人在总结15个Python库的功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”总结15个Python库的功能”的疑惑有所帮助!接下来...
    99+
    2023-06-15
  • 20个Python常用技巧分享
    目录1.字符串反转2.每个单词的第一个字母大写3. 字符串查找唯一元素4.重复打印字符串和列表n次5.列表生成6.变量交换7.字符串拆分为子字符串列表8.多个字符串组合为一...
    99+
    2023-05-14
    Python常用技巧分享 Python常用技巧 Python技巧
  • Python语言的10个小技巧分享
    这篇文章主要讲解了“Python语言的10个小技巧分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python语言的10个小技巧分享”吧!10个Python小技巧1. 用ZIP处理列表假设...
    99+
    2023-06-16
  • 分享介绍Python的9个实用技巧
    本文会介绍一些Python大神用的贼溜的技巧,让一探究竟吧!欢迎收藏学习,喜欢点赞支持,欢迎畅聊。 整理字符串输入 整理用户输入的问题在编程过程中很常见。有更好的方法来解决: u...
    99+
    2024-04-02
  • 15个可提升编码技能的JavaScript工具分别是什么
    这篇文章将为大家详细讲解有关15个可提升编码技能的JavaScript工具分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript库是一...
    99+
    2024-04-02
  • 关于Python中进度条的六个实用技巧分享
    目录1 简介2 tqdm中实用的6个特性2.1 autonotebook自动切换进度条风格2.2 延迟渲染进度条2.3 自定义进度条色彩2.4 自主控制的进度上限2.5 针对enum...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作