【数据科学】Scikit-learn

这篇具有很好参考价值的文章主要介绍了【数据科学】Scikit-learn。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、Scikit-learn

Scikit-learn开源的Python库,通过统一的界面实现机器学习预处理交叉验证及可视化算法

【数据科学】Scikit-learn,数据科学,scikit-learn,人工智能,机器学习,python,数据分析,论文阅读,大数据

>>> from sklearn import neighbors, datasets, preprocessing
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.metrics import accuracy_score
>>> iris = datasets.load_iris()
>>> X, y = iris.data[:, :2], iris.target
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33)
>>> scaler = preprocessing.StandardScaler().fit(X_train)
>>> X_train = scaler.transform(X_train)
>>> X_test = scaler.transform(X_test)
>>> knn = neighbors.KNeighborsClassifier(n_neighbors=5)
>>> knn.fit(X_train, y_train)
>>> y_pred = knn.predict(X_test)
>>> accuracy_score(y_test, y_pred)

  以上是使用 scikit-learn 库 进行 k-最近邻(KNN)分类的流程,得到 KNN 分类器在 iris 数据集上的预测准确率。


二、加载数据

  Scikit-learn 处理的数据是存储为 NumPy 数组或 SciPy 稀疏矩阵的数字,还支持 Pandas 数据框等可转换为数字数组的其它数据类型

>>> import numpy as np
# 导入了 NumPy 库,用于进行数值计算和数组操作
>>> X = np.random.random((10,5))
>>> y = np.array(['M','M','F','F','M','F','M','M','F','F','F'])
>>> X[X < 0.7] = 0

  以上我们使用了 NumPy 库来生成一个随机的 10 行 5 列的矩阵 X,并将小于 0.7 的元素置为 0。同时,创建了一个包含性别标签的 NumPy 数组 y。我们得到一个形状为 (10, 5) 的随机矩阵 X,其中小于 0.7 的元素被置为 0,并创建了一个包含性别标签的数组 y。这些数据可以用于接下来的 分析建模 或其他任务中。


三、训练集与测试集数据

  使用了 scikit-learn 库train_test_split 函数,将数据集划分为 训练集测试集

>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

  得到划分后的训练集和测试集的特征数据 X_train、X_test,以及对应的类别标签数据 y_train、y_test。可以在训练集上进行模型训练,然后使用测试集评估模型的性能和准确率


四、创建模型

4.1 有监督学习评估器

4.1.1 线性回归

  我们使用 scikit-learn 库LinearRegression 类创建一个线性回归模型对象

>>> from sklearn.linear_model import LinearRegression
>>> lr = LinearRegression(normalize=True)

  创建一个线性回归模型对象 lr


4.1.2 支持向量机(SVM)

  我们使用 scikit-learn 库SVC 类,创建一个 支持向量机(SVM)模型对象

>>> from sklearn.svm import SVC
>>> svc = SVC(kernel='linear')

  创建一个支持向量机模型对象 svc,并 使用线性核函数进行分类


4.1.3 朴素贝叶斯

  使用 scikit-learn 库GaussianNB 类,创建一个 朴素贝叶斯模型对象

>>> from sklearn.naive_bayes import GaussianNB
>>> gnb = GaussianNB()

  创建一个朴素贝叶斯模型对象 gnb。朴素贝叶斯模型是一种常用的概率模型,适用于 分类问题


4.1.4 KNN

  使用 scikit-learn 库neighbors 模块,创建一个 K 最近邻(KNN)分类器对象

>>> from sklearn import neighbors
>>> knn = neighbors.KNeighborsClassifier(n_neighbors=5)

  创建一个 KNN 分类器对象 knn,它会 根据最近的邻居来进行分类KNN 是一种 基于实例的学习方法,根据最近邻居的标签进行分类


4.2 无监督学习评估器

4.2.1 主成分分析(PCA)

  使用 scikit-learn 库PCA 类,创建一个 主成分分析(PCA)对象

>>> from sklearn.decomposition import PCA
>>> pca = PCA(n_components=0.95)

  创建一个 PCA 对象 pca,它可以用于降维或特征提取。PCA 是一种常用的降维技术,可 将高维数据映射到低维空间,保留数据的主要特征


4.2.2 K Means

  使用 scikit-learn 库KMeans 类创建一个 K-Means 聚类器对象

