成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 中快速上手機器學習的七個基礎算法

開發 后端 機器學習
本文介紹了幾種常用的機器學習算法,包括線性回歸、邏輯回歸、決策樹、支持向量機和K近鄰算法,并通過Python代碼示例展示了它們的具體應用。

機器學習作為一種讓計算機從數據中自動學習的技術,在近年來得到了迅猛發展。本文將介紹幾種基礎的機器學習算法,并通過Python代碼示例展示它們的應用。

1. 什么是機器學習

機器學習是一種讓計算機學會從數據中自動“學習”并做出預測或決策的技術。不需要顯式地編程告訴計算機如何執行任務。機器學習的核心在于構建模型,通過大量數據訓練模型,使其能夠準確預測未知數據的結果。

2. 為什么選擇Python

Python語言簡單易學,擁有強大的科學計算庫,如NumPy、Pandas、Scikit-learn等。這些庫提供了大量的函數和工具,可以方便地處理數據、訓練模型、評估性能。

3. 線性回歸

線性回歸是最簡單的機器學習算法之一。它假設因變量y與自變量x之間存在線性關系,即y = ax + b。線性回歸的目標是找到最佳擬合直線,使得所有點到直線的距離平方和最小。

代碼示例:

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

# 創建數據集
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)

# 可視化
plt.scatter(X_test, y_test, color='blue', label='Actual')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Predicted')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

# 輸出系數和截距
print("Coefficient:", model.coef_)
print("Intercept:", model.intercept_)

輸出結果:運行上述代碼后,會生成一張散點圖,其中藍色點表示真實值,紅色線表示預測值。同時控制臺會輸出模型的系數和截距。

4. 邏輯回歸

邏輯回歸主要用于解決二分類問題。它通過Sigmoid函數將線性組合映射到[0,1]區間內,代表事件發生的概率。邏輯回歸的目標是最大化似然函數,即找到一組參數使得訓練樣本出現的概率最大。

代碼示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

# 創建數據集
X, y = make_classification(n_samples=100, n_features=2, n_redundant=0, n_informative=2,
                           random_state=1, n_clusters_per_class=1)

# 劃分訓練集和測試集
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)

# 預測
y_pred = model.predict(X_test)

# 可視化
def plot_decision_boundary(model, axis):
    x0, x1 = np.meshgrid(
        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),
        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),
    )
    X_new = np.c_[x0.ravel(), x1.ravel()]
    y_predict = model.predict(X_new)
    zz = y_predict.reshape(x0.shape)
    from matplotlib.colors import ListedColormap
    custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])
    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)
    
plot_decision_boundary(model, axis=[-3, 3, -3, 3])
plt.scatter(X[y==0, 0], X[y==0, 1])
plt.scatter(X[y==1, 0], X[y==1, 1])
plt.show()

# 輸出準確率
from sklearn.metrics import accuracy_score
print("Accuracy:", accuracy_score(y_test, y_pred))

輸出結果:運行上述代碼后,會生成一張決策邊界圖,展示了邏輯回歸模型如何區分兩類樣本。同時控制臺會輸出模型在測試集上的準確率。

5. 決策樹

決策樹是一種樹形結構的分類和回歸算法。它通過遞歸地劃分數據集,構建一棵樹形結構,最終實現分類或回歸。每個內部節點表示一個屬性上的測試,每個分支表示一個測試結果,每個葉節點表示一個類別或數值。

代碼示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.tree import plot_tree

# 加載數據集
data = load_iris()
X = data.data[:, :2]  # 只使用前兩個特征
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(max_depth=3)

# 訓練模型
model.fit(X_train, y_train)

# 可視化決策樹
plt.figure(figsize=(15, 10))
plot_tree(model, filled=True, feature_names=data.feature_names[:2], class_names=data.target_names)
plt.show()

# 輸出準確率
from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

輸出結果:運行上述代碼后,會生成一張決策樹的可視化圖,展示了決策樹如何根據特征進行分類。同時控制臺會輸出模型在測試集上的準確率。

6. 支持向量機 (SVM)

支持向量機是一種基于間隔最大化原則的分類和回歸方法。它試圖找到一個超平面,使得兩類樣本之間的間隔最大。對于非線性可分問題,可以通過核函數將數據映射到高維空間,從而找到合適的超平面。

代碼示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split

# 創建數據集
X, y = make_blobs(n_samples=100, centers=2, random_state=42)

# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 創建SVM模型
model = SVC(kernel='linear')

# 訓練模型
model.fit(X_train, y_train)

# 可視化
def plot_svm_boundary(model, axis):
    x0, x1 = np.meshgrid(
        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),
        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),
    )
    X_new = np.c_[x0.ravel(), x1.ravel()]
    y_predict = model.decision_function(X_new).reshape(x0.shape)
    zero_line = y_predict == 0
    plt.contour(x0, x1, y_predict, colors='k', levels=[-1, 0, 1], linestyles=['--', '-', '--'])
    plt.scatter(X[y==0, 0], X[y==0, 1])
    plt.scatter(X[y==1, 0], X[y==1, 1])
    
plot_svm_boundary(model, axis=[-4, 4, -4, 4])
plt.show()

# 輸出準確率
from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

輸出結果:

