机器学习——十大算法

机器学习——十大算法线性回归是机器学习中最基础也是应用最广泛的算法之一

大家好,欢迎来到IT知识分享网。

4ed6ad3941b14eb889b4afefc94e0c3b.jpeg

✨✨ 欢迎大家来访Like_July_moon的博文(づ ̄3 ̄)づ╭❤~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Like_July_moon,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:计算机网络

欢迎访问我的主页:Like_July_moon 获取更多信息和资源。✨✨🌙🌙

2b3430efb79f40cc9c19b1a5648d4f93.png


 

      一、机器学习十大算法5b4c346ac7f54c05a7d36eb0f83c6939.png

  • 线性回归算法(Linear Regression)
  • 支持向量机算法(Support Vector Machine,SVM)
  • 最近邻居/k-近邻算法(K-Nearest Neighbors,KNN)
  • 逻辑回归算法( Logistic Regression)
  • 决策树算法(Decision Tree)
  • k-平均算法(K-Means)
  • 随机森林算法( Random Forest)
  • 朴素贝叶斯算法(Naive Bayes)
  • 降维算法(Dimensional Reduction)
  • 梯度增强算法(Gradient Boosting)

二、十大算法详细介绍

1.线性回归算法

线性回归是机器学习中最基础也是应用最广泛的算法之一。它主要用于预测一个或多个自变量(输入特征)与一个因变量(输出标签)之间的线性关系。线性回归模型试图找到一条直线(在二维空间中)或一个超平面(在更高维空间中),使得所有数据点到这条直线或超平面的垂直距离之和最小,这样的直线或超平面称为最佳拟合线或最佳拟合超平面。

线性回归模型通常表示为:

y = wx + b + ε

其中:

MSE = (1/N) * Σ(y_i – (wx_i + b))^2

其中 N 是数据点的数量,y_i 是第 i 个数据点的实际输出值,x_i 是相应的输入特征向量。

为了找到最佳的 w 和 b,通常使用梯度下降等优化算法来迭代地调整权重和偏差,以最小化损失函数。

线性回归有几种不同的变体:

线性回归模型展示:83f959d1a68244fe89bf5b8c872db00d.png线性回归算法简单、易于理解,但它的一个主要假设是自变量和因变量之间存在线性关系,这在现实世界的许多情况下可能并不成立。因此,在应用线性回归之前,需要对数据进行适当的探索性分析,以确保数据之间的线性关系。

python实现线性回归算法示例:

使用NumPy手动实现 import numpy as np # 创建数据集 # X是特征矩阵,y是目标向量 X = np.array([[1, 1], [1, 2], [1, 3], [1, 4], [1, 5]]) y = np.array([1, 2, 3, 4, 5]) # 添加偏置项 X_b = np.c_[np.ones((X.shape[0], 1)), X] # 在X前面添加一列1 # 使用正规方程求解权重 # θ = (X^T * X)^(-1) * X^T * y theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y) # 预测 X_new = np.array([[0], [6]]) X_new_b = np.c_[np.ones((2, 1)), X_new] # 添加偏置项 y_predict = X_new_b.dot(theta_best) print("预测值:", y_predict)

2.支持向量机算法

支持向量机(Support Vector Machine,SVM)是一种监督学习算法,可以用于分类或回归任务。SVM的基本模型是在特征空间上找到一个最优的超平面,这个超平面能够最好地将不同类别的数据分开,同时保持最大的间隔(margin)。对于分类问题,SVM寻找一个超平面,使得距离最近的两个不同类别的数据点之间的距离最大,这样的超平面称为最大间隔超平面。

支持向量机算法:

5d932b1e6eb9460dba564a0b36bafb40.png         

  python实现线性回归算法示例:

首先,确保你已经安装了scikit-learn库。如果没有安装,可以使用pip安装:

pip install scikit-learn

然后,你可以使用以下代码来创建一个SVM分类器:

from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC from sklearn.metrics import classification_report, confusion_matrix # 加载数据集 iris = datasets.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) # 特征缩放 scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # 创建SVM分类器实例 svm_classifier = SVC(kernel='linear') # 使用线性核 # 训练模型 svm_classifier.fit(X_train, y_train) # 预测 y_pred = svm_classifier.predict(X_test) # 评估模型 print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))

