>  기사  >  기술 주변기기  >  매우 강하다! 꼭 알아야 할 10가지 머신러닝 알고리즘

매우 강하다! 꼭 알아야 할 10가지 머신러닝 알고리즘

WBOY
WBOY원래의
2024-06-10 21:53:52856검색

매우 강하다! 꼭 알아야 할 10가지 머신러닝 알고리즘

1. 선형 회귀

선형 회귀는 예측 모델링을 위해 가장 간단하고 가장 널리 사용되는 기계 학습 알고리즘 중 하나입니다.

하나 이상의 독립 변수를 기반으로 종속 변수의 값을 예측하는 데 사용되는 지도 학습 알고리즘입니다.

정의

선형 회귀의 핵심은 관찰된 데이터를 기반으로 선형 모델을 피팅하는 것입니다.

선형 모델은 다음 방정식으로 표현됩니다.

여기서

  • 은 종속 변수(예측하려는 변수)입니다.
  • 은 독립 변수(예측에 사용하는 변수)입니다. 예측)
  • 은 직선의 기울기
  • 는 y절편(직선과 y축의 교차점)

선형 회귀 알고리즘에는 데이터 포인트를 통해 선을 맞추는 것입니다. 이는 일반적으로 관찰된 값과 예측된 값 사이의 제곱 차이를 최소화하여 수행됩니다.

평가 지표

  • 평균 제곱 오류(MSE): 제곱 측정 오류의 평균입니다. 값이 낮을수록 좋습니다.
  • R 제곱: 독립 변수에서 예측할 수 있는 종속 변수의 변동 비율을 나타냅니다. 1에 가까울수록 좋습니다.
from sklearn.datasets import load_diabetesfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_squared_error, r2_score# Load the Diabetes datasetdiabetes = load_diabetes()X, y = diabetes.data, diabetes.target# Splitting the dataset into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# Creating and training the Linear Regression modelmodel = LinearRegression()model.fit(X_train, y_train)# Predicting the test set resultsy_pred = model.predict(X_test)# Evaluating the modelmse = mean_squared_error(y_test, y_pred)r2 = r2_score(y_test, y_pred)print("MSE is:", mse)print("R2 score is:", r2)

2. 로지스틱 회귀

로지스틱 회귀는 분류 문제에 사용됩니다. 주어진 데이터 포인트가 예/아니요 또는 0/1과 같은 특정 범주에 속할 확률을 예측합니다.

평가 지표
  • Accuracy: 정확도는 전체 관측치에 대한 정확하게 예측된 관측치의 비율입니다.
  • 정밀도 및 재현율: 정밀도는 예상되는 모든 긍정적 관찰에 대한 올바르게 예측된 긍정적 관찰의 비율입니다. 재현율은 모든 실제 관측치에 대한 올바르게 예측된 긍정적인 관측치의 비율입니다.
  • F1 Score: 재현율과 정밀도 사이의 균형.
from sklearn.datasets import load_breast_cancerfrom sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score# Load the Breast Cancer datasetbreast_cancer = load_breast_cancer()X, y = breast_cancer.data, breast_cancer.target# Splitting the dataset into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# Creating and training the Logistic Regression modelmodel = LogisticRegression(max_iter=10000)model.fit(X_train, y_train)# Predicting the test set resultsy_pred = model.predict(X_test)# Evaluating the modelaccuracy = accuracy_score(y_test, y_pred)precision = precision_score(y_test, y_pred)recall = recall_score(y_test, y_pred)f1 = f1_score(y_test, y_pred)# Print the resultsprint("Accuracy:", accuracy)print("Precision:", precision)print("Recall:", recall)print("F1 Score:", f1)

3. 결정 트리

결정 트리는 분류 및 회귀 작업에 사용할 수 있는 다양하고 강력한 기계 학습 알고리즘입니다.

간단함, 해석 가능성, 숫자 및 범주형 데이터를 모두 처리하는 능력으로 인기가 높습니다.

정의