>>> from sklearn.cluster import KMeans
>>> k_means = KMeans(n_clusters=3, random_state=0)

  创建一个 K-Means 聚类器对象 k_means,它将根据数据点之间的距离进行聚类。K-Means 是一种常用的聚类算法将数据点分割成预定义数量的簇,使得簇内的数据点尽可能相似,而不同簇之间的数据点差异较大


五、模型拟合

5.1 有监督学习

  展示了 三种不同的机器学习算法在训练集上进行训练的过程

# 拟合数据与模型
>>> lr.fit(X, y)
# 使用逻辑回归算法(Logistic Regression)对数据集(X, y)进行拟合。其中,X是输入特征矩阵,y是对应的目标变量向量
>>> knn.fit(X_train, y_train)
# 使用K近邻算法(K-Nearest Neighbors)对训练集(X_train, y_train)进行拟合。其中,X_train是训练集的输入特征矩阵,y_train是对应的目标变量向量
>>> svc.fit(X_train, y_train)
# 使用支持向量机算法(Support Vector Machine)对训练集(X_train, y_train)进行拟合。其中,X_train是训练集的输入特征矩阵,y_train是对应的目标变量向量

5.2 无监督学习

  对训练集进行聚类特征降维的过程如下。

>>> k_means.fit(X_train) # 拟合数据与模型
>>> pca_model = pca.fit_transform(X_train) # 拟合并转换数据

  模型会根据给定的训练集数据对 K-Means 聚类算法和 PCA 算法进行拟合。对于 K-Means 聚类算法,模型会 学习找到最佳的簇中心点;对于 PCA 算法,模型会 学习找到最佳的主成分投影空间。这些拟合操作会生成相应的模型或转换对象,以便于之后对新的数据进行聚类降维操作


六、拟合数据与模型

6.1 标准化

  以下是对训练集和测试集进行数据标准化的过程。

>>> from sklearn.preprocessing import StandardScaler
>>> scaler = StandardScaler().fit(X_train)
>>> standardized_X = scaler.transform(X_train)
>>> standardized_X_test = scaler.transform(X_test)

  创建一个 StandardScaler 对象 scaler,并 使用训练集的数据对其进行拟合。然后,我们可以使用 scaler 对训练集和测试集进行标准化转换,以确保数据具有相同的尺度和范围,以 提高模型的训练和预测效果


6.2 归一化

  接下来我们学习对训练集和测试集进行数据归一化

>>> from sklearn.preprocessing import Normalizer
>>> scaler = Normalizer().fit(X_train)
>>> normalized_X = scaler.transform(X_train)
>>> normalized_X_test = scaler.transform(X_test)

  创建一个 Normalizer 对象 scaler,并使用训练集的数据对其进行拟合。然后,我们可以 使用 scaler 对训练集和测试集进行归一化转换,以确保数据在特征向量方向上具有单位范数归一化可以使得不同样本之间的特征向量更具可比性,并且有助于某些机器学习算法的训练和预测效果。


6.3 二值化

  这里展示了对数据集进行二值化处理的过程。

>>> from sklearn.preprocessing import Binarizer
>>> binarizer = Binarizer(threshold=0.0).fit(X)
>>> binary_X = binarizer.transform(X)

  创建一个 Binarizer 对象 binarizer,并使用阈值 threshold=0.0 对数据集 X 进行二值化处理。然后,我们可以 使用 binarizer 对数据集进行二进制转换,并将结果保存在变量 binary_X 中二值化可以使得不同样本之间的特征更具可比性,并且有助于某些机器学习算法的训练和预测效果。


6.4 编码分类特征

  使用 LabelEncoder 对目标变量进行标签编码的过程。

>>> from sklearn.preprocessing import LabelEncoder
>>> enc = LabelEncoder()
>>> y = enc.fit_transform(y)

  创建一个 LabelEncoder 对象 enc,并使用其 fit_transform 方法对目标变量 y 进行标签编码处理。编码后的结果会覆盖原目标变量 y 的值,使得原本的标签被替换为相应的整数编码标签编码常用于将非数字类型的目标变量转换为模型可接受的数字形式,以便进行机器学习任务的训练和预测。


6.5 输入缺失值

  使用 Imputer 对象对数据集中的缺失值进行填充

>>> from sklearn.preprocessing import Imputer
>>> imp = Imputer(missing_values=0, strategy='mean', axis=0)
>>> imp.fit_transform(X_train)

  创建一个 Imputer 对象 imp,并使用其 fit_transform 方法对训练集 X_train 中的缺失值进行填充处理。填充后的结果会覆盖原始的训练集数据 X_train,使得缺失值被替换为相应列的均值Imputer 类常用于在数据预处理阶段处理缺失值,以保证数据集的完整性和准确性