3. 最近邻居/k-近邻算法

k-近邻(k-Nearest Neighbors,k-NN)算法是一种基本的机器学习算法,用于分类和回归任务。它的工作原理非常简单:对于一个未知类别的数据点,k-NN算法会在训练集中找到与它最接近的k个数据点,然后根据这k个“邻居”的类别来预测未知数据点的类别。如果k-NN用于回归任务,那么预测值通常是k个邻居的平均值。

最近邻居/k-近邻模型:

5552f542f8344a378142bfb516af5e9d.png

python代码实现:

from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import classification_report, confusion_matrix # 加载数据集 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) # 特征缩放 scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # 创建k-NN分类器实例 knn_classifier = KNeighborsClassifier(n_neighbors=3) # 训练模型 knn_classifier.fit(X_train, y_train) # 预测 y_pred = knn_classifier.predict(X_test) # 评估模型 print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))

 4.逻辑回归算法

逻辑回归(Logistic Regression)是一种广泛应用于分类问题的机器学习算法,尤其是用于二分类问题。尽管它的名字中包含“回归”,但它实际上是一种分类算法,用于预测一个二元结果(是/否、成功/失败、阳性/阴性等)。

逻辑回归是一种强大的工具,因为它不仅提供分类结果,还提供概率估计,这使得它在许多领域都有广泛的应用,包括医学、金融和社会科学。

逻辑回归算法图例:

3a58ba4cd82b45c5bcbacb1c71446c7c.png

python实现:

from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report, confusion_matrix # 加载数据集 iris = load_iris() X = iris.data y = iris.target # 为了演示二分类,我们只选择两个类 X = X[y != 2] y = y[y != 2] # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 特征缩放 scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # 创建逻辑回归分类器实例 log_reg = LogisticRegression() # 训练模型 log_reg.fit(X_train, y_train) # 预测 y_pred = log_reg.predict(X_test) # 评估模型 print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))

 5.决策树算法

决策树(Decision Tree)是一种常见的机器学习算法,用于分类和回归任务。它是一种监督学习算法,以树形结构进行决策。每个内部节点代表一个特征,每个分支代表一个特征的测试结果,每个叶节点代表一个分类或回归结果。

决策树算法图例:

6b44fa06c5624aeebbae162238618521.png

python实现:

from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import classification_report, confusion_matrix # 加载数据集 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) # 创建决策树分类器实例 dt_classifier = DecisionTreeClassifier() # 训练模型 dt_classifier.fit(X_train, y_train) # 预测 y_pred = dt_classifier.predict(X_test) # 评估模型 print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))

 6.k-平均算法

k-平均(k-Means)算法是一种无监督的聚类算法,它的目的是将相似的数据点分组到一起,形成多个簇(cluster)。算法通过迭代过程来优化簇内点的均方误差,直到达到收敛条件。

k-平均算法图例:

ddf098e7332f4df7a9faab56edde4045.png 

python实现:

import numpy as np from sklearn.cluster import KMeans from sklearn.datasets import make_blobs from matplotlib import pyplot as plt # 生成模拟数据集 X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0) # 创建k-均值聚类实例,指定簇的数量 kmeans = KMeans(n_clusters=4, random_state=0) # 训练模型 kmeans.fit(X) # 预测每个数据点的簇 y_pred = kmeans.predict(X) # 绘制结果 plt.scatter(X[:, 0], X[:, 1], c=y_pred, s=50, cmap='viridis') # 绘制质心 plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=250, marker='*', c='red', label='Centroids') plt.title('Clusters and Centroids') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.legend() plt.show()

 7.随机森林算法

随机森林(Random Forest)是一种基于决策树的集成学习算法。它通过构建多个决策树并进行投票来提高预测的准确性和稳定性。随机森林在处理分类和回归任务时都非常有效,尤其是对于具有大量特征的数据集。

随机森林算法图例:b90eac80fee74ae7a42904a8b329655f.png

 python实现:

