Python 机器学习核心算法实践案例

Python 机器学习核心算法实践案例

目录

  1. 📈 回归算法
    • 1.1 线性回归
    • 1.2 逻辑回归
  2. 📊 分类算法
    • 2.1 K近邻
    • 2.2 支持向量机(SVM)
    • 2.3 决策树与随机森林
  3. 🔍 聚类算法
    • 3.1 K均值与层次聚类
    • 3.2 DBSCAN
  4. 🤖 集成学习
    • 4.1 随机森林
    • 4.2 梯度提升机(XGBoost与LightGBM)

1. 📈 回归算法

1.1 线性回归

线性回归是最基础的回归算法,广泛应用于预测问题。模型假设输出变量与输入变量之间存在线性关系。实现时,需注意数据预处理和特征选择。使用 scikit-learn 库进行线性回归的代码如下:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# 生成示例数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 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)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差: {mse:.2f}")

该代码首先生成了一些示例数据,然后利用线性回归模型进行训练和预测,最后计算预测误差。关键在于数据的分割与模型的训练过程。

1.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

# 加载数据
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.2, random_state=42)

# 创建并训练模型
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")

这里通过 scikit-learn 库加载鸢尾花数据集,并应用逻辑回归模型进行训练和测试,准确率是评估模型性能的重要指标。


2. 📊 分类算法

2.1 K近邻

K近邻(KNN)是一种简单且有效的分类算法,其基本思想是通过计算距离来确定分类。以下是K近邻的实现案例:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report

# 加载数据
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.2, random_state=42)

# 创建并训练模型
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 输出分类报告
print(classification_report(y_test, y_pred))

该示例展示了如何使用K近邻算法进行分类,分类报告提供了更全面的评估指标,包括精确率和召回率。

2.2 支持向量机(SVM)

支持向量机(SVM)是一种强大的分类算法,旨在找到最佳超平面以分离不同类别。以下是SVM的实现示例:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# 加载数据
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.2, random_state=42)

# 创建并训练模型
model = SVC(kernel='linear')
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")

该代码通过SVM模型进行分类,使用线性核函数来进行数据拟合,最终评估模型的准确性。

2.3 决策树与随机森林

决策树是一种易于解释的分类算法,而随机森林则是多棵决策树的集成,能有效降低过拟合风险。以下是随机森林的实现示例:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# 加载数据
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.2, random_state=42)

# 创建并训练模型
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")

该示例使用随机森林进行分类,通过多棵树的投票机制提高预测的稳健性,并有效降低过拟合。


3. 🔍 聚类算法

3.1 K均值与层次聚类

K均值是一种常用的聚类算法,旨在将数据分为K个簇。层次聚类则提供了不同层次的聚类结果。以下是K均值的实现示例:

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 生成示例数据
X, y_true = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# 创建K均值模型
kmeans = KMeans(n_clusters=4)
y_kmeans = kmeans.fit_predict(X)

# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.show()

在此示例中,首先生成随机数据,并使用K均值算法进行聚类,最后通过可视化展示聚类效果。

3.2 DBSCAN

DBSCAN是一种基于密度的聚类算法,适用于发现形状不规则的簇。以下是DBSCAN的实现示例:

from sklearn.datasets import make_moons
from sklearn.cluster import DBSCAN
import matplotlib.pyplot as plt

# 生成示例数据
X, _ = make_moons(n_samples=300, noise=0.1)

# 创建DBSCAN模型
dbscan = DBSCAN(eps=0.2, min_samples=5)
y_dbscan = dbscan.fit_predict(X)

# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=y_dbscan, s=50, cmap='viridis')
plt.title('DBSCAN Clustering')
plt.show()

此示例通过DBSCAN进行聚类,能够有效发现不规则形状的聚类结构。


4. 🤖 集成学习

4.1 随机森林

随机森林是集成学习的一种形式,通过组合多棵决策树提高预测性能。以下是随机森林的应用示例:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# 加载数据
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.2, random_state=42)

# 创建并训练模型
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")

在此示例中,使用随机森林进行分类,显示其在多棵决策树集成后的高效性和准确率。

4.2 梯度提升机(XGBoost与LightGBM)

XGBoost和LightGBM是两种高效的梯度提升框架,广泛应用于机器学习竞赛和实际应用中。以下是XGBoost的实现示例:

import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据
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.2, random_state=42)

# 创建DMatrix
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test)

# 设置参数
params = {
    'objective': 'multi:softmax',
    'num_class': 3,
    'eta': 0.1,
    'max_depth': 3
}

# 训练模型
bst = xgb.train(params, dtrain, num_boost_round=10)

# 进行预测
y_pred = bst.predict(dtest)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")

该示例展示了如何使用XGBoost进行多分类任务,充分展现了其高效性和灵活性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Switch616

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值