机器学习基础07

ops/2024/11/23 16:49:44/

目录

1.逻辑回归

1.1原理

1.2API

2.K-Means

2.1算法过程

2.2API

3.SVM(支持向量机)

3.1算法原理​

3.2API 


1.逻辑回归

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法。

1.1原理

逻辑回归的输入是线性回归的输出。

 Sigmoid函数:

损失函数:

构建过程,若有: 

 然后使用梯度下降算法,减少损失函数的值,更新逻辑回归前面对应算法的权重参数(回归计算W),提升原本属于1类别的概率,降低原本是0类别的概率。

1.2API

sklearn.linear_model.LogisticRegression()

参数:

  • fit_intercept :

default=True 指定是否计算截距

  • max_iter :

int, default=100  最大迭代次数。迭代达到此数目后,即使未收敛也会停止。

import numpy as np 
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_irisx,y = load_iris(return_X_y=True)# iris数据集是三分类,将类别2剔除
x=x[y!=2]
y=y[y!=2]x_train,x_test,y_train,y_test =train_test_split(x,y,train_size=0.5,random_state=10)# 逻辑回归模型
model = LogisticRegression()model.fit(x_train,y_train)print(model.coef_)
print(model.intercept_)y_predict = model.predict(x_test)
print(y_predict)

2.K-Means

K-Means是无监督的聚类算法。

2.1算法过程

第一步:设定簇数n和初始化质心(centroids)的位置。

第二步:计算所有样本与所有质心的距离,样本属于与距离最短的质心代表的簇。

第三步:根据每个簇的样本,更新质心的位置为簇的中心点,重复第二步直到所有质心不变。

2.2API

from sklearn.cluster import KMeans

参数:

  • n_clusters: int, default=8 要形成的簇的数量。
  • init: {'k-means++', 'random'} or ndarray, default='k-means++'

初始化方法。'k-means++' 可以帮助提高收敛速度并减少陷入局部最小值的风险;'random' 表示随机选择初始质心;也可以提供一个形状为 (n_clusters, n_features) 的数组作为初始质心的位置。

  • n_init: int, default=10

当初始化方法为 'k-means++' 或 'random' 时,算法会运行多次,每次使用不同的随机质心初始化。

  • max_iter: int, default=300

单次运行的最大迭代次数。如果在达到最大迭代次数之前已经收敛,则提前终止。

  • tol: float, default=1e-4

相对于惯性的绝对公差值,用于判断是否收敛。

  • verbose: int, default=0

日志详细程度。0表示不输出任何信息,大于0的值会输出更多调试信息。

  • random_state: int, RandomState instance or None, default=None

用于初始化质心的随机数生成器的状态。如果设置为整数,可以确保每次运行结果的一致性。

  • copy_x: bool, default=True

是否复制输入数据。如果设置为 False,可能会修改原始输入数据。

  • algorithm: {"lloyd", "elkan", "auto", "full"}, default="auto"

使用的计算算法。"lloyd" 和 "elkan" 是两种不同的优化算法,"auto" 会自动选择最合适的算法。

属性:

  • cluster_centers_:

每个簇的中心点坐标。

  • labels_:

每个训练样本所属的簇标签。

  • inertia_:

所有样本到其最近质心的平方距离之和,也称为“簇内平方和”,是评估聚类效果的一个重要指标。

  • n_iter_:

实际运行的迭代次数。

from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt# 创建一个随机数据集, 100个样本,每个样本有2个特征
x = np.random.rand(100,2)# 初始化KMeans模型
kmeans = KMeans(n_clusters =3)# 拟合数据
kmeans.fit(x)# 获取每个样本所属的簇
labels = kmeans.labels_
# 获取每个簇的中心点
centroids =kmeans.cluster_centers_print('Labels',labels)
print('Centroids:',centroids)# 可视化结果
plt.scatter(x[:,0],x[:,1],c=labels,s=50,cmap='viridis')
plt.scatter(centroids[:,0],centroids[:,1],c='red',s=200,alpha=0.75)
plt.title('K-Means Clustering')
plt.show()

3.SVM(支持向量机)

SVM是监督学习的分类算法。
 

3.1算法原理

3.2API 

from sklearn.svm import SVC

参数:

  • C: float, default=1.0