결정 트리는 결정 지점을 나타내는 노드, 가능한 결과를 나타내는 가지, 최종 결정 또는 예측을 나타내는 잎으로 구성됩니다.

의사결정 트리의 각 노드는 특성에 해당하며 가지는 특성의 가능한 값을 나타냅니다.

의사결정 트리를 구축하는 알고리즘에는 다양한 기능의 값을 기반으로 데이터 세트를 하위 세트로 재귀적으로 분할하는 작업이 포함됩니다. 목표는 목표 변수(예측하려는 변수)가 각 하위 집합에서 유사한 동종 하위 집합을 만드는 것입니다.

최대 깊이, 최소 샘플 수 등 중지 기준이 충족되거나 더 이상 개선이 불가능할 때까지 분할 프로세스가 계속됩니다.

평가 지표

  • 분류용: 정확도, 정밀도, 재현율 및 F1 점수
  • 회귀용: 평균 제곱 오차(MSE), R 제곱
from sklearn.datasets import load_winefrom sklearn.tree import DecisionTreeClassifier# Load the Wine datasetwine = load_wine()X, y = wine.data, wine.target# Splitting the dataset into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# Creating and training the Decision Tree modelmodel = DecisionTreeClassifier(random_state=42)model.fit(X_train, y_train)# Predicting the test set resultsy_pred = model.predict(X_test)# Evaluating the modelaccuracy = accuracy_score(y_test, y_pred)precision = precision_score(y_test, y_pred, average='macro')recall = recall_score(y_test, y_pred, average='macro')f1 = f1_score(y_test, y_pred, average='macro')# Print the resultsprint("Accuracy:", accuracy)print("Precision:", precision)print("Recall:", recall)print("F1 Score:", f1)

4 .나이브 베이즈

나이브 베이즈 분류기는 베이즈 정리와 특성 간의 강력한(순진한) 독립성을 가정하는 간단한 "확률적 분류기" 계열입니다. 특히 텍스트 분류에 사용됩니다.

각 입력 값에 대해 각 클래스의 확률과 각 클래스의 조건부 확률을 계산합니다. 그런 다음 이러한 확률은 가장 높은 확률을 기준으로 새로운 값을 분류하는 데 사용됩니다.

평가 지표:

  • 정확도: 모델의 전반적인 정확성을 측정합니다.
  • 정밀도, 재현율 및 F1 점수: 학급 분포가 불균형할 때 특히 중요합니다.
from sklearn.datasets import load_digitsfrom sklearn.naive_bayes import GaussianNB# Load the Digits datasetdigits = load_digits()X, y = digits.data, digits.target# Splitting the dataset into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# Creating and training the Naive Bayes modelmodel = GaussianNB()model.fit(X_train, y_train)# Predicting the test set resultsy_pred = model.predict(X_test)# Evaluating the modelaccuracy = accuracy_score(y_test, y_pred)precision = precision_score(y_test, y_pred, average='macro')recall = recall_score(y_test, y_pred, average='macro')f1 = f1_score(y_test, y_pred, average='macro')# Print the resultsprint("Accuracy:", accuracy)print("Precision:", precision)print("Recall:", recall)print("F1 Score:", f1)

5.K-最近邻(KNN)

K 最近邻 (KNN) 是一种简单直观的机器学习算法,用于分类和回归任务。

它根据输入数据点与其在特征空间中最近邻居的相似性进行预测。

在 KNN 中,新数据点的预测由其 k 个最近邻的多数类(用于分类)或平均值(用于回归)确定。KNN 中的 “k” 表示要考虑的邻居数量,这是用户选择的超参数。

算法

KNN 算法包括以下步骤

  1. 计算距离:计算新数据点与数据集中所有其他数据点之间的距离。
  2. 查找邻居:根据计算的距离选择 k 个最近邻居。
  3. 多数投票或平均:对于分类,分配 k 个邻居中出现最频繁的类标签。对于回归,计算 k 个邻居的目标变量的平均值。
  4. 进行预测:将预测的类标签或值分配给新数据点。

