自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何用 Python 進(jìn)行數(shù)據(jù)挖掘七個(gè)算法介紹

開(kāi)發(fā) 后端
Python 作為一種強(qiáng)大的編程語(yǔ)言,在數(shù)據(jù)挖掘領(lǐng)域有著廣泛的應(yīng)用。本文將介紹7種常用的Python數(shù)據(jù)挖掘算法,并通過(guò)實(shí)際代碼示例幫助你更好地理解和應(yīng)用這些算法。

數(shù)據(jù)挖掘是利用計(jì)算機(jī)技術(shù)從大量數(shù)據(jù)中提取有用信息的過(guò)程。Python 作為一種強(qiáng)大的編程語(yǔ)言,在數(shù)據(jù)挖掘領(lǐng)域有著廣泛的應(yīng)用。本文將介紹7種常用的Python數(shù)據(jù)挖掘算法,并通過(guò)實(shí)際代碼示例幫助你更好地理解和應(yīng)用這些算法。

1. 決策樹(shù)

決策樹(shù)是一種用于分類(lèi)和回歸任務(wù)的監(jiān)督學(xué)習(xí)算法。它通過(guò)樹(shù)狀結(jié)構(gòu)來(lái)表示決策過(guò)程,每個(gè)內(nèi)部節(jié)點(diǎn)表示一個(gè)屬性上的測(cè)試,每個(gè)分支代表一個(gè)測(cè)試結(jié)果,每個(gè)葉節(jié)點(diǎn)代表一種分類(lèi)結(jié)果。

示例代碼:

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

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

# 劃分訓(xùn)練集和測(cè)試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 創(chuàng)建決策樹(shù)模型
clf = DecisionTreeClassifier()

# 訓(xùn)練模型
clf.fit(X_train, y_train)

# 預(yù)測(cè)
y_pred = clf.predict(X_test)

# 計(jì)算準(zhǔn)確率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

2. 支持向量機(jī) (SVM)

支持向量機(jī)是一種用于分類(lèi)和回歸任務(wù)的監(jiān)督學(xué)習(xí)算法。它通過(guò)找到一個(gè)超平面來(lái)最大化不同類(lèi)別之間的間隔,從而實(shí)現(xiàn)分類(lèi)。

示例代碼:

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

# 加載數(shù)據(jù)集
data = load_breast_cancer()
X = data.data
y = data.target

# 劃分訓(xùn)練集和測(cè)試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 創(chuàng)建SVM模型
clf = SVC()

# 訓(xùn)練模型
clf.fit(X_train, y_train)

# 預(yù)測(cè)
y_pred = clf.predict(X_test)

# 計(jì)算準(zhǔn)確率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

3. K-近鄰 (KNN)

K-近鄰算法是一種基于實(shí)例的學(xué)習(xí)方法,用于分類(lèi)和回歸任務(wù)。它通過(guò)計(jì)算樣本之間的距離來(lái)確定最近的K個(gè)鄰居,并根據(jù)這些鄰居的標(biāo)簽來(lái)進(jìn)行預(yù)測(cè)。

示例代碼:

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

# 加載數(shù)據(jù)集
data = load_digits()
X = data.data
y = data.target

# 劃分訓(xùn)練集和測(cè)試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 創(chuàng)建KNN模型
clf = KNeighborsClassifier(n_neighbors=3)

# 訓(xùn)練模型
clf.fit(X_train, y_train)

# 預(yù)測(cè)
y_pred = clf.predict(X_test)

# 計(jì)算準(zhǔn)確率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

4. 樸素貝葉斯

樸素貝葉斯是一種基于貝葉斯定理的分類(lèi)算法,假設(shè)特征之間相互獨(dú)立。它常用于文本分類(lèi)、垃圾郵件過(guò)濾等任務(wù)。

示例代碼:

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

# 加載數(shù)據(jù)集
data = fetch_20newsgroups(subset='all')
X = data.data
y = data.target

# 將文本數(shù)據(jù)轉(zhuǎn)換為詞頻矩陣
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(X)

# 劃分訓(xùn)練集和測(cè)試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 創(chuàng)建樸素貝葉斯模型
clf = MultinomialNB()

# 訓(xùn)練模型
clf.fit(X_train, y_train)

# 預(yù)測(cè)
y_pred = clf.predict(X_test)

# 計(jì)算準(zhǔn)確率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

5. 隨機(jī)森林

隨機(jī)森林是一種集成學(xué)習(xí)方法,通過(guò)構(gòu)建多個(gè)決策樹(shù)并取其平均結(jié)果來(lái)提高預(yù)測(cè)的準(zhǔn)確性和穩(wěn)定性。

示例代碼:

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

# 加載數(shù)據(jù)集
data = load_boston()
X = data.data
y = data.target

# 劃分訓(xùn)練集和測(cè)試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 創(chuàng)建隨機(jī)森林模型
reg = RandomForestRegressor(n_estimators=100)

# 訓(xùn)練模型
reg.fit(X_train, y_train)

# 預(yù)測(cè)
y_pred = reg.predict(X_test)

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

6. 線性回歸

線性回歸是一種用于預(yù)測(cè)連續(xù)值的監(jiān)督學(xué)習(xí)算法。它通過(guò)擬合一條直線來(lái)最小化預(yù)測(cè)值與實(shí)際值之間的差異。

