【机器学习】机器学习学习笔记 - 监督学习 - KNN线性回归岭回归 - 02

监督学习

KNN (k-nearest neighbors)

  • KNN 是用 k 个最近邻的训练数据集来寻找未知对象分类的一种算法

在线工具网 - 各类免费AI工具合集,免费pdf转word等 https://orcc.online

python 复制代码
from sklearn import neighbors

# 分类
# 创建KNN分类器模型并进行训练
classifier = neighbors.KNeighborsClassifier(num_neighbors, weights='distance')
classifier.fit(X, y)

test_datapoint = [4.5, 3.6]

# 提取KNN分类结果
dist, indices = classifier.kneighbors([test_datapoint])

# 回归
# 定义并训练回归器
knn_regressor = neighbors.KNeighborsRegressor(n_neighbors, weights='distance')
# 预测
y_values = knn_regressor.fit(X, y).predict(x_values)

线性回归

  • 优点: 简单、速度快
  • 缺点: 普通线性回归对异常值敏感,会破坏整个模型, 可以使用岭回归的方法优化
  • 缺点: 拟合准确度相对不高
  • 回归是估计输入数据与连续值输出数据之间关系的过程
  • 线性回归的目标是提取输入变量与输出变量的关联线性模型
  • 普通最小二乘法(Ordinary Least Squares,OLS): 要求实际输出与线性方程, 预测的输出的残差平方和(sum of squares of differences)最小化
python 复制代码
# -*- coding: UTF-8 -*-

import sys
import numpy as np
from sklearn import linear_model
import matplotlib.pyplot as plt

# 数据准备
X = [1,2,3,4,5,6,7,8,9,10]
y = [22,22,23,24,25,27,27,30,29,30]

# 取80%的样本作为训练数据
num_training = int(0.8 * len(X))
num_test = len(X) - num_training

# 训练数据 80% reshape:(行数,列数)
# 行数:样本数
# 列数:特征数
X_train = np.array(X[:num_training]).reshape((num_training,1))
y_train = np.array(y[:num_training])

# 测试数据 20%
X_test = np.array(X[num_training:]).reshape((num_test,1))
y_test = np.array(y[num_training:])

# 创建线性回归对象
linear_regressor = linear_model.LinearRegression()

# 用训练数据集训练模型
linear_regressor.fit(X_train, y_train)

# 用训练好的模型预测测试数据集
# 预测数据
y_test_pred = linear_regressor.predict(X_test)
print('测试数据集的预测结果:',y_test_pred)
# 创建一个空白的窗口
plt.figure()
# 画出训练数据 散点图 -- 测试数据实际值
plt.scatter(X_test, y_test, color='green')
# 画出预测数据 折线图
plt.plot(X_test, y_test_pred, color='black', linewidth=4)
plt.title('Training data')
plt.show()

岭回归

  • 岭回归是一种线性回归模型, 它通过对数据进行截距处理, 使得回归系数的绝对值不超过给定阈值
  • 岭回归的优点是可以减小过拟合的风险, 并且可以处理异常值
  • 岭回归的缺点是它对数据进行了截距处理
python 复制代码
# 创建龄回归对象
# alpha:正则化力度, 控制回归器复杂度,趋近于0就是常规最小二乘法, 对异常值不敏感就设置一个较大值
# alpha取值范围为0~1小数值、1~10整数值
# fit_intercept:是否使用截距
# max_iter:最大迭代次数
ridge_regressor = linear_model.Ridge(alpha=0.8, fit_intercept=True, max_iter=100)

IT免费在线工具网 https://orcc.online

相关推荐
sbjdhjd1 分钟前
ThinkPHP 5.0.10 缓存写入型 RCE 复盘:从手动搭建、换行绕过到源码单步验证 | 05
java·后端·安全·spring·网络安全·数据挖掘·php
来让爷抱一个4 分钟前
2026 CFG引导实战:八帧跳跃不许跑偏,百智云精灵图把条件契约写进素材包
人工智能·机器学习
pen-ai34 分钟前
【优化方法】最小二乘:从误差平方到线性与非线性拟合
人工智能·算法·机器学习
YOLO数据集集合1 小时前
洪水场景建筑与植被检测数据集 | 洪水检测 建筑识别 植被监测 灾情评估 目标检测9073期
人工智能·目标检测·机器学习·计算机视觉·目标跟踪·无人机视角·灾害救援
Q26433650231 小时前
【有源码】基于机器学习的电信网络诈骗话术语义识别与可视化分析系统 XGBoost算法+Hadoop+Spark
大数据·hadoop·算法·机器学习·spark·毕业设计·课程设计
Rocky Ding*2 小时前
【三年面试五年模拟】2026-09-08 DeepSeek AI Agent开发岗社招一面:20道问题与系统设计题全解析
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·deepseek
猎嘤一号2 小时前
学术训练(一)文献检索与阅读
人工智能·算法·机器学习·科研入门
AI让世界更懂你2 小时前
计算机专业研究生核心能力培养(5)——论文写作的结构与方法
人工智能·深度学习·机器学习
Q26433650232 小时前
【有源码】基于 Hadoop 的强化学习智能体轨迹数据挖掘与可视化分析系统大数据毕设项目
大数据·hadoop·机器学习·数据挖掘·spark·课程设计·数据可视化