6.6 生成多项式特征

  使用 PolynomialFeatures 对特征进行多项式扩展

>>> from sklearn.preprocessing import PolynomialFeatures
>>> poly = PolynomialFeatures(5)
>>> poly.fit_transform(X)

  创建一个 PolynomialFeatures 对象 poly,并使用其 fit_transform 方法对数据集 X 进行多项式扩展处理。扩展后的结果会包含原始特征的各种次方组合从一次项到最高次数为 5 的项多项式扩展常用于增加模型的复杂度,以捕捉特征之间的非线性关系,从而提升模型的预测能力


七、评估模型性能

7.1 评估模型性能

7.1.1 准确率

  使用 scikit-learn 中的评估器评分法和指标评分函数来评估模型的准确性

>>> knn.score(X_test, y_test)
# 评估器评分法
>>> from sklearn.metrics import accuracy_score
# 指标评分函数
>>> accuracy_score(y_test, y_pred)

  可以使用评估器评分法或指标评分函数来评估模型在测试集上的准确性评估器评分法直接调用模型对象的 score 方法,而指标评分函数则需要传入真实目标变量数据和预测结果数据来计算准确性得分。这些评估方法可以帮助我们 了解模型的性能,并 比较不同模型之间的表现


7.1.2 分类预估评价函数

  使用 scikit-learn 中的 classification_report 函数 来生成分类模型的精确度、召回率、F1指数和支持率等评估指标报告。

>>> from sklearn.metrics import classification_report
# 精确度、召回率、F1分数及支持率
>>> print(classification_report(y_test, y_pred))

  可以使用 classification_report 函数生成分类模型的评估指标报告。该报告会包含每个类别的精确度召回率F1指数支持率等指标,以及加权平均值总平均值。这些指标可以帮助我们评估模型在不同类别上的表现,并提供关于模型性能的详细信息。


7.1.3 混淆矩阵

  使用 scikit-learn 中的 confusion_matrix 函数生成分类模型的混淆矩阵

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

  使用 confusion_matrix 函数生成分类模型的混淆矩阵。混淆矩阵以矩阵的形式展示了模型在各个类别上的分类结果,包括 真正例假正例假负例真负例的数量。这样,我们就可以根据混淆矩阵来评估模型在不同类别上的分类性能,并进一步分析误分类的情况


7.2 回归指标

7.2.1 平均绝对误差

  使用 scikit-learn 中的 mean_absolute_error 函数来计算回归模型的平均绝对误差(Mean Absolute Error)。

>>> from sklearn.metrics import mean_absolute_error 
>>> y_true = [3, -0.5, 2]
>>> mean_absolute_error(y_true, y_pred)

  使用 mean_absolute_error 函数计算回归模型的平均绝对误差。该指标 衡量模型的预测结果与真实值之间的平均偏差程度数值越小表示模型的预测越准确。使用平均绝对误差可以帮助您评估回归模型的性能,并比较不同模型之间的表现。


7.2.2 均方误差

  使用 scikit-learn 中的 mean_squared_error 函数来计算回归模型的均方误差Mean Squared Error)。

>>> from sklearn.metrics import mean_squared_error
>>> mean_squared_error(y_test, y_pred)

  使用 mean_squared_error 函数计算回归模型的均方误差。该指标衡量了模型的预测结果与真实值之间的平均差异程度数值越小表示模型的预测越准确。使用均方误差可以帮助我们评估回归模型的性能,并比较不同模型之间的表现。


7.2.3 R²评分

  使用 scikit-learn 中的 r2_score 函数来计算 回归模型的 R² 分数(R-squared score)。

>>> from sklearn.metrics import r2_score
>>> r2_score(y_true, y_pred)

  通过执行这些代码,可以使用 r2_score 函数计算回归模型的 R² 分数,即确定性系数拟合优度R² 分数的取值范围在 0 到 1 之间,数值越接近 1 表示模型对数据的拟合程度越好,而越接近 0 则表示模型的拟合效果较差。R² 分数可以帮助我们评估回归模型的性能,并与其他模型进行比较。


7.3 群集指标

7.3.1 调整兰德系数

  使用 scikit-learn 中的 adjusted_rand_score 函数来计算聚类算法的调整兰德指数(Adjusted Rand Index)。