评估指标

  • 「分类」:准确率、精确率、召回率、F1 分数。
  • 「回归」:均方误差 (MSE)、R 平方。
from sklearn.datasets import load_winefrom sklearn.model_selection import train_test_splitfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score# Load the Wine datasetwine = load_wine()X, y = wine.data, wine.target# Splitting the dataset into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# Creating and training the KNN modelknn_model = KNeighborsClassifier(n_neighbors=3)knn_model.fit(X_train, y_train)# Predicting the test set resultsy_pred_knn = knn_model.predict(X_test)# Evaluating the modelaccuracy_knn = accuracy_score(y_test, y_pred_knn)precision_knn = precision_score(y_test, y_pred_knn, average='macro')recall_knn = recall_score(y_test, y_pred_knn, average='macro')f1_knn = f1_score(y_test, y_pred_knn, average='macro')# Print the resultsprint("Accuracy:", accuracy_knn)print("Precision:", precision_knn)print("Recall:", recall_knn)print("F1 Score:", f1_knn)

6.SVM

支持向量机 (SVM) 是一种强大的监督学习算法,用于分类和回归任务。

它们在高维空间中特别有效,广泛应用于图像分类、文本分类和生物信息学等各个领域。

算法原理

支持向量机的工作原理是找到最能将数据分为不同类别的超平面。

选择超平面以最大化边距,即超平面与每个类的最近数据点(支持向量)之间的距离。

SVM 还可以通过使用核函数将输入空间转换为可以线性分离的高维空间来处理非线性数据。

训练 SVM 的算法包括以下步骤:

  1. 数据准备:预处理数据并根据需要对分类变量进行编码。
  2. 选择核:选择合适的核函数,例如线性、多项式或径向基函数 (RBF)。
  3. 模型训练:通过寻找使类之间的间隔最大化的超平面来训练 SVM。
  4. 模型评估:使用交叉验证或保留验证集评估 SVM 的性能。

评估指标

  • 「分类」:准确率、精确率、召回率、F1 分数。
  • 「回归」:均方误差 (MSE)、R 平方。
from sklearn.svm import SVCbreast_cancer = load_breast_cancer()X, y = breast_cancer.data, breast_cancer.target# Splitting the dataset into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# Creating and training the SVM modelsvm_model = SVC()svm_model.fit(X_train, y_train)# Predicting the test set resultsy_pred_svm = svm_model.predict(X_test)# Evaluating the modelaccuracy_svm = accuracy_score(y_test, y_pred_svm)precision_svm = precision_score(y_test, y_pred_svm, average='macro')recall_svm = recall_score(y_test, y_pred_svm, average='macro')f1_svm = f1_score(y_test, y_pred_svm, average='macro')accuracy_svm, precision_svm, recall_svm, f1_svm# Print the resultsprint("Accuracy:", accuracy_svm)print("Precision:", precision_svm)print("Recall:", recall_svm)print("F1 Score:", f1_svm)

7.随机森林

随机森林是一种集成学习技术,它结合了多个决策树来提高预测性能并减少过度拟合。

它们广泛用于分类和回归任务,并以其鲁棒性和多功能性而闻名。

算法步骤

随机森林是根据数据集的随机子集并使用特征的随机子集进行训练的决策树的集合。

森林中的每棵决策树独立地进行预测,最终的预测是通过聚合所有树的预测来确定的。

构建随机森林的算法包括以下步骤

  1. 随机采样:从数据集中随机选择样本子集(带替换)来训练每棵树。
  2. 特征随机化:随机选择每个节点的特征子集以考虑分割。
  3. 树构建:使用采样数据和特征构建多个决策树。
  4. 投票或平均:聚合所有树的预测以做出最终预测。

评估指标

  • 分类:准确率、精确率、召回率、F1 分数。
  • 回归:均方误差 (MSE)、R 平方。
