news 2026/4/3 6:08:41

线性回归与KNN算法的核心原理及实践应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
线性回归与KNN算法的核心原理及实践应用

文章目录

  • 线性回归与KNN算法的核心原理及实践应用
    • 一、机器学习基础概念
    • 二、线性回归分析
      • 2.1 相关关系与回归分析
      • 2.2 一元线性回归模型
      • 2.3 误差项分析
      • 2.4 参数估计方法
      • 2.5 模型评价指标
    • 三、K-近邻算法(KNN)
      • 3.1 算法原理
      • 3.2 距离度量
      • 3.3 算法优缺点
    • 四、实践案例
      • 4.1 一元线性回归实现
      • 4.2 KNN算法实现
      • 4.3 鸢尾花分类案例
    • 五、模型评价与优化
      • 5.1 混淆矩阵

线性回归与KNN算法的核心原理及实践应用

一、机器学习基础概念

机器学习是人工智能的重要分支,通过对大量数据的学习和训练,让计算机具备预测和决策能力。数据量越大,最终训练结果越准确,针对不同的数据类型需要选择不同的数学模型。

二、线性回归分析

2.1 相关关系与回归分析

相关关系包含因果关系和平行关系:

  • 因果关系:回归分析,原因引起结果,需要明确自变量和因变量
  • 平行关系:相关分析,无因果关系,不区分自变量和因变量

2.2 一元线性回归模型

一元线性回归模型表示为:
y = β 0 + β 1 x + ε y = \beta_0 + \beta_1 x + \varepsilony=β0+β1x+ε

其中:

  • β 0 \beta_0β0β 1 \beta_1β1是模型参数
  • ε \varepsilonε是误差项,代表除线性因素外的随机因素所产生的误差

2.3 误差项分析

误差项具有重要特性:

  1. 独立同分布:每个样本点独立且处于同一分布函数下
  2. 满足高斯分布:期望为0,方差为(\sigma^2)
  3. 不可省略:误差是必然产生的,且基于误差特点进行参数估计

2.4 参数估计方法

极大似然估计核心思想:极度自恋,相信自己看到的样本就是冥冥之中最接近真相的。通过似然函数最大化来估计参数。

最小二乘法目标函数:
J ( β ) = 1 2 ∑ i = 1 m ( y ( i ) − β T X ( i ) ) 2 J(\beta) = \frac{1}{2} \sum_{i=1}^m (y^{(i)} - \beta^T X^{(i)})^2J(β)=21i=1m(y(i)βTX(i))2

2.5 模型评价指标

相关系数(皮尔逊相关系数):
r = ∑ ( x − x ‾ ) ( y − y ‾ ) ∑ ( x − x ‾ ) 2 ⋅ ∑ ( y − y ‾ ) 2 r = \frac{\sum(x - \overline{x})(y - \overline{y})}{\sqrt{\sum(x - \overline{x})^2 \cdot \sum(y - \overline{y})^2}}r=(xx)2(yy)2(xx)(yy)

判定系数 (R^2)(拟合优度):
取值范围在[0,1]之间,越接近1说明拟合效果越好

三、K-近邻算法(KNN)

3.1 算法原理

KNN算法是一种基于实例的学习方法,通过计算新样本与训练样本的距离,找到k个最近邻,根据这些邻居的类别进行投票决定新样本的类别。

3.2 距离度量

常用的距离公式包括:

  • 欧氏距离(p=2)
  • 曼哈顿距离(p=1)
  • 闵可夫斯基距离(p可调节)

3.3 算法优缺点

优点

  1. 简单,易于理解,易于实现,无需训练
  2. 适合对稀有事件进行分类
  3. 对异常值不敏感

缺点

  1. 样本容量比较大时,计算时间很长
  2. 不均衡样本效果较差

四、实践案例

4.1 一元线性回归实现

importpandasaspdfrommatplotlibimportpyplotaspltfromsklearn.linear_modelimportLinearRegression data=pd.read_csv("data.csv")# 绘制散点图plt.scatter(data.广告投入,data.销售额)plt.show()# 建立回归模型lr=LinearRegression()x=data[['广告投入']]y=data[['销售额']]lr.fit(x,y)# 训练模型# 模型检验result=lr.predict(x)score=lr.score(x,y)a=round(lr.intercept_[0],2)# 截距b=round(lr.coef_[0][0],2)# 斜率print("线性回归模型为:y = {}x + {}.".format(b,a))# 利用回归模型进行预测predict=lr.predict([[40],[45],[50]])print(predict)


4.2 KNN算法实现

importmatplotlib.pyplotaspltimportnumpyasnp# 读取数据data=np.loadtxt('datingTestSet2.txt')data_1=data[data[:,-1]==1]data_2=data[data[:,-1]==2]data_3=data[data[:,-1]==3]# 数据可视化展示fig=plt.figure()ax=plt.axes(projection="3d")ax.scatter(data_1[:,0],data_1[:,1],zs=data_1[:,2],c="#00DDAA",marker="o")ax.scatter(data_2[:,0],data_2[:,1],zs=data_2[:,2],c="#FF5511",marker="^")ax.scatter(data_3[:,0],data_3[:,1],zs=data_3[:,2],c="#000011",marker="+")ax.set(xlabel="Xaxes",ylabel="Yaxes",zlabel="Zaxes")plt.show()# KNN算法实现fromsklearn.neighborsimportKNeighborsClassifier data=np.loadtxt('datingTestSet2.txt')X=data[:,:-1]# 特征y=data[:,-1]# 标签neigh=KNeighborsClassifier(n_neighbors=5)neigh.fit(X,y)print(neigh.predict([[19739,2.816960,1.686219]]))# 多人同时预测predict_data=[[9744,11.440364,0.760461],[16191,0.100000,0.605619],[42377,6.519522,1.058602],[27353,11.475155,1.528626]]print("再次多人同时预测")print(neigh.predict(predict_data))


