机器学习之逻辑回归和k-means算法(六)

发布于:2025-07-15 ⋅ 阅读:(11) ⋅ 点赞:(0)

机器学习之逻辑回归和k-means算法(六)



一、 逻辑回归

1.概念

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。

逻辑回归一般用于二分类问题,比如:

是好瓜还是坏瓜

健康还是不健康

可以托付终身还是不可以

2.原理

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

线性回归: h ( w ) = w 1 x 1 + w 2 x 2 + . . . . + b h(w)=w_1x_1+w_2x_2+....+b h(w)=w1x1+w2x2+....+b

sigmoid激活函数 : f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^{-x}} f(x)=1+ex1

sigmoid函数的值是在[0,1]区间中的一个概率值,默认为0.5为阈值可以自己设定,大于0.5认为是正例,小于则认为是负例

把上面的 h ( w ) h(w) h(w) 线性的输出再输入到sigmoid函数当中 f ( w ) = 1 1 + e − h ( w ) f(w)=\frac{1}{1+e^{-h(w)}} f(w)=1+eh(w)1

在这里插入图片描述

3.API

逻辑斯蒂

sklearn.linear_model.LogisticRegression()
参数:
	fit_intercept bool, default=True 指定是否计算截距
	max_iter int, default=100  最大迭代次数。迭代达到此数目后,即使未收敛也会停止。
模型对象:
  .coef_ 权重
  .intercept_ 偏置
  predict()预测分类
  predict_proba()预测分类(对应的概率)
  score()准确率

4.案例

from sklearn.datasets  import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

iris = load_iris()
x = iris.data
y = iris.target
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)

model = LogisticRegression(max_iter=1000,fit_intercept=False) #  设置最大迭代次数 避免警告
model.fit(x_train, y_train)
print(model.coef_) #w
print(model.intercept_) # b

y_predict = model.predict(x_test)
print(y_predict)
print(y_test)
print(model.score(x_test, y_test))

运行结果:
在这里插入图片描述

二、 无监督学习 & K-means 聚类算法详解(通俗易懂版)

在机器学习的世界里,我们经常会听到“监督学习”和“无监督学习”这两个词。今天我们就来聊聊其中的 无监督学习,以及它里面非常经典的一个算法 —— K-means 聚类算法


1.什么是无监督学习?

简单来说:

  • 无监督学习就是让计算机自己从数据里找规律,不需要我们提前告诉它“正确答案”。
  • 它只需要数据的特征(比如年龄、收入、消费频率等),不需要标签(比如“用户是否流失”)。
  • 最常见的无监督学习任务就是 聚类,也就是把相似的数据自动分到一组。

2.聚类算法是什么?

聚类算法的核心思想是:

  • 把数据分成若干个“簇”(cluster),每个簇里的数据彼此相似,不同簇之间的数据差异大。
  • 目标是:簇内差异小,簇外差异大
  • 差异通常是通过“距离”来衡量的,比如欧氏距离。

聚类 vs 分类的区别:

项目 聚类(无监督) 分类(监督学习)
是否有标签 ❌ 没有标签 ✅ 有标签
目标 自动分组 预测类别
应用场景 用户分群、图像分割等 垃圾邮件识别、疾病预测等

3.K-means 聚类算法详解

K-means 是最常用的聚类算法之一,它的目标是把数据分成 K 个簇,让簇内的数据点尽可能“抱团”。

3.1. 什么是“簇”和“质心”?

  • :就是一组相似的数据点,算法会把它们归为一类。
  • 质心:就是每个簇的“中心点”,是这个簇中所有点的平均值。

3.2. K-means 算法的步骤(通俗易懂版):

  1. 随机选 K 个点作为初始质心(可以随便选)。
  2. 把每个数据点分配给最近的质心,形成 K 个簇。
  3. 重新计算每个簇的质心(就是簇内所有点的平均值)。
  4. 重复步骤 2 和 3,直到质心不再变化(或者变化很小),就停止。

动态图示(帮助理解):

K-means 动态过程


4.总结一句话:

K-means 就是一个不断“找中心、分数据、再重新找中心”的过程,直到数据分组稳定下来。


5.K-means 的应用场景

  • 用户画像与分群
  • 图像压缩与分割
  • 文档聚类
  • 市场细分

6.案例

from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt

# 设置随机种子
np.random.seed(0)

# 生成随机数据
data = np.random.rand(1000, 2)  # 生成形状为 (1000, 2) 的随机数组

# 使用 KMeans 进行聚类
kmeans = KMeans(n_clusters=5)  # 指定聚类中心数量为 5
kmeans.fit(data)  # 拟合数据

# 输出聚类结果
print("Cluster labels:", kmeans.labels_)  # 聚类标签
print("Cluster centers:\n", kmeans.cluster_centers_)  # 聚类中心
print("Inertia:", kmeans.inertia_)  # 聚类的惯性(SSE)

# 可视化结果
plt.scatter(data[:, 0], data[:, 1], c=kmeans.labels_)  # 绘制数据点
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=100, c='red')  # 绘制聚类中心
plt.show()

运行结果:
在这里插入图片描述
在这里插入图片描述


如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、转发!🎯


网站公告

今日签到

点亮在社区的每一天
去签到