from sklearn.ensemble import RandomForestClassifierbreast_cancer = load_breast_cancer()X, y = breast_cancer.data, breast_cancer.target# Splitting the dataset into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# Creating and training the Random Forest modelrf_model = RandomForestClassifier(random_state=42)rf_model.fit(X_train, y_train)# Predicting the test set resultsy_pred_rf = rf_model.predict(X_test)# Evaluating the modelaccuracy_rf = accuracy_score(y_test, y_pred_rf)precision_rf = precision_score(y_test, y_pred_rf, average='macro')recall_rf = recall_score(y_test, y_pred_rf, average='macro')f1_rf = f1_score(y_test, y_pred_rf, average='macro')# Print the resultsprint("Accuracy:", accuracy)print("Precision:", precision)print("Recall:", recall)print("F1 Score:", f1)

8.K-均值聚类

K 均值聚类是一种无监督学习算法,用于将数据分组为 “K” 个聚类。确定 k 个质心后,每个数据点被分配到最近的簇。

该算法将数据点分配给一个簇,使得数据点与簇质心之间的平方距离之和最小。

评估指标

  • 「惯性」:样本到最近聚类中心的总平方距离称为惯性。值越低越好。
  • 「Silhouette Score」:表示一个项目属于其自身集群的紧密程度。高轮廓分数意味着该项目与其自身的集群匹配良好,而与附近的集群匹配不佳。轮廓得分从 -1 到 1。
from sklearn.datasets import load_irisfrom sklearn.cluster import KMeansfrom sklearn.metrics import silhouette_score# Load the Iris datasetiris = load_iris()X = iris.data# Applying K-Means Clusteringkmeans = KMeans(n_clusters=3, random_state=42)kmeans.fit(X)# Predicting the cluster for each data pointy_pred_clusters = kmeans.predict(X)# Evaluating the modelinertia = kmeans.inertia_silhouette = silhouette_score(X, y_pred_clusters)print("Inertia:", inertia)print("Silhouette:", silhouette)

9.PCA

降维是通过使用主成分分析 (PCA) 来完成的。它将数据转换为新的坐标系,减少变量数量,同时尽可能多地保留原始数据的变化。

使用 PCA 可以找到使数据方差最大化的主要成分或轴。第一个主成分捕获最大方差,第二个主成分(与第一个主成分正交)捕获第二大方差,依此类推。

评估指标

  • 「解释方差」:表示每个主成分捕获的数据方差有多少。
  • 「总解释方差」:由所选主成分解释的累积方差。
from sklearn.datasets import load_breast_cancerfrom sklearn.decomposition import PCAimport numpy as np# Load the Breast Cancer datasetbreast_cancer = load_breast_cancer()X = breast_cancer.data# Applying PCApca = PCA(n_compnotallow=2)# Reducing to 2 dimensions for simplicitypca.fit(X)# Transforming the dataX_pca = pca.transform(X)# Explained Varianceexplained_variance = pca.explained_variance_ratio_# Total Explained Variancetotal_explained_variance = np.sum(explained_variance)print("Explained variance:", explained_variance)print("Total Explained Variance:", total_explained_variance)

10.梯度提升算法

梯度提升是一种先进的机器学习技术。它依次构建多个弱预测模型(通常是决策树)。每个新模型都逐渐最小化整个模型的损失函数(误差)。

评估指标

  • 「对于分类」:准确率、精确率、召回率、F1 分数。
  • 「对于回归」:均方误差 (MSE)、R 平方。
from sklearn.datasets import load_diabetesfrom sklearn.ensemble import GradientBoostingRegressorfrom sklearn.metrics import mean_squared_error, r2_score# Load the Diabetes datasetdiabetes = load_diabetes()X, y = diabetes.data, diabetes.target# Splitting the dataset into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# Creating and training the Gradient Boosting modelgb_model = GradientBoostingRegressor(random_state=42)gb_model.fit(X_train, y_train)# Predicting the test set resultsy_pred_gb = gb_model.predict(X_test)# Evaluating the modelmse_gb = mean_squared_error(y_test, y_pred_gb)r2_gb = r2_score(y_test, y_pred_gb)print("MSE:", mse_gb)


위 내용은 매우 강하다! 꼭 알아야 할 10가지 머신러닝 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.