当前位置: 首页 > news >正文

线性回归与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)
  • 某模型训练结果示例
http://www.jsqmd.com/news/74039/

相关文章:

  • 百度ERNIE-4.5-21B-A3B-PT模型深度解析:轻量级MoE架构引领多模态AI新范式
  • NCMconverter音频格式转换工具:解锁ncm文件的全新使用体验
  • Wan2.2-T2V-A14B在老年认知训练视频个性化定制中的实践
  • Wan2.2-T2V-A14B能否生成符合ATSC标准的超高清广播信号内容
  • Chrony时间同步服务:从底层原理到技术演进的全景解析
  • 74、Python编程:从基础到实践
  • 汇编:改写中断例程-以int9为例
  • 技术变革引领行业新趋势:探索人工智能在现代产业中的深度融合与创新应用
  • 【Redis】Redis下载安装图文教程(Win和Linux版)超详细
  • 鸽姆(GG3M)公司估值与财务预测报告:从多元生态到文明央行的价值跃迁
  • DeepSeek-R1大模型深度解析:突破128K上下文壁垒的技术架构创新
  • 师妹新做的产品没做高低温测试,导致全部召回......
  • Wan2.2-T2V-A14B支持跨模态检索吗?以图搜视频功能设想
  • 邪修版——MDK 工程结构菜鸟快速入门实战指南(上)
  • AI市场舆情分析:解锁增长密码,洞悉未来商机
  • Windows右键菜单革命:从混乱到高效的终极解决方案
  • GOT-OCR-2-GUI工具全解析:本地化部署指南与功能进阶攻略
  • 智谱AI轻量级大模型GLM-4.5-Air深度解析:MoE架构如何平衡性能与部署效率
  • Linux文件传输优化
  • 腾讯混元70亿参数模型Hunyuan-7B-Instruct开源:超长上下文与高效部署能力引领行业新突破
  • 基于YOLO11-C3k2-AdditiveBlock-CGLU的呼吸气瓶设备组件自动检测与识别系统
  • VSCode支持量子模拟的5个你必须知道的功能(第4个极少人掌握)
  • 从入门到进阶 | 哪些企业适合采用SD-WAN?
  • 网站缓存生效检测(详细教程)
  • Wan2.2-T2V-A14B如何应对沙漠地貌随风变化的纹理更新
  • Wan2.2-T2V-A14B在AI写作助手中的情节可视化延伸功能
  • 可视化技术架构与行业应用解析 | 图扑工业数字孪生
  • Wan2.2-T2V-A14B模型许可证类型说明及其商业授权条款
  • 如何设计一个优秀的接口?统一结果返回值
  • LVGL9.5 设置背景图片的方法