在机器学习中,逻辑回归(Logistic Regression)和支持向量机(Support Vector Machines, SVM)是两种常用的分类算法。下面分别对它们的类型、库或模块、实现原理以及运用场景进行分析,并提供相应的Python代码演示。
逻辑回归:
1. 二分类逻辑回归(Binary Logistic Regression):适用于将数据分为两个类别的问题。
- 库/模块:scikit-learn
- 实现原理:逻辑回归通过使用Sigmoid函数将线性回归的结果映射到概率值(0到1之间),从而进行分类。
- 运用场景:例如,判断邮件是垃圾邮件还是非垃圾邮件、肿瘤是恶性还是良性等。
- Python代码演示:
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
X, y = load_iris(return_X_y=True)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建一个二分类逻辑回归模型对象
model = LogisticRegression()
# 对模型进行训练
model.fit(X_train, y_train)
# 进行预测
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
# 打印准确率
print("Accuracy:", accuracy)
2. 多分类逻辑回归(Multinomial Logistic Regression):适用于将数据分为多个类别的问题。
- 库/模块:scikit-learn
- 实现原理:多分类逻辑回归通过将多个二分类逻辑回归结合起来,使用Softmax函数将线性回归的结果转换为概率分布,进行多分类问题的预测。
- 运用场景:例如,手写数字识别、图像分类等。
- Python代码演示:
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载手写数字数据集
X, y = load_digits(return_X_y=True)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建一个多分类逻辑回归模型对象
model = LogisticRegression(multi_class='multinomial')
# 对模型进行训练
model.fit(X_train, y_train)
# 进行预测
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
# 打印准确率
print("Accuracy:", accuracy)
支持向量机:
1. 支持向量机分类器(Support Vector Classification, SVC):适用于二分类问题,构建一个最优的超平面来将数据点分开。
- 库/模块:scikit-learn
- 实现原理:SVM通过最大化边界与支持向量的距离来找到一个最优的超平面,从而实现分类。
- 运用场景:例如,人脸识别、文本分类等。
- Python代码演示:
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
X, y = load_iris(return_X_y=True)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建支持向量机模型对象
model = SVC()
# 模型训练
model.fit(X_train, y_train)
# 进行预测
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
# 打印准确率
print("Accuracy:", accuracy)