使用Scikit-Learn,快速掌握机器学习预测方法
在本文中,我们将讨论预测函数的区别和它们的用途。
在机器学习中,predict和predict_proba、predict_log_proba和decision_function方法都是用来根据训练好的模型进行预测的。
predict方法使用predict方法可进行二元分类或多元分类预测,输出预测标签。例如,如果你已经训练了一个逻辑回归模型来预测一个客户是否会购买产品,则可以使用predict方法来预测一个新客户是否会购买产品。
我们将使用来自scikit-learn的乳腺癌数据集。这个数据集包含了肿瘤观察结果和肿瘤是恶性还是良性的相应标签。
import numpy as npfrom sklearn.svm import SVCfrom sklearn.preprocessing import StandardScalerfrom sklearn.pipeline import make_pipelineimport matplotlib.pyplot as pltfrom sklearn.datasets import load_breast_cancer# 加载数据集dataset = load_breast_cancer(as_frame=True)# 创建特征和目标X = dataset['data']y = dataset['target']# 将数据集分割成训练集和测试集from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y , test_size=0.25, random_state=0)# 我们创建一个简单的管道来规范数据并使用`SVC`分类器训练模型svc_clf = make_pipeline(StandardScaler(),SVC(max_iter=1000, probability=True))svc_clf.fit(X_train, y_train) # 我们正在预测X_test的第一个条目print(svc_clf.predict(X_test[:1])) # 预测X_test的第一个条目属于哪一类[0] predict_proba方法使用predict_proba函数可以对每个类别进行概率预测,并返回所可能的每个类别标签的概率估计。在二元或多元分类问题中,通常采用这种方法以确定每种可能结果的概率。例如,如果你已经训练了一个模型,将动物的图像分为猫、狗和马,你可以使用predict_proba方法来获得每个类别标签的概率估计。
print(svc_clf.predict_proba(X_test[:1])) [[0.99848307 0.00151693]] predict_log_proba方法predict_log_proba方法与predict_proba类似,但它返回概率估计值的对数,而不是原始概率。这对处理极小或极大的概率值是十分实用的,因为可以避免数值下溢或溢出的问题。
print(svc_clf.predict_log_proba(X_test[:1])) [[-1.51808474e-03 -6.49106473e+00]] decision_function方法Linear binary classification models can utilize the decision_function method.。它会针对每个输入数据点生成一个分数,这个分数可用于推测其对应的类别标签。可以根据应用或领域知识来设置将数据点分类为正或负的阈值。
print(svc_clf.decision_function(X_test[:1])) [-1.70756057] 总结- 当你想要得到输入数据的预测类标签时,对二元或多元分类问题使用predict。
- 当你想要获得每个可能的类别标签的概率估计值时,请使用predict_proba处理二元或多元分类问题。
- 当你需要处理非常小或非常大的概率值时,或者当你想要避免数字下溢或溢出问题时,请使用predict_log_proba。
- 当你想获得每个输入数据点的分数时,使用decision_function处理线性模型的二元分类问题。
注意:某些分类器的预测方法可能不完整或需要额外参数才能访问函数。例如:SVC需要将概率参数设置为True,才能使用概率预测。
机器学习,作为新一代信息化技术,正在引领未来。而其中的预测算法更是其中的重要一环。为了快速掌握机器学习预测方法,Scikit-Learn应运而生。本文将为您介绍Scikit-Learn应用的基础知识和方法。
一、什么是Scikit-Learn
Scikit-Learn是一个Python的机器学习工具包,是为数据科学家、机器学习工程师、研究人员提供了标准化的、高效的工具。它建立在NumPy、SciPy和Matplotlib库的基础上。Scikit-Learn是开源的,支持多种操作系统,拥有丰富的文档和社区支持。
二、Scikit-Learn的核心功能
Scikit-Learn的主要功能包括数据预处理、监督学习、无监督学习和模型选择。其中,数据预处理主要是数据降维、特征提取、数据缺失值处理、特征缩放和归一化;监督学习主要应用于回归、分类、多分类和特征重要性排名;无监督学习主要应用于聚类、密度估计、矩阵因式分解和异常检测;模型选择则主要是验证集和交叉验证。
三、Scikit-Learn的应用
Scikit-Learn在许多领域均有广泛应用,如金融、保险、医疗、电商等。例如,在预测股票价格方面,可以使用监督学习的线性回归算法进行预测;在聚类方面,可以使用无监督学习的KMeans算法将相似的数据聚集成一类。
四、Scikit-Learn的使用
Scikit-Learn的使用步骤大致如下:首先通过pandas库导入数据,然后通过数据预处理对数据进行清洗和特征工程;接下来选择合适的监督或无监督学习方法学习数据模型,最后通过交叉验证对模型进行评估和调整。
五、Scikit-Learn的优缺点
Scikit-Learn的优点在于易于上手、文档齐全和社区活跃,提供了许多现成的算法实现和模型评估工具。同时Scikit-Learn的缺点在于其性能不是最优,没有深度学习支持,少量的算法不适用于大规模数据处理。
六、Scikit-Learn的未来
Scikit-Learn在未来将会不断集成更多的机器学习算法,支持更多的模型调整方法和更加高效的算法实现,同时会不断提高其运行效率和性能,以适应不同领域的应用需求。
七、结语
Scikit-Learn的应用开启了更简单、更高效、更快速地处理和分析数据的新时代。通过学习和使用Scikit-Learn,我们可以更快速地进行数据预处理和机器学习模型构建,更好地预测未来并进行数据决策。Scikit-Learn带来的不仅是工具,更是一种新的思维方式,值得我们认真的学习和应用。