【呆板学习】分类与回归——把握两大核心算法的区别与应用 ...

打印 上一主题 下一主题

主题 985|帖子 985|积分 2955

【呆板学习】分类与回归——把握两大核心算法的区别与应用

1. 弁言

在呆板学习中,分类和回归是两大核心算法。它们广泛应用于不同类型的推测题目。分类用于离散的输出,如推测图像中的对象类型,而回归则用于连续输出,如推测房价。本文将深入探究分类与回归的区别,并通过代码示例展示它们在实际题目中的应用。

2. 什么是分类?

分类题目指的是将输入数据分配到预定义的离散类别中。常见的分类任务包括垃圾邮件检测、手写数字辨认等。
分类的特性:



  • 输出为离散值:即数据属于某个特定类别。
  • 常用算法:如逻辑回归、支持向量机、决策树、随机丛林、KNN等。
示例:逻辑回归(Logistic Regression)用于分类

  1. from sklearn.datasets import load_iris
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.linear_model import LogisticRegression
  4. from sklearn.metrics import accuracy_score
  5. # 加载数据集
  6. iris = load_iris()
  7. X = iris.data
  8. y = iris.target
  9. # 拆分数据集
  10. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  11. # 训练逻辑回归模型
  12. model = LogisticRegression(max_iter=200)
  13. model.fit(X_train, y_train)
  14. # 预测与评估
  15. y_pred = model.predict(X_test)
  16. print(f"分类准确率: {accuracy_score(y_test, y_pred)}")
复制代码

3. 什么是回归?

回归题目指的是推测一个连续的数值输出。常见的回归任务包括房价推测、股票代价推测等。
回归的特性:



  • 输出为连续值:即推测结果是一个具体数值。
  • 常用算法:如线性回归、决策树回归、支持向量回归(SVR)、Lasso回归等。
示例:线性回归(Linear Regression)用于回归

  1. import numpy as np
  2. from sklearn.datasets import load_boston
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.linear_model import LinearRegression
  5. from sklearn.metrics import mean_squared_error
  6. # 加载数据集
  7. boston = load_boston()
  8. X = boston.data
  9. y = boston.target
  10. # 拆分数据集
  11. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  12. # 训练线性回归模型
  13. model = LinearRegression()
  14. model.fit(X_train, y_train)
  15. # 预测与评估
  16. y_pred = model.predict(X_test)
  17. mse = mean_squared_error(y_test, y_pred)
  18. print(f"均方误差: {mse}")
复制代码
4. 分类与回归的区别

1. 输出类型不同



  • 分类:输出为离散类别,比方[0, 1],或者多类别如[猫, 狗, 鸟]。
  • 回归:输出为连续的数值,比方推测房价为250,000元。
2. 评估指标不同



  • 分类常用指标:准确率(Accuracy)、混淆矩阵、ROC曲线、F1分数等。
  • 回归常用指标:均方偏差(MSE)、均方根偏差(RMSE)、R²等。
3. 模子不同



  • 分类:常用的模子如逻辑回归、KNN、支持向量机等。
  • 回归:常用的模子如线性回归、岭回归、支持向量回归等。

5. 常见的分类算法

1. K 近邻算法(K-Nearest Neighbors, KNN)

KNN 是一种基于间隔的分类算法,通过找到与输入数据最近的K个样本来举行分类。
KNN 示例代码:

  1. from sklearn.neighbors import KNeighborsClassifier
  2. # 训练 KNN 模型
  3. knn = KNeighborsClassifier(n_neighbors=3)
  4. knn.fit(X_train, y_train)
  5. # 预测与评估
  6. y_pred_knn = knn.predict(X_test)
  7. print(f"KNN 分类准确率: {accuracy_score(y_test, y_pred_knn)}")
复制代码
2. 支持向量机(SVM)

SVM 是一种分类算法,它通过找到一个超平面,将数据点划分到不同的类别中。
SVM 示例代码:

  1. from sklearn.svm import SVC
  2. # 训练 SVM 模型
  3. svm = SVC(kernel='linear')
  4. svm.fit(X_train, y_train)
  5. # 预测与评估
  6. y_pred_svm = svm.predict(X_test)
  7. print(f"SVM 分类准确率: {accuracy_score(y_test, y_pred_svm)}")
复制代码
6. 常见的回归算法

1. 决策树回归(Decision Tree Regressor)

决策树是一种基于树形布局的回归算法,通过递归划分特性空间来推测目的值。
决策树回归示例代码:

  1. from sklearn.tree import DecisionTreeRegressor
  2. # 训练决策树回归模型
  3. tree = DecisionTreeRegressor()
  4. tree.fit(X_train, y_train)
  5. # 预测与评估
  6. y_pred_tree = tree.predict(X_test)
  7. print(f"决策树均方误差: {mean_squared_error(y_test, y_pred_tree)}")
复制代码
2. 支持向量回归(SVR)

SVR 是支持向量机的回归版本,通过找到一个使得推测偏差最小的超平面来举行回归推测。
SVR 示例代码:

  1. from sklearn.svm import SVR
  2. # 训练支持向量回归模型
  3. svr = SVR(kernel='linear')
  4. svr.fit(X_train, y_train)
  5. # 预测与评估
  6. y_pred_svr = svr.predict(X_test)
  7. print(f"SVR 均方误差: {mean_squared_error(y_test, y_pred_svr)}")
复制代码
7. 如何选择分类或回归算法?


  • 数据的输出类型:首先根据输出是离散值还是连续值选择分类或回归算法。
  • 数据的规模与维度:不同的算法对数据规模和维度有不同的处理结果,如 SVM 实用于高维数据,而线性回归实用于低维数据。
  • 盘算资源:一些复杂的算法如支持向量机和神经网络需要大量盘算资源,而简单的模子如线性回归和 KNN 相对较快。

8. 应用案例

案例1:利用逻辑回归推测是否为高收入人群

  1. from sklearn.datasets import fetch_openml
  2. # 加载收入数据集
  3. income_data = fetch_openml('adult', version=1)
  4. X = income_data.data
  5. y = income_data.target
  6. # 预处理数据并进行训练和预测
  7. # 省略具体代码,类似于上面的逻辑回归步骤
复制代码
案例2:利用线性回归推测房价

  1. # 加载房价数据并应用线性回归模型预测
  2. # 类似上面展示的线性回归示例
复制代码
9. 总结与将来展望

分类和回归是呆板学习中两类基本题目,它们分别解决了离散输出和连续输出的推测需求。通过理解二者的区别和实际应用,你可以更好地解决不同类型的推测题目。将来,随着数据集的增长和算法的优化,分类与回归算法将继承在各个范畴中发挥紧张作用。
10. 参考资料



  • 《呆板学习实战》 by Peter Harrington
  • Scikit-learn 官方文档
利用呆板学习分析CSDN热榜




  • 也不知道是不是错觉,感觉呆板学习水文似乎在逐渐变少。那种没有代码,只介绍几个百度就能搜到概念的呆板学习水文正在逐渐变少。
  • 博主现在见到呆板学习最放肆的时间,是热榜前十中六篇都是呆板学习水文,而且都是一点进去就知道不是人写得那种机生文 。让人感觉CSDN药丸

   你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

风雨同行

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表