在机器学习中,分类和回归是两大核心算法。它们广泛应用于不同类型的预测问题。分类用于离散的输出,如预测图像中的对象类型,而回归则用于连续输出,如预测房价。本文将深入探讨分类与回归的区别,并通过代码示例展示它们在实际问题中的应用。
分类问题指的是将输入数据分配到预定义的离散类别中。常见的分类任务包括垃圾邮件检测、手写数字识别等。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 加载数据集
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.3, random_state=42)
# 训练逻辑回归模型
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
# 预测与评估
y_pred = model.predict(X_test)
print(f"分类准确率: {accuracy_score(y_test, y_pred)}")
回归问题指的是预测一个连续的数值输出。常见的回归任务包括房价预测、股票价格预测等。
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# 加载数据集
boston = load_boston()
X = boston.data
y = boston.target
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测与评估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差: {mse}")
KNN 是一种基于距离的分类算法,通过找到与输入数据最近的K个样本来进行分类。
from sklearn.neighbors import KNeighborsClassifier
# 训练 KNN 模型
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# 预测与评估
y_pred_knn = knn.predict(X_test)
print(f"KNN 分类准确率: {accuracy_score(y_test, y_pred_knn)}")
SVM 是一种分类算法,它通过找到一个超平面,将数据点划分到不同的类别中。
from sklearn.svm import SVC
# 训练 SVM 模型
svm = SVC(kernel='linear')
svm.fit(X_train, y_train)
# 预测与评估
y_pred_svm = svm.predict(X_test)
print(f"SVM 分类准确率: {accuracy_score(y_test, y_pred_svm)}")
决策树是一种基于树形结构的回归算法,通过递归划分特征空间来预测目标值。
from sklearn.tree import DecisionTreeRegressor
# 训练决策树回归模型
tree = DecisionTreeRegressor()
tree.fit(X_train, y_train)
# 预测与评估
y_pred_tree = tree.predict(X_test)
print(f"决策树均方误差: {mean_squared_error(y_test, y_pred_tree)}")
SVR 是支持向量机的回归版本,通过找到一个使得预测误差最小的超平面来进行回归预测。
from sklearn.svm import SVR
# 训练支持向量回归模型
svr = SVR(kernel='linear')
svr.fit(X_train, y_train)
# 预测与评估
y_pred_svr = svr.predict(X_test)
print(f"SVR 均方误差: {mean_squared_error(y_test, y_pred_svr)}")
from sklearn.datasets import fetch_openml
# 加载收入数据集
income_data = fetch_openml('adult', version=1)
X = income_data.data
y = income_data.target
# 预处理数据并进行训练和预测
# 省略具体代码,类似于上面的逻辑回归步骤
# 加载房价数据并应用线性回归模型预测
# 类似上面展示的线性回归示例
分类和回归是机器学习中两类基本问题,它们分别解决了离散输出和连续输出的预测需求。通过理解二者的区别和实际应用,你可以更好地解决不同类型的预测问题。未来,随着数据集的增长和算法的优化,分类与回归算法将继续在各个领域中发挥重要作用。