>>> from sklearn.metrics import adjusted_rand_score
>>> adjusted_rand_score(y_true, y_pred) 

  使用 adjusted_rand_score 函数计算聚类算法的调整兰德指数。调整兰德指数的取值范围在 -1 到 1 之间数值越接近 1 表示聚类结果与真实标签的一致性越高,而数值越接近 0 表示聚类结果与随机划分的一致性一样,数值越接近 -1 表示聚类结果与真实标签的一致性越低。调整兰德指数可以帮助评估聚类算法的性能,并与其他算法进行比较。


7.3.2 同质性

  使用 scikit-learn 中的 homogeneity_score 函数来计算聚类结果的同质性得分(Homogeneity Score)。

>>> from sklearn.metrics import homogeneity_score
>>> homogeneity_score(y_true, y_pred) 

  使用 homogeneity_score 函数计算聚类结果的同质性得分。同质性得分的取值范围在 0 到 1 之间,数值越接近 1 表示聚类结果中的样本更倾向于同属于一个类别的聚类簇,而数值越接近 0 表示聚类结果的同质性较差,样本分布更分散。同质性得分可以帮助评估聚类算法在保持同类样本集中性方面的性能,并与其他算法进行比较。


7.3.3 V-measure

  使用 scikit-learn 中的 v_measure_score 函数来计算聚类结果的 V-measure 分数

>>> from sklearn.metrics import v_measure_score
>>> v_measure_score(y_true, y_pred) 

  使用 v_measure_score 函数计算聚类结果的 V-measure 分数。V-measure 分数的取值范围在 0 到 1 之间,数值越接近 1 表示聚类结果的同质性和完整性越高,而数值越接近 0 表示聚类结果的质量较差


7.4 交叉验证

  使用 scikit-learn 中的 cross_val_score 函数来进行 交叉验证计算模型的性能评估指标

>>> from sklearn.cross_validation import cross_val_score
>>> print(cross_val_score(knn, X_train, y_train, cv=4))
>>> print(cross_val_score(lr, X, y, cv=2))

  使用 cross_val_score 函数对模型进行交叉验证并计算性能评估指标。交叉验证可以帮助我们更全面地评估模型的性能,并确保评估指标的可靠性。在交叉验证中,输入数据会被分成若干个折(即交叉验证的折数),每一折轮流作为验证集,剩余折作为训练集,用于拟合模型并计算性能评估指标。最终,所有折的性能评估指标会被汇总,得出 模型的平均性能评估指标


八、模型调整

8.1 栅格搜索

  使用 scikit-learn 中的 GridSearchCV 类来进行 网格搜索参数调优

>>> from sklearn.grid_search import GridSearchCV
>>> params = {"n_neighbors": np.arange(1,3), "metric": ["euclidean", "cityblock"]}
>>> grid = GridSearchCV(estimator=knn, param_grid=params)
>>> grid.fit(X_train, y_train)
>>> print(grid.best_score_)
>>> print(grid.best_estimator_.n_neighbors)

  通过执行这些代码,可以使用 GridSearchCV 类对模型的参数空间进行穷举搜索,并找到最佳的参数组合。网格搜索可以帮助我们找到最优的参数设置,从而提高模型的性能。在搜索过程中,将对每一组参数进行交叉验证,并根据性能评估指标选择最佳的参数组合。


8.2 随机参数优化

  使用 scikit-learn 中的 RandomizedSearchCV 类来进行 随机搜索参数调优

>>> from sklearn.grid_search import RandomizedSearchCV
>>> params = {"n_neighbors": range(1,5), "weights": ["uniform", "distance"]}
>>> rsearch = RandomizedSearchCV(estimator=knn, param_distributions=params, cv=4, n_iter=8, random_state=5)
>>> rsearch.fit(X_train, y_train)
>>> print(rsearch.best_score_)

  使用 RandomizedSearchCV 类对模型的参数空间进行随机搜索,并找到最佳的参数组合。随机搜索相比于网格搜索,可以更高效地在大范围的参数空间中寻找最佳参数组合。在搜索过程中,将对每一组参数进行交叉验证,并根据性能评估指标选择最佳的参数组合文章来源地址https://www.toymoban.com/news/detail-729204.html

