机器学习的模型(sklearn)

模型的简介

 机器学习模型的作用是自动从数据中学习并提取有用的信息,以做出预测或决策。在监督学习中,模型通过识别特征与输出之间的关联来预测结果,如将邮件分类为垃圾邮件或非垃圾邮件。无监督学习中,模型探索数据的内在结构,如通过聚类分析市场细分。强化学习模型通过与环境的互动学习最佳行动策略。机器学习模型的应用广泛,如自动驾驶车辆的路径规划、股市趋势的预测以及个性化推荐系统等。这些模型使计算机能够处理复杂问题,无需显式编程即可适应新情况,推动了人工智能的发展。

 sklearn中模型的常用方法

  sklearn中所有的模型都有四个固定且常用的方法,分别是model.fit、model.predict、model.get_params、model.score。

# 用于模型训练
model.fit(X_train, y_train)

# 用于模型预测
model.predict(X_test)

# 获得模型参数
model.get_params()

# 进行模型打分
model.score(X_test, y_test)

 模型的生成和拟合

以 KMeans 模型为例

clf=KMeans(n_clusters=5) #创建分类器对象
fit_clf=clf.fit(X) #用训练器数据拟合分类器模型
clf.predict(X) #也可以给新数据数据对其预测

print(clf.cluster_centers_) #输出5个类的聚类中心

y_pred = clf.fit_predict(X) #用训练器数据X拟合分类器模型并对训练器数据X进行预测

print(y_pred) #输出预测结果

sklearn中调用某个机器学习模型model.predict(x)和model.predict_proba(x)的区别

model.predict_proba(x)不同于model.predict(),它返回的预测值为获得所有结果的概率。(有多少个分类结果,每行就有多少个概率,对每个结果都有一个概率值,如0、1两分类就有两个概率)

sklearn 中的模型

 线性回归

 线性回归是机器学习中一种简单而强大的预测模型,它试图建立一个关系式来描述自变量与因变量之间的线性相关性。在监督学习任务中,线性回归模型通过拟合最佳直线(或超平面,当有多个自变量时)来预测数值型的目标变量值。这种模型广泛应用于金融、经济、社会科学等领域,用于房价预测、股票价格分析、销售量估计等。线性回归模型易于理解和实现,训练速度快,为复杂问题的初步探索提供了基础。尽管其假设数据间存在线性关系可能不总是成立,但通过特征工程和变换,可以扩展其在非线性问题上的应用。

from sklearn.linear_model import LinearRegression

# 定义线性回归模型
model = LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)

逻辑回归

逻辑回归模型是机器学习中用于解决分类问题的一种算法,特别是在处理二分类问题时非常流行。与线性回归不同,逻辑回归的输出是离散的类别标签而非连续值。该模型使用逻辑函数将线性输入映射到0到1之间的概率,从而预测某个样本属于特定类别的概率。在医学诊断、垃圾邮件检测、客户流失预测等场景中,逻辑回归因其简单性、高效性和可解释性而备受青睐。它通过估计每个特征对结果概率的贡献来工作,并可用于理解不同变量之间的关系。尽管逻辑回归假设数据可以被一个超平面所分隔,但它也可以推广到多分类问题中,通过一系列逻辑函数来处理更多的类别。

 

from sklearn.linear_model import LogisticRegression

# 定义逻辑回归模型
model = LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0,
                          fit_intercept=True, intercept_scaling=1, class_weight=None,
                          random_state=None, solver='liblinear', max_iter=100, multi_class='ovr',
                          verbose=0, warm_start=False, n_jobs=1)

 朴素贝叶斯算法NB

 朴素贝叶斯算法是一种基于贝叶斯定理的简单概率分类器,在机器学习中用于解决分类问题。该模型以特征条件独立假设为基础,即给定类别标签的情况下,所有特征之间相互独立。朴素贝叶斯模型易于构建,对于缺失数据不敏感,并且可以处理多分类问题。它在文本分类、垃圾邮件识别和医疗诊断等领域表现出色,尤其适用于特征数量较多的数据集。尽管其“朴素”假设在现实中很少成立,但该算法在许多情况下仍能提供令人意外的好结果。

 

