Heim > Artikel > Technologie-Peripheriegeräte > Super stark! Die zehn wichtigsten Algorithmen für maschinelles Lernen, die Sie kennen müssen
Die lineare Regression ist einer der einfachsten und am weitesten verbreiteten maschinellen Lernalgorithmen für prädiktive Modellierung.
Es handelt sich um einen überwachten Lernalgorithmus, der verwendet wird, um den Wert einer abhängigen Variablen basierend auf einer oder mehreren unabhängigen Variablen vorherzusagen.
Der Kern der linearen Regression besteht darin, ein lineares Modell basierend auf beobachteten Daten anzupassen.
Ein lineares Modell wird durch die folgende Gleichung dargestellt:
Der lineare Regressionsalgorithmus beinhaltet das Finden des besten- Anpassungsgerade durch die Datenpunkte. Dies geschieht normalerweise durch Minimierung der quadrierten Differenz zwischen den beobachteten und den vorhergesagten Werten.
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)
Die logistische Regression wird für Klassifizierungsprobleme verwendet. Es sagt die Wahrscheinlichkeit voraus, dass ein bestimmter Datenpunkt zu einer bestimmten Kategorie gehört, z. B. Ja/Nein oder 0/1.
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)
Entscheidungsbäume sind vielseitige und leistungsstarke Algorithmen für maschinelles Lernen, die für Klassifizierungs- und Regressionsaufgaben verwendet werden können.
Sie sind wegen ihrer Einfachheit, Interpretierbarkeit und Fähigkeit, sowohl numerische als auch kategoriale Daten zu verarbeiten, beliebt.
Ein Entscheidungsbaum besteht aus Knoten, die Entscheidungspunkte darstellen, Zweigen, die mögliche Ergebnisse darstellen, und Blättern, die die endgültige Entscheidung oder Vorhersage darstellen.
Jeder Knoten im Entscheidungsbaum entspricht einem Merkmal, und die Zweige stellen die möglichen Werte des Merkmals dar.
Der Algorithmus zum Erstellen eines Entscheidungsbaums beinhaltet die rekursive Aufteilung eines Datensatzes in Teilmengen basierend auf den Werten verschiedener Merkmale. Das Ziel besteht darin, homogene Teilmengen zu erstellen, bei denen die Zielvariable (die Variable, die wir vorhersagen möchten) in jeder Teilmenge ähnlich ist.
Der Aufteilungsprozess wird fortgesetzt, bis Stoppkriterien erfüllt sind, wie z. B. maximale Tiefe, minimale Anzahl von Proben, oder keine weiteren Verbesserungen vorgenommen werden können.
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)
Naive Bayes-Klassifikatoren sind eine Familie einfacher „probabilistischer Klassifikatoren“, die den Satz von Bayes und die Annahme einer starken (naiven) Unabhängigkeit zwischen Merkmalen verwenden. Es wird insbesondere zur Textklassifizierung verwendet.
Es berechnet die Wahrscheinlichkeit jeder Klasse und die bedingte Wahrscheinlichkeit jeder Klasse bei jedem Eingabewert. Diese Wahrscheinlichkeiten werden dann verwendet, um neue Werte basierend auf der höchsten Wahrscheinlichkeit zu klassifizieren.
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)
K 最近邻 (KNN) 是一种简单直观的机器学习算法,用于分类和回归任务。
它根据输入数据点与其在特征空间中最近邻居的相似性进行预测。
在 KNN 中,新数据点的预测由其 k 个最近邻的多数类(用于分类)或平均值(用于回归)确定。KNN 中的 “k” 表示要考虑的邻居数量,这是用户选择的超参数。
KNN 算法包括以下步骤
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)
支持向量机 (SVM) 是一种强大的监督学习算法,用于分类和回归任务。
它们在高维空间中特别有效,广泛应用于图像分类、文本分类和生物信息学等各个领域。
支持向量机的工作原理是找到最能将数据分为不同类别的超平面。
选择超平面以最大化边距,即超平面与每个类的最近数据点(支持向量)之间的距离。
SVM 还可以通过使用核函数将输入空间转换为可以线性分离的高维空间来处理非线性数据。
训练 SVM 的算法包括以下步骤:
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)
随机森林是一种集成学习技术,它结合了多个决策树来提高预测性能并减少过度拟合。
它们广泛用于分类和回归任务,并以其鲁棒性和多功能性而闻名。
随机森林是根据数据集的随机子集并使用特征的随机子集进行训练的决策树的集合。
森林中的每棵决策树独立地进行预测,最终的预测是通过聚合所有树的预测来确定的。
构建随机森林的算法包括以下步骤
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)
K 均值聚类是一种无监督学习算法,用于将数据分组为 “K” 个聚类。确定 k 个质心后,每个数据点被分配到最近的簇。
该算法将数据点分配给一个簇,使得数据点与簇质心之间的平方距离之和最小。
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)
降维是通过使用主成分分析 (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)
梯度提升是一种先进的机器学习技术。它依次构建多个弱预测模型(通常是决策树)。每个新模型都逐渐最小化整个模型的损失函数(误差)。
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)
Das obige ist der detaillierte Inhalt vonSuper stark! Die zehn wichtigsten Algorithmen für maschinelles Lernen, die Sie kennen müssen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!