1. 线性回归
线性回归是预测连续值的一种方法。比如,根据房屋面积预测房价。
代码示例:
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
# 创建数据集
X = np.array([[1], [2], [3], [4], [5], [6]])
y = np.array([2, 4, 5, 4, 5, 7])
# 划分训练集和测试集
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)
# 预测
predictions = model.predict(X_test)
# 可视化结果
plt.scatter(X, y, color='blue', label='Actual')
plt.plot(X, model.predict(X), color='red', label='Predicted')
plt.xlabel('Area (sq ft)')
plt.ylabel('Price ($)')
plt.legend()
plt.show()
这段代码展示了如何使用LinearRegression类创建模型。它会根据给定的数据点画出一条直线,尽可能地贴近这些点。
2. 逻辑回归
逻辑回归用于分类问题。比如,判断一封邮件是否为垃圾邮件。
代码示例:
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
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)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
这段代码展示了如何使用LogisticRegression类创建模型。accuracy_score函数用来评估模型的准确性。
3. 决策树
决策树可以解决分类和回归问题。比如,决定是否批准一笔贷款。
代码示例:
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
model = DecisionTreeClassifier()
# 训练模型
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
这段代码展示了如何使用DecisionTreeClassifier类创建模型。通过划分数据,模型能够做出决策。
4. 支持向量机(SVM)
支持向量机用于分类和回归问题。比如,识别手写数字。
代码示例:
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_digits
# 加载数据集
data = load_digits()
X = data.data
y = data.target
# 划分训练集和测试集
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)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
这段代码展示了如何使用SVC类创建模型。SVM会在数据中找到最佳的边界来区分不同类别。
5. K-近邻算法(KNN)
K-近邻算法用于分类和回归问题。比如,判断一款游戏是否受欢迎。
代码示例:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
model = KNeighborsClassifier(n_neighbors=3)
# 训练模型
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
这段代码展示了如何使用KNeighborsClassifier类创建模型。KNN会根据最近的邻居来判断数据点的类别。
6. 随机森林
随机森林是一种集成学习方法,用于分类和回归问题。比如,预测股票价格。
代码示例:
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
model = RandomForestClassifier(n_estimators=100)
# 训练模型
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
这段代码展示了如何使用RandomForestClassifier类创建模型。随机森林通过多个决策树的投票来做出最终的决策。
7. 主成分分析(PCA)
主成分分析用于降维。比如,简化高维数据集。
代码示例:
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 创建PCA模型
pca = PCA(n_components=2)
# 转换数据
X_pca = pca.fit_transform(X)
# 可视化结果
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.title('PCA of Iris Dataset')
plt.show()
这段代码展示了如何使用PCA类进行数据降维。通过将数据投影到新的坐标轴上,PCA能够保留数据的主要特征。
8. 聚类算法(K-Means)
聚类算法用于无监督学习。比如,将顾客分成不同的群体。
代码示例:
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
# 创建数据集
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)
# 创建KMeans模型
kmeans = KMeans(n_clusters=4)
# 训练模型
kmeans.fit(X)
# 预测
labels = kmeans.predict(X)
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='x')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('K-Means Clustering')
plt.show()
这段代码展示了如何使用KMeans类进行聚类。通过将数据点分配给最近的质心,K-Means能够将数据分成不同的群组。
9. 梯度提升树(Gradient Boosting)
梯度提升树用于分类和回归问题。比如,预测客户是否会流失。
代码示例:
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
model = GradientBoostingClassifier()
# 训练模型
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
这段代码展示了如何使用GradientBoostingClassifier类创建模型。梯度提升树通过组合多个弱模型来提高预测性能。
10. AdaBoost
AdaBoost也是一种集成学习方法,用于分类和回归问题。比如,识别恶意软件。
代码示例:
from sklearn.ensemble import AdaBoostClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
model = AdaBoostClassifier()
# 训练模型
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
这段代码展示了如何使用AdaBoostClassifier类创建模型。AdaBoost通过赋予错误分类的数据更高的权重来改进模型。
11. XGBoost
XGBoost是另一种梯度提升框架,广泛应用于分类和回归问题。比如,预测股市趋势。
代码示例:
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
model = xgb.XGBClassifier()
# 训练模型
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
这段代码展示了如何使用XGBClassifier类创建模型。XGBoost通过优化目标函数来提高模型性能。
12. LightGBM
LightGBM是另一种高效的梯度提升框架,适用于大规模数据集。比如,推荐系统。
代码示例:
import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
model = lgb.LGBMClassifier()
# 训练模型
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
这段代码展示了如何使用LGBMClassifier类创建模型。LightGBM通过高效地处理数据来加速训练过程。
13. CatBoost
CatBoost是另一个高效的梯度提升框架,特别适合处理分类特征。比如,预测用户行为。
代码示例:
import catboost as cb
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
model = cb.CatBoostClassifier()
# 训练模型
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
这段代码展示了如何使用CatBoostClassifier类创建模型。CatBoost通过处理分类特征来提高模型性能。
14. DBSCAN
DBSCAN是一种基于密度的聚类算法,用于发现任意形状的簇。比如,异常检测。
代码示例:
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
# 创建数据集
X, _ = make_moons(n_samples=300, noise=0.1, random_state=42)
# 创建DBSCAN模型
dbscan = DBSCAN(eps=0.2, min_samples=5)
# 训练模型
labels = dbscan.fit_predict(X)
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('DBSCAN Clustering')
plt.show()
这段代码展示了如何使用DBSCAN类进行聚类。DBSCAN通过寻找密度相连的点来发现簇。
总结
本文介绍了14种常用的机器学习算法,并通过实际代码示例展示了它们的基本用法。从简单的线性回归到复杂的集成学习方法,每种算法都有其独特的应用场景。通过理解这些算法的工作原理,读者可以更好地选择合适的工具来解决实际问题。希望本文能帮助大家更深入地掌握机器学习的核心技术。