from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_report, confusion_matrix # 加载数据集 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) # 创建随机森林分类器实例 rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42) # 训练模型 rf_classifier.fit(X_train, y_train) # 预测 y_pred = rf_classifier.predict(X_test) # 评估模型 print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))

8.朴素贝叶斯算法

朴素贝叶斯(Naive Bayes)算法是一种基于贝叶斯定理的简单概率分类器,它假设特征之间相互独立。尽管这种独立性假设在现实世界中通常不成立,但朴素贝叶斯分类器在许多实际应用中仍然非常有效。

朴素贝叶斯算法图例:

540f58886cf641528206eeb078cefb36.png

python实现:

from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB from sklearn.metrics import classification_report, confusion_matrix # 加载数据集 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) # 创建朴素贝叶斯分类器实例 gnb = GaussianNB() # 训练模型 gnb.fit(X_train, y_train) # 预测 y_pred = gnb.predict(X_test) # 评估模型 print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))

 9.降维算法

降维(Dimensionality Reduction)是机器学习中的一个重要概念,它涉及到减少数据集的维数,同时尽可能地保留数据中的有用信息。降维的目的是为了简化模型,提高计算效率,减少过拟合的风险,并可能提高模型的泛化能力。

降维算法图例:

8558189e028a4c60828d5ae5a2aa7a35.png

python实现:

 

from sklearn.datasets import load_digits from sklearn.decomposition import PCA, TruncatedSVD from sklearn.preprocessing import StandardScaler from sklearn.pipeline import make_pipeline from sklearn.metrics import classification_report, confusion_matrix # 加载数据集 digits = load_digits() X = digits.data y = digits.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建PCA降维模型 pca = PCA(n_components=2) X_train_pca = pca.fit_transform(X_train) X_test_pca = pca.transform(X_test) # 创建LDA降维模型 lda = TruncatedSVD(n_components=2) X_train_lda = lda.fit_transform(X_train) X_test_lda = lda.transform(X_test) # 创建一个管道,先进行标准化,然后使用PCA降维 pipeline_pca = make_pipeline(StandardScaler(), PCA(n_components=2)) X_train_pipeline_pca = pipeline_pca.fit_transform(X_train) X_test_pipeline_pca = pipeline_pca.transform(X_test) # 创建一个管道,先进行标准化,然后使用LDA降维 pipeline_lda = make_pipeline(StandardScaler(), TruncatedSVD(n_components=2)) X_train_pipeline_lda = pipeline_lda.fit_transform(X_train) X_test_pipeline_lda = pipeline_lda.transform(X_test) # 评估模型 # 这里假设你已经有了一个分类器,并想要在降维后的数据上评估它的性能 # 例如,使用逻辑回归分类器 from sklearn.linear_model import LogisticRegression classifier = LogisticRegression() classifier.fit(X_train_pca, y_train) y_pred_pca = classifier.predict(X_test_pca) print("PCA 降维后的分类报告:") print(classification_report(y_test, y_pred_pca)) classifier.fit(X_train_lda, y_train) y_pred_lda = classifier.predict(X_test_lda) print("LDA 降维后的分类报告:") print(classification_report(y_test, y_pred_lda)) # 注意:这里的评估是为了展示如何使用降维后的数据,实际上你可能需要针对你的具体任务调整评估指标。

10.梯度增强算法

梯度提升(Gradient Boosting)是一种强大的机器学习算法,用于构建预测模型。它是一种迭代算法,通过组合多个弱学习器(通常是非参数或简单模型)来形成一个强大的预测模型。

梯度增强图例:

ddcd404e3b0e4045809bdc33efdf3c76.png

python实现:

 

from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.ensemble import GradientBoostingClassifier from sklearn.metrics import classification_report, confusion_matrix # 加载数据集 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) # 创建梯度提升分类器实例 gb_classifier = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=42) # 训练模型 gb_classifier.fit(X_train, y_train) # 预测 y_pred = gb_classifier.predict(X_test) # 评估模型 print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))

 

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/115286.html

(0)
上一篇 2025-12-03 20:15
下一篇 2025-12-03 20:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信