到了这里,关于【数据科学】Scikit-learn的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【scikit-learn基础】--『数据加载』之玩具数据集

    机器学习的第一步是准备数据,好的数据能帮助我们加深对机器学习算法的理解。 不管是在学习还是实际工作中, 准备数据 永远是一个枯燥乏味的步骤。 scikit-learn 库显然看到了这个痛点,才在它的 数据加载 子模块中为我们准备了直接可用的数据集。 在它的 数据加载 子模

    2024年02月05日
    浏览(60)
  • 【scikit-learn基础】--『预处理』之 数据缩放

    数据的 预处理 是数据分析,或者机器学习训练前的重要步骤。 通过数据预处理,可以 提高数据质量 ,处理数据的缺失值、异常值和重复值等问题,增加数据的准确性和可靠性 整合不同数据 ,数据的来源和结构可能多种多样,分析和训练前要整合成一个数据集 提高数据性

    2024年02月04日
    浏览(46)
  • 【scikit-learn基础】--『数据加载』之样本生成器

    除了内置的数据集, scikit-learn 还提供了随机样本的生成器。 通过这些生成器函数,可以生成具有特定特性和分布的随机数据集,以帮助进行机器学习算法的研究、测试和比较。 目前, scikit-learn 库( v1.3.0 版)中有 20个 不同的生成样本的函数。 本篇重点介绍其中几个具有代

    2024年02月05日
    浏览(46)
  • scikit-learn 中 Boston Housing 数据集问题解决方案

    在部分旧教程或教材中是 sklearn,现在【2023】已经变更为 scikit-learn 作用:开源机器学习库,支持有监督和无监督学习。它还提供了用于模型拟合、数据预处理、模型选择、模型评估和许多其他实用程序的各种工具。 安装 pip install scikit-learn 此数据集原本应该在 sklearn 中是自

    2023年04月13日
    浏览(30)
  • 【scikit-learn基础】--概述

    Scikit-learn 是一个基于 Python 的开源机器学习库,它提供了大量的机器学习算法和工具,方便用户进行数据挖掘、分析和预测。 Scikit-learn 是基于另外两个知名的库 Scipy 和 Numpy 的, 关于 Scipy 和 Numpy 等库,之前的系列文章中有介绍: Scipy 基础系列 Numpy 基础系列 自从 AlphaGo 再度

    2024年02月05日
    浏览(41)
  • Scikit-learn:全面概述

    在机器学习领域,Python已经成为一种重要的编程语言,这得益于其简洁、多功能和丰富的库。在这些库中,Scikit-learn作为其中最受欢迎和强大的之一,脱颖而出。它提供了各种工具、算法和功能,使用户能够轻松地进行各种机器学习任务。在本文中,我们将探索Scikit-learn的主

    2024年02月10日
    浏览(51)
  • scikit-learn实现线性回归

    要学习scikit-learn,我们必须要到scikit-clearn的官网中去查看公式和原理 scikit-learn 官网 scikit-learn 中文社区 进入官网一以后我们找到回归,然后再有监督学习中找到线性模型 公式: L2范数是指向量中每个元素的平方和的平方根。在数学中,L2范数也称为欧几里得范数,通常用 ∣

    2024年02月04日
    浏览(44)
  • 机器学习库Scikit-learn

    本文目录 3.1 背景知识 3.2 Scikit-learn概述 3.3 Scikit-learn主要用法 3.3.1 基本建模流程 3.3.2 数据预处理 3.3.3 监督学习算法 3.3.4 无监督学习算法 3.3.5 评价指标 3.3.6 交叉验证及超参数调优 3.4 Scikit-learn总结 参考文献 Scikit-learn是基于NumPy、SciPy和Matplotlib的开源Python机器学习包,它封装

    2024年02月04日
    浏览(43)
  • 机器学习-决策树-回归-CPU(中央处理单元)数据-python scikit-learn

    决策树是一种监督机器学习算法,用于回归和分类任务。树是可以处理复杂数据集的强大算法。 决策树特性: 不需要数值输入数据进行缩放。无论数值是多少,决策树都不在乎。 不同于其他复杂的学习算法,决策树的结果是可以解释的,决策树不是黑盒类型的模型。 虽然大

    2024年02月20日
    浏览(37)
  • 交叉验证以及scikit-learn实现

    交叉验证既可以解决数据集的数据量不够大问题,也可以解决参数调优的问题。 主要有三种方式: 简单交叉验证(HoldOut检验)、 k折交叉验证(k-fold交叉验证)、 自助法。 本文仅针对k折交叉验证做详细解释。 方法 :将原始数据集随机划分成训练集和验证集两部分。比如说

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包