運行上述代碼后,會生成一張決策邊界圖,展示了SVM模型如何區分兩類樣本。同時控制臺會輸出模型在測試集上的準確率。

7. K近鄰算法 (KNN)

K近鄰算法是一種基于實例的學習方法。給定一個測試樣本,KNN算法會在訓練集中找到距離最近的K個鄰居,并根據這些鄰居的標簽來預測測試樣本的標簽。通常采用歐氏距離作為距離度量。

代碼示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split

# 創建數據集
X, y = make_classification(n_samples=100, n_features=2, n_redundant=0, n_informative=2,
                           random_state=1, n_clusters_per_class=1)

# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 創建KNN模型
model = KNeighborsClassifier(n_neighbors=3)

# 訓練模型
model.fit(X_train, y_train)

# 可視化
def plot_knn_boundary(model, axis):
    x0, x1 = np.meshgrid(
        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),
        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),
    )
    X_new = np.c_[x0.ravel(), x1.ravel()]
    y_predict = model.predict(X_new).reshape(x0.shape)
    plt.contourf(x0, x1, y_predict, cmap=plt.cm.Paired, alpha=0.8)
    plt.scatter(X[y==0, 0], X[y==0, 1])
    plt.scatter(X[y==1, 0], X[y==1, 1])
    
plot_knn_boundary(model, axis=[-3, 3, -3, 3])
plt.show()

# 輸出準確率
from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

輸出結果:運行上述代碼后,會生成一張決策邊界圖,展示了KNN模型如何區分兩類樣本。同時控制臺會輸出模型在測試集上的準確率。

實戰案例:手寫數字識別

手寫數字識別是一個經典的機器學習問題,可以用來驗證各種算法的效果。MNIST數據集包含了70000個大小為28x28像素的手寫數字圖片,其中60000張用于訓練,10000張用于測試。

代碼示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 加載MNIST數據集
mnist = fetch_openml('mnist_784', version=1)
X, y = mnist['data'], mnist['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=1000)

# 訓練模型
model.fit(X_train, y_train)

# 預測
y_pred = model.predict(X_test)

# 輸出準確率
print("Accuracy:", accuracy_score(y_test, y_pred))

# 可視化預測結果
some_digit = X_test[0]
some_digit_image = some_digit.reshape(28, 28)

plt.imshow(some_digit_image, cmap=plt.cm.binary)
plt.axis("off")
plt.show()

print("Predicted:", model.predict([some_digit]))
print("Actual:", y_test[0])

輸出結果:運行上述代碼后,會輸出模型在測試集上的準確率,并展示一個測試樣本及其預測結果和真實標簽。

總結

本文介紹了幾種常用的機器學習算法,包括線性回歸、邏輯回歸、決策樹、支持向量機和K近鄰算法,并通過Python代碼示例展示了它們的具體應用。通過實戰案例手寫數字識別進一步驗證了這些算法的有效性。希望讀者能夠從中獲得對機器學習的理解和實踐能力。

責任編輯:趙寧寧 來源: 小白PythonAI編程
相關推薦

2024-08-30 14:29:03

2020-10-19 12:55:59

機器學習技術人工智能

2024-11-08 16:24:39

2015-06-11 13:34:54

編程編程階段

2023-05-30 09:59:38

2022-06-28 05:54:10

機器身份網絡攻擊網絡安全

2023-01-24 17:03:13

強化學習算法機器人人工智能

2020-06-03 10:58:49

機器學習工具人工智能

2022-04-13 10:25:08

基礎設施IT 團隊

2020-07-27 05:40:13

Python數據分析開發

2024-10-10 15:24:50

JSONPython

2021-09-22 12:45:47

Python數據分析

2022-08-02 12:03:26

Python可觀測性軟件開發

2012-04-24 09:49:13

手機購物

2021-11-22 14:53:03

IT管理IT指標IT領導者

2022-05-23 11:13:02

Python工具

2020-10-10 16:07:16

物聯網設備物聯網IOT

2025-02-10 00:00:00

技巧JavaStreams

2024-10-14 16:37:25

2019-11-25 14:24:24

機器學習算法數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片久久久 | 免费在线观看91 | 美女黄网站 | 欧美一级片免费看 | 亚洲精品久久久一区二区三区 | 国产精品久久av | 亚洲看片| 91中文在线观看 | 国产精品高清在线 | 久久国产一区 | 亚洲午夜网 | 亚洲精品成人 | 成人 在线 | 亚洲国产精品久久 | 中文字幕亚洲精品 | 国产视频一区二区在线观看 | 亚洲九九精品 | av喷水| 国产成人免费观看 | 亚洲免费网 | 欧美日韩专区 | 亚洲国产欧美在线人成 | 日本激情视频在线播放 | 国产精品久久久久久婷婷天堂 | 国产精品久久久久国产a级 欧美日韩国产免费 | 欧美午夜影院 | 毛片视频免费 | 黄色成人亚洲 | 国产免费a | 亚洲欧美成人 | 精国产品一区二区三区四季综 | 99视频入口 | 超碰日韩 | 亚洲国产精品福利 | 精品伊人 | 99精品久久 | 日韩精品一区二区三区在线观看 | 欧美在线a| 一区二区三区在线 | 国产精品色av | 免费99精品国产自在在线 |