4.3 鸢尾花分类案例

importpandasaspd# 读取数据train_data=pd.read_excel("鸢尾花训练数据.xlsx")test_data=pd.read_excel("鸢尾花测试数据.xlsx")# 处理训练集数据train_X=train_data[['萼片长(cm)','萼片宽(cm)','花瓣长(cm)','花瓣宽(cm)']]train_y=train_data[['类型_num']]# 数据标准化fromsklearn.preprocessingimportscale data=pd.DataFrame()data['萼片长标准化']=scale(train_X['萼片长(cm)'])data['萼片宽标准化']=scale(train_X['萼片宽(cm)'])data['花瓣长标准化']=scale(train_X['花瓣长(cm)'])data['花瓣宽标准化']=scale(train_X['花瓣宽(cm)'])# KNN模型训练fromsklearn.neighborsimportKNeighborsClassifier knn=KNeighborsClassifier(n_neighbors=5)knn.fit(train_X,train_y)# 测试集预测test_X=test_data[['萼片长(cm)','萼片宽(cm)','花瓣长(cm)','花瓣宽(cm)']]test_y=test_data[['类型_num']]data_test=pd.DataFrame()data_test['萼片长标准化']=scale(test_X['萼片长(cm)'])data_test['萼片宽标准化']=scale(test_X['萼片宽(cm)'])data_test['花瓣长标准化']=scale(test_X['花瓣长(cm)'])data_test['花瓣宽标准化']=scale(test_X['花瓣宽(cm)'])test_predicted=knn.predict(test_X)score=knn.score(test_X,test_y)print(score)

五、模型评价与优化

5.1 混淆矩阵

分类模型常用评价指标:

  • 准确率(Accuracy):(TP+TN)/(TP+TN+FP+FN)
  • 精确率(Precision):TP/(TP+FP)
  • 召回率(Recall):TP/(TP+FN)
  • F1-score:2·(precision·recall)/(precision+recall)
  • 某模型训练结果示例
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 20:21:33

Wan2.2-T2V-A14B支持跨模态检索吗?以图搜视频功能设想

Wan2.2-T2V-A14B 支持跨模态检索吗?以图搜视频功能设想 在AIGC浪潮席卷内容创作领域的今天,生成式AI已不再局限于“从无到有”的创造。越来越多的应用场景开始探索模型的反向能力——不是让它凭空生成,而是利用其强大的语义理解去“联想”、去…

作者头像 李华
网站建设 2026/4/1 15:40:49

生姜不止是调料!这7大健康功效你知道吗?附科学食用指南

生姜不止是调料!这7大健康功效你知道吗?附科学食用指南一、天然 “止吐神器”:多种场景下的恶心救星生姜堪称天然的 “止吐神器”,在多种容易引发恶心呕吐的场景中都能发挥显著作用。无论是旅行中的晕动不适,孕期的孕吐…

作者头像 李华
网站建设 2026/3/29 18:42:23

RPA赋能智能运维:打破传统困局的自动化新路径

在数字化转型加速的今天,IT运维已成为支撑企业业务连续运行的核心支柱,涵盖系统监控、网络维护、硬件管理、软件部署等全链条工作。然而,随着云计算、大数据、物联网等技术的深度应用,IT环境复杂度呈指数级增长,传统“…

作者头像 李华
网站建设 2026/3/23 12:22:07

可视化技术架构与行业应用解析 | 图扑工业数字孪生

在工业互联网向深度智能化演进的进程中,数字孪生技术成为连接物理工业系统与虚拟信息空间的核心桥梁,而可视化则是实现数字孪生价值落地的关键载体。图扑自主研发的 HT 引擎,基于 WebGL 与 Canvas 技术构建轻量级前端可视化插件,通…

作者头像 李华
网站建设 2026/2/26 20:26:19

VSCode支持量子模拟的5个你必须知道的功能(第4个极少人掌握)

第一章:VSCode Jupyter 的量子模拟支持Visual Studio Code(VSCode)结合 Jupyter 扩展,为开发者提供了强大的量子计算模拟环境。通过集成 Qiskit、Cirq 等主流量子计算框架,用户可在交互式笔记本中设计、运行和可视化量…

作者头像 李华
网站建设 2026/3/31 7:07:37

从零构建AI工作流:Dify私有化+自定义模型适配全流程详解

第一章:Dify私有化部署的模型适配在企业级AI应用中,Dify的私有化部署支持灵活接入多种大语言模型(LLM),以满足数据安全、性能优化和业务定制化需求。模型适配是实现私有化部署的关键环节,需确保外部模型服务…

作者头像 李华