from sklearn import naive_bayes

model = naive_bayes.GaussianNB()  # 高斯贝叶斯
model = naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
model = naive_bayes.BernoulliNB(
    alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)

 决策树DT

 决策树是一种监督学习算法,主要用于分类和回归问题。它通过模拟决策过程来预测目标变量的值。该模型易于理解和解释,可以处理数值型和类别型数据,并且能够揭示特征间的相互作用。在分类任务中,决策树通过从顶层开始的一系列问题将数据集逐步分割成更小的子集,直到达到预定标准。这些标准通常包括节点最小样本数、最大深度或最小叶节点纯度。决策树广泛用于金融分析、医疗诊断、游戏理论以及任何需要从一系列选项中做出决定的场合。尽管其可能过度拟合训练数据,但通过剪枝或集成方法如随机森林可减轻这一问题。

from sklearn import tree

model = tree.DecisionTreeClassifier(criterion='gini', max_depth=None,
                                   min_samples_split=2, min_samples_leaf=1, 
                                   min_weight_fraction_leaf=0.0, max_features=None, 
                                   random_state=None, max_leaf_nodes=None,
                                   min_impurity_decrease=0.0, min_impurity_split=None,
                                   class_weight=None, presort=False)

 

 支持向量机SVM

 

  1.  对训练数据和测试数据最好都做归一化

  2.  如果特征非常多,或者样本数远少于特征数时,数据更偏向线性可分,用线性核函数效果就会很好

  3.  优先选择线性核函数,如果拟合不好同,再推荐默认的高斯(rbf),因为高斯需要通过交叉验证选择适合的惩罚系数C和gamma

  4.  理论上高斯不会比线性核差,但是高斯需要花非常多的时间在调参上,实际业务中能用线性就用线性

 

from sklearn.svm import SVC

model = SVC(C=1.0, kernel='rbf', gamma='auto')

 

 k近邻算法KNN

 k近邻算法(KNN)是一种基本且易于理解的机器学习分类算法。它的核心思想是,在特征空间中,如果一个样本的最近邻的k个样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法无需构建模型,仅依赖于数据本身,因此对于一些复杂问题来说,KNN可能比一些试图对数据进行建模的方法更为有效。它在文本分类、推荐系统、图像识别等领域都有广泛应用。但是,当数据集很大时,KNN的计算成本较高,且对于有很多属性的数据,效果可能不佳。

 

from sklearn import neighbors

#定义KNN分类模型
model = neighbors.KNeighborsClassifier(n_neighbors=5, n_jobs=1)  # 分类
model = neighbors.KNeighborsRegressor(n_neighbors=5, n_jobs=1)  # 回归

 

 多层感知机(神经网络)

 

多层感知机(MLP)是一种经典的前馈人工神经网络模型,它由输入层、隐藏层和输出层组成,通过非线性激活函数处理复杂数据模式。MLP能够通过学习数据中的特征及其关系来进行分类或回归任务,具有较强的函数逼近能力。在监督学习中,MLP通过反向传播算法调整权重,以最小化预测与实际结果之间的误差。随着深度学习的兴起,MLP常作为其他深度网络结构的基础。它在图像识别、语音识别、医疗诊断等领域取得了显著成就。然而,MLP需要大量数据进行训练,并且对参数设置敏感,调参不当可能导致过拟合或欠拟合。

from sklearn.neural_network import MLPClassifier

#定义多层感知机分类算法
model = MLPClassifier(activation='relu', solver='adam', alpha=0.0001)

 总结

在机器学习中,模型是算法的核心,负责从数据中学习规律和做出预测。不同类型的模型适用于解决不同的问题,例如决策树适合处理分类问题,支持向量机擅长处理线性可分问题,而神经网络能够处理复杂的非线性问题。一个好的模型能够在训练后很好地泛化到新的数据上,既能捕捉到数据的主要趋势,又不会过度拟合噪声。评估模型的性能通常涉及交叉验证、精确度、召回率、F1分数等指标。选择合适的模型并调整其参数是机器学习流程中的关键步骤,直接关系到最终结果的好坏.

机器学习模型链接:www.zjusmart.com 

 

  • 11
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值