惩罚参数,控制错误项的惩罚程度。较大会减少错误分类的数量,但可能导致过拟合。

  • kernel: {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'

内核类型,用于算法中的非线性映射。常见的内核有:
        'linear': 线性核。
        'poly': 多项式核。
        'rbf': 径向基函数(高斯核),默认值。
        'sigmoid': Sigmoid 核。
        'precomputed': 预计算核矩阵。

  • degree: int, default=3

当使用多项式核 (kernel='poly') 时,表示多项式的次数。

  • gamma: {'scale', 'auto'} or float, default='scale'

RBF、多项式和 Sigmoid 核的系数。

  • coef0: float, default=0.0

核函数中的独立项。对于多项式 (kernel='poly') 和 Sigmoid (kernel='sigmoid') 核有效。

  • probability: bool, default=False

是否启用概率估计。这需要额外的时间和内存来训练模型,但可以使用 predict_proba 方法获得概率估计。

  • tol: float, default=1e-3

停止标准的容忍度。

  • cache_size: float, default=200

内存缓存大小(以 MB 为单位),用于存储内核矩阵。

  • class_weight: dict or 'balanced', default=None

类权重。如果设置为 'balanced',则类权重将自动调整为与输入数据中的类频率成反比。

  • verbose: bool, default=False

是否启用详细输出。

  • max_iter: int, default=-1

最大迭代次数。如果设置为正数,则限制迭代次数;如果设置为 -1,则没有限制。

  • decision_function_shape: {'ovo', 'ovr'}, default='ovr'

决策函数的形状。'ovo' 表示一对一(one-vs-one),'ovr' 表示一对多(one-vs-rest)。

  • break_ties: bool, default=False

在多类分类中,是否在预测时打破平局。仅当 decision_function_shape='ovr' 且 probability=True 时有效。

  • random_state: int, RandomState instance or None, default=None

随机数生成器的种子或实例。用于概率估计和随机解法器。

from sklearn.svm import SVC
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split x,y=load_breast_cancer(return_X_y=True)x_train,x_test,y_train,y_test =train_test_split(x,y,train_size=0.5,random_state=10)model = SVC()
model.fit(x_train,y_train)score = model.score(x_test,y_test)
print(score)


http://www.ppmy.cn/ops/136084.html

相关文章

shell脚本(二)

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…

向量数据库FAISS之四:向量检索和 FAISS

来自 YouTube 1.相似度搜索的传统方法(Jaccard, w-shingling, Levenshtein) 1.Jaccard 距离 公式 Jaccard ( A , B ) 1 − ∣ A ∩ B ∣ ∣ A ∪ B ∣ \text{Jaccard}(A, B) 1 - \frac{|A \cap B|}{|A \cup B|} Jaccard(A,B)1−∣A∪B∣∣A∩B∣​ 其中, A 和 …

如何在分布式环境中实现高可靠性分布式锁

目录 一、简单了解分布式锁 (一)分布式锁:应对分布式环境的同步挑战 (二)分布式锁的实现方式 (三)分布式锁的使用场景 (四)分布式锁需满足的特点 二、Redis 实现分…

第十章作业

作业1 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta charset"UTF-8"> <title>数字时钟</title> <style> body { display: flex; flex-direction: colu…

微信小程序登录注册页面设计(小程序项目)

需求 在微信小程序设计并实现登录页面&#xff0c;并填写相关登录注册函数 实现效果 代码实现 html代码 <view class"top" style"border-bottom-style: none;background-color:#FF8C69;"><!-- <view class"back" bind:tap"…

【Python TensorFlow】进阶指南(续篇三)

在前几篇文章中&#xff0c;我们探讨了TensorFlow的高级功能&#xff0c;包括模型优化、分布式训练、模型解释等多个方面。本文将进一步深入探讨一些更具体和实用的主题&#xff0c;如模型持续优化的具体方法、异步训练的实际应用、在线学习的实现细节、模型服务化的最佳实践、…

transformer.js(三):底层架构及性能优化指南

Transformer.js 是一个轻量级、功能强大的 JavaScript 库&#xff0c;专注于在浏览器中运行 Transformer 模型&#xff0c;为前端开发者提供了高效实现自然语言处理&#xff08;NLP&#xff09;任务的能力。本文将详细解析 Transformer.js 的底层架构&#xff0c;并提供实用的性…

NUXT3学习日记四(路由中间件、导航守卫)

前言 在 Nuxt 3 中&#xff0c;中间件&#xff08;Middleware&#xff09;是用于在页面渲染之前或导航发生之前执行的函数。它们允许你在路由切换时执行逻辑&#xff0c;像是身份验证、重定向、权限控制、数据预加载等任务。中间件可以被全局使用&#xff0c;也可以只在特定页…