如何用 Python 进行数据挖掘七个算法介绍

开发 后端
Python 作为一种强大的编程语言,在数据挖掘领域有着广泛的应用。本文将介绍7种常用的Python数据挖掘算法,并通过实际代码示例帮助你更好地理解和应用这些算法。

数据挖掘是利用计算机技术从大量数据中提取有用信息的过程。Python 作为一种强大的编程语言,在数据挖掘领域有着广泛的应用。本文将介绍7种常用的Python数据挖掘算法,并通过实际代码示例帮助你更好地理解和应用这些算法。

1. 决策树

决策树是一种用于分类和回归任务的监督学习算法。它通过树状结构来表示决策过程,每个内部节点表示一个属性上的测试,每个分支代表一个测试结果,每个叶节点代表一种分类结果。

示例代码:

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
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.3, random_state=42)

# 创建决策树模型
clf = DecisionTreeClassifier()

# 训练模型
clf.fit(X_train, y_train)

# 预测
y_pred = clf.predict(X_test)

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

2. 支持向量机 (SVM)

支持向量机是一种用于分类和回归任务的监督学习算法。它通过找到一个超平面来最大化不同类别之间的间隔,从而实现分类。

示例代码:

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

# 加载数据集
data = load_breast_cancer()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建SVM模型
clf = SVC()

# 训练模型
clf.fit(X_train, y_train)

# 预测
y_pred = clf.predict(X_test)

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

3. K-近邻 (KNN)

K-近邻算法是一种基于实例的学习方法,用于分类和回归任务。它通过计算样本之间的距离来确定最近的K个邻居,并根据这些邻居的标签来进行预测。

示例代码:

from sklearn.datasets import load_digits
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

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

# 创建KNN模型
clf = KNeighborsClassifier(n_neighbors=3)

# 训练模型
clf.fit(X_train, y_train)

# 预测
y_pred = clf.predict(X_test)

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

4. 朴素贝叶斯

朴素贝叶斯是一种基于贝叶斯定理的分类算法,假设特征之间相互独立。它常用于文本分类、垃圾邮件过滤等任务。

示例代码:

from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
data = fetch_20newsgroups(subset='all')
X = data.data
y = data.target

# 将文本数据转换为词频矩阵
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(X)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建朴素贝叶斯模型
clf = MultinomialNB()

# 训练模型
clf.fit(X_train, y_train)

# 预测
y_pred = clf.predict(X_test)

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

5. 随机森林

随机森林是一种集成学习方法,通过构建多个决策树并取其平均结果来提高预测的准确性和稳定性。

示例代码:

from sklearn.datasets import load_boston
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 加载数据集
data = load_boston()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建随机森林模型
reg = RandomForestRegressor(n_estimators=100)

# 训练模型
reg.fit(X_train, y_train)

# 预测
y_pred = reg.predict(X_test)

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

6. 线性回归

线性回归是一种用于预测连续值的监督学习算法。它通过拟合一条直线来最小化预测值与实际值之间的差异。

示例代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 生成模拟数据
np.random.seed(42)
X = np.random.rand(100, 1) * 10
y = 2 * X + 1 + np.random.randn(100, 1)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建线性回归模型
reg = LinearRegression()

# 训练模型
reg.fit(X_train, y_train)

# 预测
y_pred = reg.predict(X_test)

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

# 绘制结果
plt.scatter(X_test, y_test, color='blue', label='Actual')
plt.plot(X_test, y_pred, color='red', label='Predicted')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

7. K-均值聚类

K-均值聚类是一种无监督学习算法,用于将数据分为K个簇。它通过迭代地更新簇中心来最小化簇内样本之间的距离。

示例代码:

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

# 生成模拟数据
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)

# 创建K-均值聚类模型
kmeans = KMeans(n_clusters=4)

# 训练模型
kmeans.fit(X)

# 预测簇标签
labels = kmeans.labels_

# 绘制结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=200, c='red', marker='X')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('K-Means Clustering')
plt.show()

实战案例:电影推荐系统

假设我们要构建一个简单的电影推荐系统,使用用户的历史评分数据来推荐新的电影。我们将使用协同过滤算法,这是一种基于用户行为的推荐方法。

数据准备:

import pandas as pd
from sklearn.model_selection import train_test_split
from surprise import Dataset, Reader, KNNBasic
from surprise.model_selection import cross_validate

# 加载数据
data = pd.read_csv('ratings.csv')

# 定义数据格式
reader = Reader(rating_scale=(1, 5))

# 加载数据集
data = Dataset.load_from_df(data[['userId', 'movieId', 'rating']], reader)

# 划分训练集和测试集
trainset, testset = train_test_split(data, test_size=0.2)

# 创建KNNBasic模型
algo = KNNBasic()

# 训练模型
algo.fit(trainset)

# 预测
predictions = algo.test(testset)

# 评估模型
results = cross_validate(algo, data, measures=['RMSE', 'MAE'], cv=5, verbose=True)

推荐新电影:

def get_top_n_recommendations(user_id, n=10):
    # 获取用户未评分的电影
    user_ratings = data.df[data.df['userId'] == user_id]
    all_movies = data.df['movieId'].unique()
    unrated_movies = list(set(all_movies) - set(user_ratings['movieId']))

    # 预测评分
    predictions = [algo.predict(user_id, movie_id) for movie_id in unrated_movies]

    # 按预测评分排序
    top_n = sorted(predictions, key=lambda x: x.est, reverse=True)[:n]

    return top_n

# 获取用户1的前10个推荐电影
recommendations = get_top_n_recommendations(1)
for rec in recommendations:
    print(f'Movie ID: {rec.iid}, Predicted Rating: {rec.est:.2f}')

总结

本文介绍了7种常用的Python数据挖掘算法,包括决策树、支持向量机、K-近邻、朴素贝叶斯、随机森林、线性回归和K-均值聚类。每种算法都有详细的理论讲解和实际代码示例,帮助你更好地理解和应用这些算法。最后,我们通过一个电影推荐系统的实战案例,展示了如何将这些算法应用于实际问题中。

责任编辑:赵宁宁 来源: 小白PythonAI编程
相关推荐

2019-01-15 14:21:13

Python数据分析数据

2017-10-31 11:55:46

sklearn数据挖掘自动化

2009-03-16 10:29:45

数据挖掘过滤器Access

2010-04-09 09:55:43

Oracle sqlp

2022-11-02 14:45:24

Python数据分析工具

2018-08-21 07:50:06

Python 大数据编程语言

2023-11-03 18:01:59

Docker开源平台

2011-10-14 14:24:26

Ruby

2022-05-23 11:13:02

Python工具

2021-03-02 10:54:08

高管IT投资首席信息官

2021-10-18 13:29:52

Golang网站开发代码

2009-09-03 18:12:14

Lisp介绍

2020-10-19 12:55:59

机器学习技术人工智能

2021-11-22 14:57:35

数据治理CIO数字化转型

2024-10-12 17:13:53

2021-09-22 12:45:47

Python数据分析

2019-07-10 11:35:46

防火墙技术云计算

2023-01-09 15:20:16

2019-08-01 15:08:37

PythonLine操作系统

2021-12-06 13:56:45

云端云迁移云计算
点赞
收藏

51CTO技术栈公众号