示例代碼:

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

# 生成模擬數(shù)據(jù)
np.random.seed(42)
X = np.random.rand(100, 1) * 10
y = 2 * X + 1 + np.random.randn(100, 1)

# 劃分訓(xùn)練集和測(cè)試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 創(chuàng)建線性回歸模型
reg = LinearRegression()

# 訓(xùn)練模型
reg.fit(X_train, y_train)

# 預(yù)測(cè)
y_pred = reg.predict(X_test)

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

# 繪制結(jié)果
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-均值聚類(lèi)

K-均值聚類(lèi)是一種無(wú)監(jiān)督學(xué)習(xí)算法,用于將數(shù)據(jù)分為K個(gè)簇。它通過(guò)迭代地更新簇中心來(lái)最小化簇內(nèi)樣本之間的距離。

示例代碼:

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

# 生成模擬數(shù)據(jù)
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)

# 創(chuàng)建K-均值聚類(lèi)模型
kmeans = KMeans(n_clusters=4)

# 訓(xùn)練模型
kmeans.fit(X)

# 預(yù)測(cè)簇標(biāo)簽
labels = kmeans.labels_

# 繪制結(jié)果
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()

實(shí)戰(zhàn)案例:電影推薦系統(tǒng)

假設(shè)我們要構(gòu)建一個(gè)簡(jiǎn)單的電影推薦系統(tǒng),使用用戶的歷史評(píng)分?jǐn)?shù)據(jù)來(lái)推薦新的電影。我們將使用協(xié)同過(guò)濾算法,這是一種基于用戶行為的推薦方法。

數(shù)據(jù)準(zhǔn)備:

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

# 加載數(shù)據(jù)
data = pd.read_csv('ratings.csv')

# 定義數(shù)據(jù)格式
reader = Reader(rating_scale=(1, 5))

# 加載數(shù)據(jù)集
data = Dataset.load_from_df(data[['userId', 'movieId', 'rating']], reader)

# 劃分訓(xùn)練集和測(cè)試集
trainset, testset = train_test_split(data, test_size=0.2)

# 創(chuàng)建KNNBasic模型
algo = KNNBasic()

# 訓(xùn)練模型
algo.fit(trainset)

# 預(yù)測(cè)
predictions = algo.test(testset)

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

推薦新電影:

def get_top_n_recommendations(user_id, n=10):
    # 獲取用戶未評(píng)分的電影
    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']))

    # 預(yù)測(cè)評(píng)分
    predictions = [algo.predict(user_id, movie_id) for movie_id in unrated_movies]

    # 按預(yù)測(cè)評(píng)分排序
    top_n = sorted(predictions, key=lambda x: x.est, reverse=True)[:n]

    return top_n

# 獲取用戶1的前10個(gè)推薦電影
recommendations = get_top_n_recommendations(1)
for rec in recommendations:
    print(f'Movie ID: {rec.iid}, Predicted Rating: {rec.est:.2f}')

總結(jié)

本文介紹了7種常用的Python數(shù)據(jù)挖掘算法,包括決策樹(shù)、支持向量機(jī)、K-近鄰、樸素貝葉斯、隨機(jī)森林、線性回歸和K-均值聚類(lèi)。每種算法都有詳細(xì)的理論講解和實(shí)際代碼示例,幫助你更好地理解和應(yīng)用這些算法。最后,我們通過(guò)一個(gè)電影推薦系統(tǒng)的實(shí)戰(zhàn)案例,展示了如何將這些算法應(yīng)用于實(shí)際問(wèn)題中。

責(zé)任編輯:趙寧寧 來(lái)源: 小白PythonAI編程
相關(guān)推薦

2019-01-15 14:21:13

Python數(shù)據(jù)分析數(shù)據(jù)

2017-10-31 11:55:46

sklearn數(shù)據(jù)挖掘自動(dòng)化

2009-03-16 10:29:45

數(shù)據(jù)挖掘過(guò)濾器Access

2010-04-09 09:55:43

Oracle sqlp

2023-11-03 18:01:59

Docker開(kāi)源平臺(tái)

2022-11-02 14:45:24

Python數(shù)據(jù)分析工具

2018-08-21 07:50:06

Python 大數(shù)據(jù)編程語(yǔ)言

2011-10-14 14:24:26

Ruby

2022-05-23 11:13:02

Python工具

2025-03-21 08:20:00

數(shù)據(jù)清洗Python編程

2009-09-03 18:12:14

Lisp介紹

2021-03-02 10:54:08

高管IT投資首席信息官

2021-10-18 13:29:52

Golang網(wǎng)站開(kāi)發(fā)代碼

2025-02-10 10:29:32

2020-10-19 12:55:59

機(jī)器學(xué)習(xí)技術(shù)人工智能

2021-11-22 14:57:35

數(shù)據(jù)治理CIO數(shù)字化轉(zhuǎn)型

2024-10-12 17:13:53

2021-09-22 12:45:47

Python數(shù)據(jù)分析庫(kù)

2019-07-10 11:35:46

防火墻技術(shù)云計(jì)算

2023-01-09 15:20:16

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)