1.线性回归算法(Linear Regression):线性回归是一种用于预测数值类型的机器学习算法。它通过建立一个关于自变量和因变量之间的线性关系来对数据进行建模。案例实现:波士顿房价预测
优点
- 线性回归实现简单,计算简单
- 训练速度非常快,预测速度也很快
- Logistic回归实现简单,广泛的应用于工业问题上
- 对Logistic回归而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题
缺点
- 线性模型不能拟合非线性数据
- 当特征空间很大时,Logistic回归性能不太好
- Logistic回归容易欠拟合,一般准确度不太高
- Logistic回归不能很好地处理大量多类特征或变量
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
# 生成线性回归数据集
X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 可视化结果
plt.scatter(X_test, y_test, color='blue', label='True data')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Predicted data')
plt.legend()
plt.show()
2.逻辑回归算法(Logistic Regression):逻辑回归是一种用于预测分类类型的机器学习算法。它通过将数据映射到概率空间来对数据进行建模。案例实现:信用卡欺诈检测。
优点:
- 易于理解和实现:逻辑回归的模型相对简单,易于理解其背后的原理,并且实现起来也较为简单。
- 计算效率高:由于模型简单,逻辑回归的计算效率通常较高,特别是在处理大量数据时。
- 解释性强:逻辑回归模型可以给出每个特征对输出结果的权重,这对于理解和解释模型非常有帮助。
- 输出概率:逻辑回归的输出是一个介于0和1之间的概率值,这提供了更多的灵活性,可以用于阈值设定等场景。
- 对线性关系敏感:当特征和目标之间存在线性关系时,逻辑回归的效果往往很好。
- 易于正则化:正则化是防止过拟合的常用技术,逻辑回归可以很方便地应用L1或L2正则化。
缺点:
- 对非线性问题处理能力有限:当特征和目标之间的关系是非线性的,逻辑回归可能无法很好地拟合数据。
- 对缺失和异常值敏感:逻辑回归对数据的分布和异常值较为敏感,这可能会影响到模型的准确性。
- 不适合处理大量多类分类问题:虽然逻辑回归可以通过修改来处理多类分类问题(如使用softmax函数),但在处理大量类别时,其性能可能不如其他算法(如决策树、随机森林或神经网络)。
- 特征相关性:当特征之间存在高度相关性时,逻辑回归的性能可能会受到影响。因为逻辑回归是通过权重来评估每个特征的重要性,而高度相关的特征可能会导致权重分配不准确。
- 对特征尺度敏感:逻辑回归对特征的尺度敏感,如果某些特征的尺度远大于其他特征,那么这些特征可能会对模型产生过大的影响。因此,在使用逻辑回归之前,通常需要对特征进行标准化或归一化处理。
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data[:, :2] # 只使用前两个特征
y = (iris.target != 0) * 1 # 将类别转换为二分类问题
# 划分训练集和测试集
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)
# 评估模型(此处省略了评估步骤的代码)
3.决策树算法(Decision Tree):决策树是一种用于预测分类或数值类型的机器学习算法。它通过树形结构来呈现数据特征的层次关系,进而对数据进行分类或预测。
决策树是一种树形结构,为人们提供决策依据,决策树可以用来回答yes和no问题,它通过树形结构将各种情况组合都表示出来,每个分支表示一次选择(选择yes还是no),直到所有选择都进行完毕,最终给出正确答案。
决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。在实际构造决策树时,通常要进行剪枝,这时为了处理由于数据中的噪声和离群点导致的过分拟合问题。剪枝有两种:
先剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造。
后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。
优点:
-
易于理解和解释:决策树模型以树状图的形式呈现,非常直观,易于理解和解释。每个内部节点表示一个特征上的测试,每个分支代表一个测试输出,每个叶节点代表一个类别(对于分类问题)或值(对于回归问题)。
-
能够处理数值和分类数据:决